<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>237244</bug_id>
          
          <creation_ts>2022-02-27 02:18:30 -0800</creation_ts>
          <short_desc>Force -webkit-user-modify effective style to readonly for inert nodes</short_desc>
          <delta_ts>2022-02-27 16:55:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237243</dependson>
          <blocked>165279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Nguyen (:ntim)">ntim</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1846396</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-27 02:18:30 -0800</bug_when>
    <thetext>This disallows programmatic edition of contenteditable inert nodes. Edition via user-input is already prevented by forcing pointer-events style to none.

This behaviour also matches Chromium &amp; Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846397</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-27 02:18:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/89524668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846398</commentid>
    <comment_count>2</comment_count>
      <attachid>453331</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-27 02:43:23 -0800</bug_when>
    <thetext>Created attachment 453331
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846433</commentid>
    <comment_count>3</comment_count>
      <attachid>453331</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-27 08:11:35 -0800</bug_when>
    <thetext>Comment on attachment 453331
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=453331&amp;action=review

&gt; Source/WebCore/rendering/style/RenderStyle.h:617
&gt; +    UserModify effectiveUserModify() const { return effectiveInert() ? UserModify::ReadOnly : userModify(); }

Maybe these &quot;effective&quot; functions should be in a separate paragraph, rather than being interspersed with the getters for the actual stored values?

Some day we might even automatically generate or do something else like that for the stored values, and the effective family of functions seems like a different thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846440</commentid>
    <comment_count>4</comment_count>
      <attachid>453331</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-27 08:34:38 -0800</bug_when>
    <thetext>Comment on attachment 453331
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=453331&amp;action=review

&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:617
&gt;&gt; +    UserModify effectiveUserModify() const { return effectiveInert() ? UserModify::ReadOnly : userModify(); }
&gt; 
&gt; Maybe these &quot;effective&quot; functions should be in a separate paragraph, rather than being interspersed with the getters for the actual stored values?
&gt; 
&gt; Some day we might even automatically generate or do something else like that for the stored values, and the effective family of functions seems like a different thing.

Right now, this just follows the long tail of effectiveAppearance/effectiveDisplay/effectiveZoom/effectiveTouchActions/etc. which also have their getter live next to the actual value. I find that slightly better since someone who might look at userModify() or such, will tell themselves: &quot;maybe effectiveUserModify() is the thing I want to use&quot;.

This area has some potential for clean up in general, in some places, we use the prefix &quot;used&quot; e.g. usedZindex/usedTransformStyle3D/usedFloat/usedClear/etc. The line is so thin between &quot;used&quot; and &quot;effective&quot; that even Blink consistently uses &quot;used&quot;.

There is also &quot;resolved&quot; for some flex/grid related stuff, but that&apos;s slightly different since they don&apos;t necessarily refer directly to CSS properties.

I do think it&apos;s worth having discussions with the relevant stakeholders about these things, since this repeating pattern might be an potential area for automation/refactoring, etc. but this bug is probably not the right place to act :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846441</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-27 08:39:44 -0800</bug_when>
    <thetext>Committed r290564 (247842@main): &lt;https://commits.webkit.org/247842@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453331.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846442</commentid>
    <comment_count>6</comment_count>
      <attachid>453331</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-27 08:40:42 -0800</bug_when>
    <thetext>Comment on attachment 453331
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=453331&amp;action=review

&gt;&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:617
&gt;&gt;&gt; +    UserModify effectiveUserModify() const { return effectiveInert() ? UserModify::ReadOnly : userModify(); }
&gt;&gt; 
&gt;&gt; Maybe these &quot;effective&quot; functions should be in a separate paragraph, rather than being interspersed with the getters for the actual stored values?
&gt;&gt; 
&gt;&gt; Some day we might even automatically generate or do something else like that for the stored values, and the effective family of functions seems like a different thing.
&gt; 
&gt; Right now, this just follows the long tail of effectiveAppearance/effectiveDisplay/effectiveZoom/effectiveTouchActions/etc. which also have their getter live next to the actual value. I find that slightly better since someone who might look at userModify() or such, will tell themselves: &quot;maybe effectiveUserModify() is the thing I want to use&quot;.
&gt; 
&gt; This area has some potential for clean up in general, in some places, we use the prefix &quot;used&quot; e.g. usedZindex/usedTransformStyle3D/usedFloat/usedClear/etc. The line is so thin between &quot;used&quot; and &quot;effective&quot; that even Blink consistently uses &quot;used&quot;.
&gt; 
&gt; There is also &quot;resolved&quot; for some flex/grid related stuff, but that&apos;s slightly different since they don&apos;t necessarily refer directly to CSS properties.
&gt; 
&gt; I do think it&apos;s worth having discussions with the relevant stakeholders about these things, since this repeating pattern might be an potential area for automation/refactoring, etc. but this bug is probably not the right place to act :)

Sure, I am suggesting moving effectiveAppearance/effectiveDisplay/effectiveZoom/effectiveTouchActions/etc. Was that unclear?

Adding one more effectiveXXX function does seem like a good time to move the others; doesn’t seem like an excessive thing to do. If you prefer not to do it while adding this item, that’s OK, but it is what I was suggesting.

I’m not sure why you’re expanding the conversation to those other cleanup ideas, though, as good as they might be. I wanted to suggest one step directly related to what you are doing, adding another effectiveXXX so that now there are more than ever before. It helped me notice what seems to be an increasingly poor pattern of interspersing these.; I agree there are lots of other things that can be done to this class.

We have had great success doing these things incrementally in WebKit in the past, and I hope to continue that tradition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846490</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2022-02-27 14:09:27 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; Comment on attachment 453331 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453331&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/rendering/style/RenderStyle.h:617
&gt; &gt;&gt;&gt; +    UserModify effectiveUserModify() const { return effectiveInert() ? UserModify::ReadOnly : userModify(); }
&gt; &gt;&gt; 
&gt; &gt;&gt; Maybe these &quot;effective&quot; functions should be in a separate paragraph, rather than being interspersed with the getters for the actual stored values?
&gt; &gt;&gt; 
&gt; &gt;&gt; Some day we might even automatically generate or do something else like that for the stored values, and the effective family of functions seems like a different thing.
&gt; &gt; 
&gt; &gt; Right now, this just follows the long tail of effectiveAppearance/effectiveDisplay/effectiveZoom/effectiveTouchActions/etc. which also have their getter live next to the actual value. I find that slightly better since someone who might look at userModify() or such, will tell themselves: &quot;maybe effectiveUserModify() is the thing I want to use&quot;.
&gt; &gt; 
&gt; &gt; This area has some potential for clean up in general, in some places, we use the prefix &quot;used&quot; e.g. usedZindex/usedTransformStyle3D/usedFloat/usedClear/etc. The line is so thin between &quot;used&quot; and &quot;effective&quot; that even Blink consistently uses &quot;used&quot;.
&gt; &gt; 
&gt; &gt; There is also &quot;resolved&quot; for some flex/grid related stuff, but that&apos;s slightly different since they don&apos;t necessarily refer directly to CSS properties.
&gt; &gt; 
&gt; &gt; I do think it&apos;s worth having discussions with the relevant stakeholders about these things, since this repeating pattern might be an potential area for automation/refactoring, etc. but this bug is probably not the right place to act :)
&gt; 
&gt; Sure, I am suggesting moving
&gt; effectiveAppearance/effectiveDisplay/effectiveZoom/effectiveTouchActions/etc.
&gt; Was that unclear?

I don&apos;t necessarily agree that&apos;s better to have all effective* properties in one place. The first thing you come across when searching code related to a certain property are the non-effective versions. Currently, when you consult the code, you see right away that there is an effective version of it, which makes you immediately question which version you should use. If all effective versions were all in one block, away from the non-effective versions, you wouldn&apos;t necessarily question that, and may end up using the wrong version.

Things would probably be different if all properties had an effective version, but that&apos;s not the case atm.

I do think that relying on where the methods are placed in the header file for good understanding of the code isn&apos;t great, and this is why I think a wider conversation makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846507</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-27 16:55:55 -0800</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #7)
&gt; I don&apos;t necessarily agree that&apos;s better to have all effective* properties in
&gt; one place.

OK.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453331</attachid>
            <date>2022-02-27 02:43:23 -0800</date>
            <delta_ts>2022-02-27 08:40:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237244-20220227114322.patch</filename>
            <type>text/plain</type>
            <size>10049</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU5OWIwMzI3Njk4ZWEz
ZjliZTBkZTkxYTk1ZmY2ODIxNmY4YTk3NC4uY2RmOWUzNGJiZDVhZWY2ZWU5MjJhNGZlNGMyOWM2
MGFhNTQxNzU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAyLTI3ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgRm9yY2UgLXdlYmtpdC11c2VyLW1v
ZGlmeSB1c2VkIHN0eWxlIHRvIHJlYWRvbmx5IGZvciBpbmVydCBub2RlcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQ0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBkaXNhbGxvd3MgcHJvZ3Jh
bW1hdGljIGVkaXRpb24gb2YgY29udGVudGVkaXRhYmxlIGluZXJ0IG5vZGVzLiBFZGl0aW9uIHZp
YSB1c2VyLWlucHV0IGlzCisgICAgICAgIGFscmVhZHkgcHJldmVudGVkIGJ5IGZvcmNpbmcgcG9p
bnRlci1ldmVudHMgc3R5bGUgdG8gbm9uZS4KKworICAgICAgICBXZSBjcmVhdGUgYSBzZXBlcmF0
ZSBlZmZlY3RpdmVVc2VyTW9kaWZ5LCBzaW1pbGFyIHRvIGVmZmVjdGl2ZVVzZXJTZWxlY3QvZWZm
ZWN0aXZlUG9pbnRlckV2ZW50cywKKyAgICAgICAgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGNvbXB1
dGVkIHN0eWxlLgorCisgICAgICAgIFRoaXMgYmVoYXZpb3VyIGFsc28gbWF0Y2hlcyBCbGluayAm
IEdlY2tvLgorCisgICAgICAgIFRlc3Q6IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aW5lcnQvaW5lcnQtYW5kLWNvbnRlbnRlZGl0YWJsZS50ZW50YXRpdmUuaHRtbAorCisgICAgICAg
ICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZUVkaXRhYmlsaXR5RnJv
bUNvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21t
YW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZDo6cmFu
Z2VGb3JQYXJhZ3JhcGhTcGxpdHRpbmdUZXh0Tm9kZXNJZk5lZWRlZCk6CisgICAgICAgICogZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogcmVuZGVyaW5nL0V2ZW50
UmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UmVnaW9uOjp1bml0ZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRWxlbWVudDo6c3R5bGVXaWxsQ2hhbmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjplZmZlY3RpdmVV
c2VyTW9kaWZ5IGNvbnN0KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6
CisKIDIwMjItMDItMjYgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgTm9kZTo6ZGVwcmVjYXRlZElzSW5lcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAyNzY1OWIw
ZDMyNTU4OTAzZmE0YzBjYWEwMjcxZjMxOGIzOThjNzhkLi5iMWFmNDVmN2VjMmYxMGQyZTBkMjRj
YzgwYzU3MGE2MWMzZGQ5MWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC03NzAsNyArNzcwLDcgQEAg
c3RhdGljIE5vZGU6OkVkaXRhYmlsaXR5IGNvbXB1dGVFZGl0YWJpbGl0eUZyb21Db21wdXRlZFN0
eWxlKGNvbnN0IE5vZGUmIHN0YXJ0Tm8KICAgICAgICAgaWYgKHBhZ2VJc0VkaXRhYmxlID09IFBh
Z2VJc0VkaXRhYmxlOjpZZXMpCiAgICAgICAgICAgICByZXR1cm4gTm9kZTo6RWRpdGFiaWxpdHk6
OkNhbkVkaXRSaWNobHk7CiAKLSAgICAgICAgc3dpdGNoIChzdHlsZS0+dXNlck1vZGlmeSgpKSB7
CisgICAgICAgIHN3aXRjaCAoc3R5bGUtPmVmZmVjdGl2ZVVzZXJNb2RpZnkoKSkgewogICAgICAg
ICBjYXNlIFVzZXJNb2RpZnk6OlJlYWRPbmx5OgogICAgICAgICAgICAgcmV0dXJuIE5vZGU6OkVk
aXRhYmlsaXR5OjpSZWFkT25seTsKICAgICAgICAgY2FzZSBVc2VyTW9kaWZ5OjpSZWFkV3JpdGU6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5QmxvY2tFbGVtZW50Q29tbWFu
ZC5jcHAKaW5kZXggY2Y1MTlkMDgxOWQxNzM0OWI4ZTczMjBmZmI2MGMxZTIxOTlhZmJhNC4uN2Y5
MzUyOTFjNGI5MzgyY2Y5ZWVkZjg0OWQxYjM2YWI3MGQwYzU5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcApAQCAtMjM4LDcg
KzIzOCw3IEBAIHZvaWQgQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kOjpyYW5nZUZvclBhcmFncmFw
aFNwbGl0dGluZ1RleHROb2Rlc0lmTmVlZGVkKGNvbnN0CiAgICAgICAgIHVuc2lnbmVkIGVuZE9m
ZnNldCA9IGVuZC5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKTsKICAgICAgICAgYm9vbCBwcmVzZXJ2
ZXNOZXdMaW5lID0gZW5kU3R5bGUtPnByZXNlcnZlTmV3bGluZSgpOwogICAgICAgICBib29sIGNv
bGxhcHNlV2hpdGVTcGFjZSA9IGVuZFN0eWxlLT5jb2xsYXBzZVdoaXRlU3BhY2UoKTsKLSAgICAg
ICAgYXV0byB1c2VyTW9kaWZ5ID0gZW5kU3R5bGUtPnVzZXJNb2RpZnkoKTsKKyAgICAgICAgYXV0
byB1c2VyTW9kaWZ5ID0gZW5kU3R5bGUtPmVmZmVjdGl2ZVVzZXJNb2RpZnkoKTsKICAgICAgICAg
ZW5kU3R5bGUgPSBudWxscHRyOwogCiAgICAgICAgIGlmIChwcmVzZXJ2ZXNOZXdMaW5lICYmIHN0
YXJ0ID09IGVuZCAmJiBlbmRPZmZzZXQgPCBlbmQuY29udGFpbmVyTm9kZSgpLT5sZW5ndGgoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmNwcAppbmRleCBkYjA2ZDA2MDRhNjczOTEzYjY3MmNmNzA4NTljMDE5OGZhNGNkNTQ1Li5mYzM2
YjYzNGZjMGYyOTg3YTgyNzg3YTc2OWNiYjM3ZjUwZDEzMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtMTEyMSw4ICsx
MTIxLDggQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICAvLyBXZSBjYW4gc2tpcCBtYXRjaGluZyB0aGUgc3R5bGUgaWYg
dGhlIHNlbGVjdGlvbiBpcyBwbGFpbiB0ZXh0LgotICAgIGlmICgoc2VsZWN0aW9uLnN0YXJ0KCku
ZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNh
dGVkTm9kZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLnVzZXJNb2RpZnkoKSA9PSBVc2VyTW9kaWZ5
OjpSZWFkV3JpdGVQbGFpbnRleHRPbmx5KQotICAgICAgICAmJiAoc2VsZWN0aW9uLmVuZCgpLmRl
cHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkgJiYgc2VsZWN0aW9uLmVuZCgpLmRlcHJlY2F0ZWRO
b2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCkudXNlck1vZGlmeSgpID09IFVzZXJNb2RpZnk6OlJl
YWRXcml0ZVBsYWludGV4dE9ubHkpKQorICAgIGlmICgoc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVj
YXRlZE5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpLT5zdHlsZSgpLmVmZmVjdGl2ZVVzZXJNb2RpZnkoKSA9PSBVc2VyTW9k
aWZ5OjpSZWFkV3JpdGVQbGFpbnRleHRPbmx5KQorICAgICAgICAmJiAoc2VsZWN0aW9uLmVuZCgp
LmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCkgJiYgc2VsZWN0aW9uLmVuZCgpLmRlcHJlY2F0
ZWROb2RlKCktPnJlbmRlcmVyKCktPnN0eWxlKCkuZWZmZWN0aXZlVXNlck1vZGlmeSgpID09IFVz
ZXJNb2RpZnk6OlJlYWRXcml0ZVBsYWludGV4dE9ubHkpKQogICAgICAgICBtX21hdGNoU3R5bGUg
PSBmYWxzZTsKICAgICAKICAgICBpZiAobV9tYXRjaFN0eWxlKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V2ZW50UmVnaW9uLmNwcAppbmRleCA3YjlkY2JjYzc1NjViOWE2YTMzYzRhYWI5ZGNk
YWJhMmVjYjAxZWMzLi5kNmRkNDQ2OTA4NGM1YmNhNDkyMmJiMDBmNjkzZTNlOWIwNWY3ZjA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXZlbnRSZWdpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FdmVudFJlZ2lvbi5jcHAKQEAgLTEzMiw3ICsxMzIs
NyBAQCB2b2lkIEV2ZW50UmVnaW9uOjp1bml0ZShjb25zdCBSZWdpb24mIHJlZ2lvbiwgY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlLCBib29sIG92ZQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRURJVEFC
TEVfUkVHSU9OKQotICAgIGlmIChtX2VkaXRhYmxlUmVnaW9uICYmIChvdmVycmlkZVVzZXJNb2Rp
ZnlJc0VkaXRhYmxlIHx8IHN0eWxlLnVzZXJNb2RpZnkoKSAhPSBVc2VyTW9kaWZ5OjpSZWFkT25s
eSkpIHsKKyAgICBpZiAobV9lZGl0YWJsZVJlZ2lvbiAmJiAob3ZlcnJpZGVVc2VyTW9kaWZ5SXNF
ZGl0YWJsZSB8fCBzdHlsZS5lZmZlY3RpdmVVc2VyTW9kaWZ5KCkgIT0gVXNlck1vZGlmeTo6UmVh
ZE9ubHkpKSB7CiAgICAgICAgIG1fZWRpdGFibGVSZWdpb24tPnVuaXRlKHJlZ2lvbik7CiAgICAg
ICAgIExPR19XSVRIX1NUUkVBTShFdmVudFJlZ2lvbnMsIHN0cmVhbSA8PCAiIHVuaXRpbmcgZWRp
dGFibGUgcmVnaW9uIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCmluZGV4IDEwOGMwODAwOTkwNzFlMjNjNjJjYmM1MjA1OWQ4ZDk4NGM2MWRkOWIu
LjVlYWQyNGZiMDM2NTE0MmViOTFkMDQ1OTA2MDBmODM2MTM2ZmU1ZDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTg1Myw4ICs4NTMsOCBAQCB2b2lk
IFJlbmRlckVsZW1lbnQ6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUmIG5ldwogICAgICAgICAgICAgaWYgKG1fc3R5bGUuZXZlbnRMaXN0ZW5l
clJlZ2lvblR5cGVzKCkgIT0gbmV3U3R5bGUuZXZlbnRMaXN0ZW5lclJlZ2lvblR5cGVzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjaWYgRU5BQkxFKEVESVRBQkxFX1JFR0lPTikK
LSAgICAgICAgICAgIGJvb2wgd2FzRWRpdGFibGUgPSBtX3N0eWxlLnVzZXJNb2RpZnkoKSAhPSBV
c2VyTW9kaWZ5OjpSZWFkT25seTsKLSAgICAgICAgICAgIGJvb2wgaXNFZGl0YWJsZSA9IG5ld1N0
eWxlLnVzZXJNb2RpZnkoKSAhPSBVc2VyTW9kaWZ5OjpSZWFkT25seTsKKyAgICAgICAgICAgIGJv
b2wgd2FzRWRpdGFibGUgPSBtX3N0eWxlLmVmZmVjdGl2ZVVzZXJNb2RpZnkoKSAhPSBVc2VyTW9k
aWZ5OjpSZWFkT25seTsKKyAgICAgICAgICAgIGJvb2wgaXNFZGl0YWJsZSA9IG5ld1N0eWxlLmVm
ZmVjdGl2ZVVzZXJNb2RpZnkoKSAhPSBVc2VyTW9kaWZ5OjpSZWFkT25seTsKICAgICAgICAgICAg
IGlmICh3YXNFZGl0YWJsZSAhPSBpc0VkaXRhYmxlKQogICAgICAgICAgICAgICAgIHJldHVybiBw
YWdlKCkuc2hvdWxkQnVpbGRFZGl0YWJsZVJlZ2lvbigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4IGY5NDUxYTIzYWRkYzgzYWJm
NjI4NGFmODIzYmI3NTk5NDdmNzkzZTUuLjA5MDU4Zjc5Y2U3MTc1NTAzNGZkYTg0OGQ0MmFjNmE5
OTJkNDRlNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCkBAIC02MTQsNiArNjE0LDcgQEAgcHVibGljOgogICAgIGludCBtYXJxdWVlTG9vcENvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+bWFycXVlZS0+bG9vcHM7
IH0KICAgICBNYXJxdWVlQmVoYXZpb3IgbWFycXVlZUJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4g
c3RhdGljX2Nhc3Q8TWFycXVlZUJlaGF2aW9yPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5tYXJx
dWVlLT5iZWhhdmlvcik7IH0KICAgICBNYXJxdWVlRGlyZWN0aW9uIG1hcnF1ZWVEaXJlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXJxdWVlRGlyZWN0aW9uPihtX3JhcmVOb25J
bmhlcml0ZWREYXRhLT5tYXJxdWVlLT5kaXJlY3Rpb24pOyB9CisgICAgVXNlck1vZGlmeSBlZmZl
Y3RpdmVVc2VyTW9kaWZ5KCkgY29uc3QgeyByZXR1cm4gZWZmZWN0aXZlSW5lcnQoKSA/IFVzZXJN
b2RpZnk6OlJlYWRPbmx5IDogdXNlck1vZGlmeSgpOyB9CiAgICAgVXNlck1vZGlmeSB1c2VyTW9k
aWZ5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VXNlck1vZGlmeT4obV9yYXJlSW5oZXJp
dGVkRGF0YS0+dXNlck1vZGlmeSk7IH0KICAgICBVc2VyRHJhZyB1c2VyRHJhZygpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFVzZXJEcmFnPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT51c2Vy
RHJhZyk7IH0KICAgICBVc2VyU2VsZWN0IGVmZmVjdGl2ZVVzZXJTZWxlY3QoKSBjb25zdCB7IHJl
dHVybiBlZmZlY3RpdmVJbmVydCgpID8gVXNlclNlbGVjdDo6Tm9uZSA6IHVzZXJTZWxlY3QoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IGFiNDJh
ZDg0ODdjMmU2YzMwZTExNzA4ZDllNTUwOGYwMDFjZmI3N2EuLmVlOWNiMWE5Y2MyNjcyZTY4MjUz
ODFlMDVmOTk0ODYzYWNiOGVmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5jcHAKQEAgLTI2NSw3ICsyNjUsNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2
ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQu
c2V0TWF5SGF2ZUVsZW1lbnRzV2l0aE5vbkF1dG9Ub3VjaEFjdGlvbigpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKEVESVRBQkxFX1JFR0lPTikKLSAgICBpZiAodXBkYXRlLnN0eWxlLT51c2VyTW9kaWZ5
KCkgIT0gVXNlck1vZGlmeTo6UmVhZE9ubHkpCisgICAgaWYgKHVwZGF0ZS5zdHlsZS0+ZWZmZWN0
aXZlVXNlck1vZGlmeSgpICE9IFVzZXJNb2RpZnk6OlJlYWRPbmx5KQogICAgICAgICBtX2RvY3Vt
ZW50LnNldE1heUhhdmVFZGl0YWJsZUVsZW1lbnRzKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy9DaGFuZ2VMb2cKaW5kZXggMzg3NTEzM2MwNzIzZmUyMTM2ZTFmZTI1YzA4YTNlMjJiZDI5
ZDJhZS4uYzBiOTQ2MzI2ZDlkMTBkOWM3YjkzZTFkYTljZmZmZGI5ZDk0OTkwYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDItMjcgIFRpbSBO
Z3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KKworICAgICAgICBGb3JjZSAtd2Via2l0LXVzZXItbW9k
aWZ5IHVzZWQgc3R5bGUgdG8gcmVhZG9ubHkgZm9yIGluZXJ0IG5vZGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzcyNDQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGRpc2FsbG93cyBwcm9ncmFt
bWF0aWMgZWRpdGlvbiBvZiBjb250ZW50ZWRpdGFibGUgaW5lcnQgbm9kZXMuIEVkaXRpb24gdmlh
IHVzZXItaW5wdXQgaXMKKyAgICAgICAgYWxyZWFkeSBwcmV2ZW50ZWQgYnkgZm9yY2luZyBwb2lu
dGVyLWV2ZW50cyBzdHlsZSB0byBub25lLgorCisgICAgICAgIFdlIGNyZWF0ZSBhIHNlcGVyYXRl
IGVmZmVjdGl2ZVVzZXJNb2RpZnksIHNpbWlsYXIgdG8gZWZmZWN0aXZlVXNlclNlbGVjdC9lZmZl
Y3RpdmVQb2ludGVyRXZlbnRzLAorICAgICAgICB0byBhdm9pZCBjaGFuZ2luZyB0aGUgY29tcHV0
ZWQgc3R5bGUuCisKKyAgICAgICAgVGhpcyBiZWhhdmlvdXIgYWxzbyBtYXRjaGVzIEJsaW5rICYg
R2Vja28uCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaW5lcnQvaW5lcnQtYW5kLWNv
bnRlbnRlZGl0YWJsZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgorCiAyMDIyLTAyLTI3ICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmUtaW1wb3J0IGluZXJ0IGFuZCA8
ZGlhbG9nPiBXUFQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaW5lcnQvaW5lcnQtYW5kLWNvbnRlbnRlZGl0YWJsZS50ZW50YXRpdmUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9p
bmVydC9pbmVydC1hbmQtY29udGVudGVkaXRhYmxlLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKaW5k
ZXggNTZkYzRhZjFhNWMzZjBlNzFjMzJkNGUyYmMzMTAwNmFhNWUyMWIwMC4uOTIyNWJhOGIxZGUy
NjllMzQ4MzBmOGQ1M2MzZDg1YWNlMGY2ZmQ2YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9pbmVydC9pbmVydC1hbmQtY29udGVudGVkaXRh
YmxlLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9pbmVydC9pbmVydC1hbmQtY29udGVudGVkaXRhYmxlLnRlbnRh
dGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsMTEgKzEsMTQgQEAKIAotRkFJTCBleGVjQ29tbWFuZCBz
aG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzc2VydF9lcXVhbHM6IFtmYWxzZSx0cnVlLGZh
bHNlLGZhbHNlXSBhdCBpbmRleCAxIGV4cGVjdGVkIGZhbHNlIGJ1dCBnb3QgdHJ1ZQotRkFJTCBU
aGUgcmVzdWx0aW5nIHRleHRDb250ZW50IHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBhc3NlcnRf
ZXF1YWxzOiBbInt0YXJnZXR9Iiwie30iLCJ7dGFyZ2V0fSIsInt0YXJnZXR9Il0gYXQgaW5kZXgg
MSBleHBlY3RlZCAie3RhcmdldH0iIGJ1dCBnb3QgInt9IgorUEFTUyBleGVjQ29tbWFuZCBzaG91
bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlCitQQVNTIFRoZSByZXN1bHRpbmcgdGV4dENvbnRlbnQg
c2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlCit7Cit0YXJnZXQKKworfQogewogdGFyZ2V0CiAKIH0K
LXt9CiB7CiB0YXJnZXQKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>