<?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>229815</bug_id>
          
          <creation_ts>2021-09-02 10:10:33 -0700</creation_ts>
          <short_desc>AX: findModalNodes() and currentModalNode() should include modal &lt;dialog&gt;</short_desc>
          <delta_ts>2021-09-03 14:08:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>84635</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Nguyen (:ntim)">ntim</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1789758</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-09-02 10:10:33 -0700</bug_when>
    <thetext>https://webkit-search.igalia.com/webkit/rev/367ea6f7763d697109fda42511484000a23de506/Source/WebCore/accessibility/AXObjectCache.cpp#253</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789759</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-02 10:11:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/82680992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789817</commentid>
    <comment_count>2</comment_count>
      <attachid>437179</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-09-02 12:04:21 -0700</bug_when>
    <thetext>Created attachment 437179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789839</commentid>
    <comment_count>3</comment_count>
      <attachid>437179</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-09-02 12:33:19 -0700</bug_when>
    <thetext>Comment on attachment 437179
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        * accessibility/AXObjectCache.cpp:

can you add a new test for this case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789840</commentid>
    <comment_count>4</comment_count>
      <attachid>437179</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-09-02 12:34:43 -0700</bug_when>
    <thetext>Comment on attachment 437179
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:259
&gt; +        bool isAriaModal = !equalLettersIgnoringASCIICase(element-&gt;attributeWithoutSynchronization(aria_modalAttr), &quot;true&quot;);

this should change to 

!equalLetter -&gt; equalLetter

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:261
&gt; +        if ((hasDialogRole &amp;&amp; isAriaModal) || (is&lt;HTMLDialogElement&gt;(element) &amp;&amp; downcast&lt;HTMLDialogElement&gt;(element)-&gt;isModal()))

is there any provision for aria-model=false on &lt;dialog modal&gt; to override the native status?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789849</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-09-02 12:54:31 -0700</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #2)
&gt; Created attachment 437179 [details]
&gt; Patch

--- a/Source/WebCore/accessibility/AXObjectCache.cpp
+++ a/Source/WebCore/accessibility/AXObjectCache.cpp

+        bool isAriaModal = !equalLettersIgnoringASCIICase(element-&gt;attributeWithoutSynchronization(aria_modalAttr), &quot;true&quot;);

Should be :

+        bool isAriaModal = equalLettersIgnoringASCIICase(element-&gt;attributeWithoutSynchronization(aria_modalAttr), &quot;true&quot;);

Could you add a helper function, bool isModalElement, that does:

+        bool hasDialogRole = nodeHasRole(element, &quot;dialog&quot;) || nodeHasRole(element, &quot;alertdialog&quot;);
+        bool isAriaModal = equalLettersIgnoringASCIICase(element-&gt;attributeWithoutSynchronization(aria_modalAttr), &quot;true&quot;);

+        return (hasDialogRole &amp;&amp; isAriaModal) || (is&lt;HTMLDialogElement&gt;(element) &amp;&amp; downcast&lt;HTMLDialogElement&gt;(element)-&gt;isModal());

or equivalent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789854</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-09-02 13:03:07 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #4)
&gt; Comment on attachment 437179 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=437179&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:259
&gt; &gt; +        bool isAriaModal = !equalLettersIgnoringASCIICase(element-&gt;attributeWithoutSynchronization(aria_modalAttr), &quot;true&quot;);
&gt; 
&gt; this should change to 
&gt; 
&gt; !equalLetter -&gt; equalLetter

Good catch, thanks!

&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:261
&gt; &gt; +        if ((hasDialogRole &amp;&amp; isAriaModal) || (is&lt;HTMLDialogElement&gt;(element) &amp;&amp; downcast&lt;HTMLDialogElement&gt;(element)-&gt;isModal()))
&gt; 
&gt; is there any provision for aria-model=false on &lt;dialog modal&gt; to override
&gt; the native status?

dialog.showModal() will make the content behind inert and make only the dialog interactive per the HTML spec. 

From: https://www.w3.org/TR/wai-aria-practices-1.1/examples/dialog-modal/dialog.html

&gt; Applying the aria-modal property to the dialog element replaces the technique of using aria-hidden on the background for informing assistive technologies that content outside a dialog is inert.

So no, aria-modal=false should not have an effect on this, since the content behind will be inert either way, according to the HTML spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790201</commentid>
    <comment_count>7</comment_count>
      <attachid>437278</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-09-03 09:30:10 -0700</bug_when>
    <thetext>Created attachment 437278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790213</commentid>
    <comment_count>8</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2021-09-03 09:45:38 -0700</bug_when>
    <thetext>&gt; is there any provision for aria-model=false on &lt;dialog modal&gt; to override
&gt; the native status?

In general, equivalent host language attributes &quot;win&quot;, but ARIA roles always &quot;win.&quot; There&apos;s a little ambiguity in this case, since the `is modal` flag of the dialog API is not an attribute, but in general, I would not expect `aria-modal` to have any effect on the dialog element.

There&apos;s more detail about conflict resolution in the ARIA spec, and I&apos;ll file an ARIA issue about the ambiguity.
https://w3c.github.io/aria/#host_general_conflict</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790218</commentid>
    <comment_count>9</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2021-09-03 10:04:05 -0700</bug_when>
    <thetext>Filed ARIA 1610 https://github.com/w3c/aria/issues/1610</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790245</commentid>
    <comment_count>10</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-09-03 10:52:37 -0700</bug_when>
    <thetext>(In reply to Tim Nguyen (:ntim) from comment #7)
&gt; Created attachment 437278 [details]
&gt; Patch

--- a/LayoutTests/accessibility/dialog-showModal.html
+++ a/LayoutTests/accessibility/dialog-showModal.html

+            window.okButton = accessibilityController.accessibleElementById(&quot;ok&quot;);
+            shouldBeFalse(&quot;okButton.isIgnored&quot;);

This should be false when the dialog is modal or not because it is part of the dialog. Why are we checking this only if it is not modal? Perhaps it makes more sense to check whether an element int the background is not ignored, which you are already doing in backgroundAccessible.

Is it really a good idea that we convey that there is a modal dialog if it is aria-hidden or opacity 0?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790260</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-09-03 11:41:34 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #10)
&gt; (In reply to Tim Nguyen (:ntim) from comment #7)
&gt; &gt; Created attachment 437278 [details]
&gt; &gt; Patch
&gt; 
&gt; --- a/LayoutTests/accessibility/dialog-showModal.html
&gt; +++ a/LayoutTests/accessibility/dialog-showModal.html
&gt; 
&gt; +            window.okButton =
&gt; accessibilityController.accessibleElementById(&quot;ok&quot;);
&gt; +            shouldBeFalse(&quot;okButton.isIgnored&quot;);
&gt; 
&gt; This should be false when the dialog is modal or not because it is part of
&gt; the dialog. Why are we checking this only if it is not modal? Perhaps it
&gt; makes more sense to check whether an element int the background is not
&gt; ignored, which you are already doing in backgroundAccessible.
&gt; 
&gt; Is it really a good idea that we convey that there is a modal dialog if it
&gt; is aria-hidden or opacity 0?

Yes, because the content behind is rendered inert per-HTML spec, and there&apos;s also a backdrop behind blocking any interaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790352</commentid>
    <comment_count>12</comment_count>
      <attachid>437309</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-09-03 14:02:37 -0700</bug_when>
    <thetext>Created attachment 437309
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790360</commentid>
    <comment_count>13</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-09-03 14:08:00 -0700</bug_when>
    <thetext>Committed r282022 (241327@main): &lt;https://commits.webkit.org/241327@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437179</attachid>
            <date>2021-09-02 12:04:21 -0700</date>
            <delta_ts>2021-09-03 09:30:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229815-20210902210419.patch</filename>
            <type>text/plain</type>
            <size>3387</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU3ZThkYTYyYTdlZDhj
ZmM4N2QwNGZlNmQ3MTkxZWY0ZTM2YjkxZC4uN2Q1M2ZkNDk4YzM3MDY2NWY3NmY1ZWY4OTEwYjU0
MTg5NmYyMjdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA5LTAyICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGZpbmRNb2RhbE5vZGVzKCkg
YW5kIGN1cnJlbnRNb2RhbE5vZGUoKSBzaG91bGQgaW5jbHVkZSBtb2RhbCA8ZGlhbG9nPgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODE1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
ZmluZE1vZGFsTm9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Y3VycmVu
dE1vZGFsTm9kZSk6CisKIDIwMjEtMDgtMzEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBNYWtlIG5hbWluZyBtb3JlIGNvbnNpc3Rl
bnQgYWNyb3NzIExheW91dDo6UnVuIGFuZCBJbnRlZ3JhdGlvbjo6UnVuIHN0cnVjdHMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGYyNDUx
MTAyMDQwMDIzNmFjMDI3NmE4NTllNmJmZDdhZjA5OGUwYmEuLjY4ZDIzZjgyMzFiNTAzN2NjZmNm
OTY3MTk3ZmFiM2JmNDY4NTdhMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcApAQCAtNzQsNiArNzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiSFRNTEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1l
bnQuaCIKKyNpbmNsdWRlICJIVE1MRGlhbG9nRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFn
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TExhYmVsRWxlbWVudC5oIgpAQCAtMjUyLDE1ICsyNTMsMTMgQEAgQVhPYmplY3RDYWNoZTo6fkFY
T2JqZWN0Q2FjaGUoKQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZpbmRNb2RhbE5vZGVzKCkKIHsK
LSAgICAvLyBUcmF2ZXJzZSB0aGUgRE9NIHRyZWUgdG8gbG9vayBmb3IgdGhlIGFyaWEtbW9kYWw9
dHJ1ZSBub2Rlcy4KKyAgICAvLyBUcmF2ZXJzZSB0aGUgRE9NIHRyZWUgdG8gbG9vayBmb3IgdGhl
IGFyaWEtbW9kYWw9dHJ1ZSBub2RlcyBvciBtb2RhbCA8ZGlhbG9nPiBlbGVtZW50cy4KICAgICBm
b3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihkb2N1
bWVudCgpLnJvb3ROb2RlKCkpOyBlbGVtZW50OyBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6
bmV4dEluY2x1ZGluZ1BzZXVkbygqZWxlbWVudCkpIHsKLSAgICAgICAgLy8gTXVzdCBoYXZlIGRp
YWxvZyBvciBhbGVydGRpYWxvZyByb2xlCi0gICAgICAgIGlmICghbm9kZUhhc1JvbGUoZWxlbWVu
dCwgImRpYWxvZyIpICYmICFub2RlSGFzUm9sZShlbGVtZW50LCAiYWxlcnRkaWFsb2ciKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoIWVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKGVsZW1lbnQtPmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9tb2Rh
bEF0dHIpLCAidHJ1ZSIpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGJvb2wgaGFz
RGlhbG9nUm9sZSA9IG5vZGVIYXNSb2xlKGVsZW1lbnQsICJkaWFsb2ciKSB8fCBub2RlSGFzUm9s
ZShlbGVtZW50LCAiYWxlcnRkaWFsb2ciKTsKKyAgICAgICAgYm9vbCBpc0FyaWFNb2RhbCA9ICFl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShlbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0U3lu
Y2hyb25pemF0aW9uKGFyaWFfbW9kYWxBdHRyKSwgInRydWUiKTsKIAotICAgICAgICBtX21vZGFs
RWxlbWVudHNTZXQuYWRkKGVsZW1lbnQpOworICAgICAgICBpZiAoKGhhc0RpYWxvZ1JvbGUgJiYg
aXNBcmlhTW9kYWwpIHx8IChpczxIVE1MRGlhbG9nRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNh
c3Q8SFRNTERpYWxvZ0VsZW1lbnQ+KGVsZW1lbnQpLT5pc01vZGFsKCkpKQorICAgICAgICAgICAg
bV9tb2RhbEVsZW1lbnRzU2V0LmFkZChlbGVtZW50KTsKICAgICB9CiAKICAgICBtX21vZGFsTm9k
ZXNJbml0aWFsaXplZCA9IHRydWU7CkBAIC0yNjgsMTIgKzI2NywxOCBAQCB2b2lkIEFYT2JqZWN0
Q2FjaGU6OmZpbmRNb2RhbE5vZGVzKCkKIAogRWxlbWVudCogQVhPYmplY3RDYWNoZTo6Y3VycmVu
dE1vZGFsTm9kZSgpCiB7Ci0gICAgLy8gVGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgbm9kZXMgd2l0
aCBhcmlhLW1vZGFsPXRydWUgc2V0LgorICAgIC8vIFRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG1v
ZGFsIGRpYWxvZyBub2Rlcy4KICAgICAvLyBXZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBwaWNrIHRo
ZSBvbmUgd2Ugd2FudC4KICAgICBtX2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBudWxscHRyOwogICAg
IGlmIChtX21vZGFsRWxlbWVudHNTZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAorICAgIC8vIFBpY2sgdGhlIGRvY3VtZW50IGFjdGl2ZSBtb2RhbCA8ZGlhbG9nPiBlbGVt
ZW50IGlmIGl0IGV4aXN0cy4KKyAgICBpZiAoRWxlbWVudCogYWN0aXZlTW9kYWxEaWFsb2cgPSBk
b2N1bWVudCgpLmFjdGl2ZU1vZGFsRGlhbG9nKCkpIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kYWxF
bGVtZW50c1NldC5jb250YWlucyhhY3RpdmVNb2RhbERpYWxvZykpOworICAgICAgICByZXR1cm4g
YWN0aXZlTW9kYWxEaWFsb2c7CisgICAgfQorCiAgICAgLy8gSWYgYW55IG9mIHRoZSBtb2RhbCBu
b2RlcyBjb250YWlucyB0aGUga2V5Ym9hcmQgZm9jdXMsIHdlIHdhbnQgdG8gcGljayB0aGF0IG9u
ZS4KICAgICAvLyBJZiBub3QsIHdlIHdhbnQgdG8gcGljayB0aGUgbGFzdCB2aXNpYmxlIGRpYWxv
ZyBpbiB0aGUgRE9NLgogICAgIFJlZlB0cjxFbGVtZW50PiBmb2N1c2VkRWxlbWVudCA9IGRvY3Vt
ZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437278</attachid>
            <date>2021-09-03 09:30:10 -0700</date>
            <delta_ts>2021-09-03 14:02:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229815-20210903183009.patch</filename>
            <type>text/plain</type>
            <size>13010</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU3ZThkYTYyYTdlZDhj
ZmM4N2QwNGZlNmQ3MTkxZWY0ZTM2YjkxZC4uNDNjOGEwY2Y4ZGFmMTg1NjRmNDE5Zjc1MTMzZmZj
ZmE2ZGU3NGFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA5LTAzICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGZpbmRNb2RhbE5vZGVzKCkg
YW5kIGN1cnJlbnRNb2RhbE5vZGUoKSBzaG91bGQgaW5jbHVkZSBtb2RhbCA8ZGlhbG9nPgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODE1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogYWNjZXNz
aWJpbGl0eS9kaWFsb2ctc2hvd01vZGFsLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjppc01v
ZGFsRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmaW5k
TW9kYWxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRy
aWJ1dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlTW9k
YWxDaGFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorCiAy
MDIxLTA4LTMxICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtJbnRlZ3JhdGlvbl0gTWFrZSBuYW1pbmcgbW9yZSBjb25zaXN0ZW50IGFjcm9zcyBMYXlvdXQ6
OlJ1biBhbmQgSW50ZWdyYXRpb246OlJ1biBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMjQ1MTEwMjA0MDAyMzZhYzAyNzZh
ODU5ZTZiZmQ3YWYwOThlMGJhLi4wNzI4Y2NkZjAwYmUzYmRkMGE2OTBkZDViODlhODAwMzljZDcy
ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxB
cmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTERpYWxvZ0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIK
QEAgLTI1MCwxNyArMjUxLDIwIEBAIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkKICNl
bmRpZgogfQogCitib29sIEFYT2JqZWN0Q2FjaGU6OmlzTW9kYWxFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgYm9vbCBoYXNEaWFsb2dSb2xlID0gbm9kZUhhc1JvbGUoJmVs
ZW1lbnQsICJkaWFsb2ciKSB8fCBub2RlSGFzUm9sZSgmZWxlbWVudCwgImFsZXJ0ZGlhbG9nIik7
CisgICAgYm9vbCBpc0FyaWFNb2RhbCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVs
ZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX21vZGFsQXR0ciksICJ0
cnVlIik7CisKKyAgICByZXR1cm4gKGhhc0RpYWxvZ1JvbGUgJiYgaXNBcmlhTW9kYWwpIHx8IChp
czxIVE1MRGlhbG9nRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTERpYWxvZ0VsZW1l
bnQ+KGVsZW1lbnQpLmlzTW9kYWwoKSk7Cit9CisKIHZvaWQgQVhPYmplY3RDYWNoZTo6ZmluZE1v
ZGFsTm9kZXMoKQogewotICAgIC8vIFRyYXZlcnNlIHRoZSBET00gdHJlZSB0byBsb29rIGZvciB0
aGUgYXJpYS1tb2RhbD10cnVlIG5vZGVzLgorICAgIC8vIFRyYXZlcnNlIHRoZSBET00gdHJlZSB0
byBsb29rIGZvciB0aGUgYXJpYS1tb2RhbD10cnVlIG5vZGVzIG9yIG1vZGFsIDxkaWFsb2c+IGVs
ZW1lbnRzLgogICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0V2l0aGluKGRvY3VtZW50KCkucm9vdE5vZGUoKSk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNldWRvKCplbGVtZW50KSkgewotICAgICAgICAv
LyBNdXN0IGhhdmUgZGlhbG9nIG9yIGFsZXJ0ZGlhbG9nIHJvbGUKLSAgICAgICAgaWYgKCFub2Rl
SGFzUm9sZShlbGVtZW50LCAiZGlhbG9nIikgJiYgIW5vZGVIYXNSb2xlKGVsZW1lbnQsICJhbGVy
dGRpYWxvZyIpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhcmlhX21vZGFsQXR0ciksICJ0cnVlIikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBtX21vZGFsRWxlbWVudHNTZXQuYWRkKGVsZW1lbnQpOworICAgICAgICBpZiAoaXNN
b2RhbEVsZW1lbnQoKmVsZW1lbnQpKQorICAgICAgICAgICAgbV9tb2RhbEVsZW1lbnRzU2V0LmFk
ZChlbGVtZW50KTsKICAgICB9CiAKICAgICBtX21vZGFsTm9kZXNJbml0aWFsaXplZCA9IHRydWU7
CkBAIC0yNjgsMTIgKzI3MiwxOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZpbmRNb2RhbE5vZGVz
KCkKIAogRWxlbWVudCogQVhPYmplY3RDYWNoZTo6Y3VycmVudE1vZGFsTm9kZSgpCiB7Ci0gICAg
Ly8gVGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgbm9kZXMgd2l0aCBhcmlhLW1vZGFsPXRydWUgc2V0
LgorICAgIC8vIFRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG1vZGFsIGRpYWxvZyBub2Rlcy4KICAg
ICAvLyBXZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBwaWNrIHRoZSBvbmUgd2Ugd2FudC4KICAgICBt
X2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChtX21vZGFsRWxlbWVudHNT
ZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIC8vIFBpY2sgdGhl
IGRvY3VtZW50IGFjdGl2ZSBtb2RhbCA8ZGlhbG9nPiBlbGVtZW50IGlmIGl0IGV4aXN0cy4KKyAg
ICBpZiAoRWxlbWVudCogYWN0aXZlTW9kYWxEaWFsb2cgPSBkb2N1bWVudCgpLmFjdGl2ZU1vZGFs
RGlhbG9nKCkpIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kYWxFbGVtZW50c1NldC5jb250YWlucyhh
Y3RpdmVNb2RhbERpYWxvZykpOworICAgICAgICByZXR1cm4gYWN0aXZlTW9kYWxEaWFsb2c7Cisg
ICAgfQorCiAgICAgLy8gSWYgYW55IG9mIHRoZSBtb2RhbCBub2RlcyBjb250YWlucyB0aGUga2V5
Ym9hcmQgZm9jdXMsIHdlIHdhbnQgdG8gcGljayB0aGF0IG9uZS4KICAgICAvLyBJZiBub3QsIHdl
IHdhbnQgdG8gcGljayB0aGUgbGFzdCB2aXNpYmxlIGRpYWxvZyBpbiB0aGUgRE9NLgogICAgIFJl
ZlB0cjxFbGVtZW50PiBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQo
KTsKQEAgLTE4MDIsNiArMTgxMiwxMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJp
YnV0ZUNoYW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudAogICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IGlkQXR0cikKICAgICAgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKGdl
dChlbGVtZW50KSwgQVhPYmplY3RDYWNoZTo6QVhJZEF0dHJpYnV0ZUNoYW5nZWQpOwogI2VuZGlm
CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb3BlbkF0dHIgJiYgaXM8SFRNTERpYWxvZ0VsZW1l
bnQ+KCplbGVtZW50KSkgeworICAgICAgICBkZWZlck1vZGFsQ2hhbmdlKGVsZW1lbnQpOworICAg
ICAgICByZWNvbXB1dGVJc0lnbm9yZWQoZWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKKyAgICB9CisK
IAogICAgIGlmICghYXR0ck5hbWUubG9jYWxOYW1lKCkuc3RyaW5nKCkuc3RhcnRzV2l0aCgiYXJp
YS0iKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg0OSw3ICsxODY0LDcgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUsIEVsZW1lbnQKIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVNb2RhbENoYW5nZShFbGVt
ZW50JiBlbGVtZW50KQogewotICAgIGlmICghbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJkaWFsb2ci
KSAmJiAhbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJhbGVydGRpYWxvZyIpKQorICAgIGlmICghaXM8
SFRNTERpYWxvZ0VsZW1lbnQ+KGVsZW1lbnQpICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImRp
YWxvZyIpICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImFsZXJ0ZGlhbG9nIikpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCk7CkBA
IC0xODU3LDcgKzE4NzIsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdl
KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFtX21vZGFsTm9kZXNJbml0aWFsaXplZCkKICAg
ICAgICAgZmluZE1vZGFsTm9kZXMoKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9tb2Rh
bEF0dHIpLCAidHJ1ZSIpKSB7CisgICAgaWYgKGlzTW9kYWxFbGVtZW50KGVsZW1lbnQpKSB7CiAg
ICAgICAgIC8vIEFkZCB0aGUgbmV3bHkgbW9kaWZpZWQgbm9kZSB0byB0aGUgbW9kYWwgbm9kZXMg
c2V0LgogICAgICAgICAvLyBXZSB3aWxsIHJlY29tcHV0ZSB0aGUgY3VycmVudCB2YWxpZCBhcmlh
IG1vZGFsIG5vZGUgaW4gbW9kYWxOb2RlKCkgd2hlbiB0aGlzIG5vZGUgaXMgbm90IHZpc2libGUu
CiAgICAgICAgIG1fbW9kYWxFbGVtZW50c1NldC5hZGQoJmVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCAxZGNhNGNhNWY2ZjQwMDY3
YTZmYWQ0YTExZGI3Zjk4NDRjN2FhNmRiLi40YjYwN2JkNTc5ZjY1NWZiYTMyMjhjYjRlYzc0YmM5
ODFmMWQ1NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtNDcyLDcgKzQ3Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBcmlhRXhw
YW5kZWRDaGFuZ2UoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5n
ZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKIAotICAgIC8v
IGFyaWEtbW9kYWwgcmVsYXRlZAorICAgIC8vIGFyaWEtbW9kYWwgb3IgbW9kYWwgPGRpYWxvZz4g
cmVsYXRlZAorICAgIGJvb2wgaXNNb2RhbEVsZW1lbnQoRWxlbWVudCYpIGNvbnN0OwogICAgIHZv
aWQgZmluZE1vZGFsTm9kZXMoKTsKICAgICBFbGVtZW50KiBjdXJyZW50TW9kYWxOb2RlKCk7CiAg
ICAgYm9vbCBpc05vZGVWaXNpYmxlKE5vZGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzY2RmNGQ3MDUzM2I5
MWFmOWUzNjBiNDU0NjUxZTg3M2UyMzllZjQ4Li5iY2RjYTJmN2FlYWY1MTcxZThhZGVmNjQ4NTBm
NGI0ZWFkZWFjMmE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDktMDMgIFRpbSBOZ3V5
ZW4gIDxudGltQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogZmluZE1vZGFsTm9kZXMoKSBhbmQg
Y3VycmVudE1vZGFsTm9kZSgpIHNob3VsZCBpbmNsdWRlIG1vZGFsIDxkaWFsb2c+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
ZGlhbG9nLXNob3dNb2RhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvZGlhbG9nLXNob3dNb2RhbC5odG1sOiBBZGRlZC4KKwogMjAyMS0wOC0zMSAgUm9iIEJ1
aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gVHlwaW5n
Q29tbWFuZDo6d2lsbEFkZFR5cGluZ1RvT3BlbkNvbW1hbmQgdmlhIFR5cGluZ0NvbW1hbmQ6OmRl
bGV0ZUtleVByZXNzZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZGlh
bG9nLXNob3dNb2RhbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Rp
YWxvZy1zaG93TW9kYWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZDBhZjhhOWVkYzlkZjg3
YzA3NDc3MTZhYTYwYWI0MTU0MGQxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2RpYWxvZy1zaG93TW9kYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYg
QEAKK1RoaXMgdGVzdHMgdGhhdCBkaWFsb2cuc2hvd01vZGFsKCkgbWFrZXMgb3RoZXIgZWxlbWVu
dHMgaW5lcnQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEaWFsb2cgaXMgaGlk
ZGVuCitQQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQorRGlhbG9nIGlzIGRpc3Bs
YXlpbmcKK1BBU1MgYmFja2dyb3VuZEFjY2Vzc2libGUoKSBpcyBmYWxzZQorRGlhbG9nIGlzIG5v
dCBkaXNwbGF5aW5nCitQQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQorUEFTUyBi
YWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIHRydWUKK1BBU1Mgb2tCdXR0b24uaXNJZ25vcmVkIGlz
IGZhbHNlCitEaWFsb2cgaXMgZGlzcGxheWluZworUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgp
IGlzIGZhbHNlCitQQVNTIG9rQnV0dG9uLmlzSWdub3JlZCBpcyBmYWxzZQorRGlhbG9nIGlzIGRp
c3BsYXlpbmcgYW5kIGFyaWEtaGlkZGVuPXRydWUKK1BBU1MgYmFja2dyb3VuZEFjY2Vzc2libGUo
KSBpcyBmYWxzZQorRGlhbG9nIGlzIGRpc3BsYXlpbmcgYW5kIGFyaWEtaGlkZGVuPWZhbHNlCitQ
QVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgZmFsc2UKK0RpYWxvZyBpcyBkaXNwbGF5aW5n
IGFuZCBhcmlhLW1vZGFsPWZhbHNlCitQQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgZmFs
c2UKK0RpYWxvZyBpcyBub3QgZGlzcGxheWluZyB3aXRoIG9wYWNpdHkgMAorUEFTUyBiYWNrZ3Jv
dW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCitEaWFsb2cgaXMgZGlzcGxheWluZyB3aXRoIG9wYWNp
dHkgMQorUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCitEaWFsb2cgaXMgcmVt
b3ZlZCBmcm9tIERPTQorUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIHRydWUKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorT3RoZXIgcGFnZSBj
b250ZW50IHdpdGggYSBkdW1teSBmb2N1c2FibGUgZWxlbWVudAorCitEaXNwbGF5IGEgZGlhbG9n
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kaWFsb2ctc2hvd01v
ZGFsLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2RpYWxvZy1zaG93TW9kYWwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NjA4ZDJhZWUzNWY1OWJhOTBjN2YyNmVlNWJmYjNhNWIwNDY1MjUxCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kaWFsb2ctc2hvd01v
ZGFsLmh0bWwKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
YWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBpZD0i
Ym9keSI+CisKKzxkaXYgaWQ9ImJhY2tncm91bmQiPgorICAgIDxwIGlkPSJiYWNrZ3JvdW5kQ29u
dGVudCI+T3RoZXIgcGFnZSBjb250ZW50IHdpdGggPGEgaHJlZj0iIyI+YSBkdW1teSBmb2N1c2Fi
bGUgZWxlbWVudDwvYT48L3A+CisgICAgPHA+PGEgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2RpYWxvZycpLnNob3dNb2RhbCgpOyByZXR1cm4gZmFsc2U7IiBocmVmPSIjIiByb2xl
PSJidXR0b24iIGlkPSJkaXNwbGF5QnV0dG9uIj5EaXNwbGF5IGEgZGlhbG9nPC9hPjwvcD4KKzwv
ZGl2PgorCis8ZGl2IGlkPSJkaWFsb2dQYXJlbnQiIHJvbGU9Imdyb3VwIj4KKyAgICA8ZGlhbG9n
IGlkPSJkaWFsb2ciPgorICAgICAgICA8aDM+SnVzdCBhbiBleGFtcGxlLjwvaDM+CisgICAgICAg
IDxidXR0b24gaWQ9Im9rIiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9n
JykuY2xvc2UoKTsiIGNsYXNzPSJjbG9zZS1idXR0b24iPk9LPC9idXR0b24+CisgICAgICAgIDxi
dXR0b24gb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycpLmNsb3NlKCk7
IiBjbGFzcz0iY2xvc2UtYnV0dG9uIj5DYW5jZWw8L2J1dHRvbj4KKyAgICA8L2RpYWxvZz4KKzwv
ZGl2PgorCis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgZGlhbG9n
LnNob3dNb2RhbCgpIG1ha2VzIG90aGVyIGVsZW1lbnRzIGluZXJ0LiIpOworCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisgICAgICAgIAorICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGhpZGRlbiIp
OworICAgICAgICBzaG91bGRCZVRydWUoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpYWxvZyIpLnNob3dNb2RhbCgpOworCisgICAg
ICAgIC8vIEJhY2tncm91bmQgc2hvdWxkIGJlIHVuYWNjZXNzaWJsZSBhZnRlciBsb2FkaW5nLCBz
aW5jZSB0aGUKKyAgICAgICAgLy8gZGlhbG9nIGlzIGRpc3BsYXllZAorICAgICAgICBkZWJ1Zygi
RGlhbG9nIGlzIGRpc3BsYXlpbmciKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiYmFja2dyb3Vu
ZEFjY2Vzc2libGUoKSIpOworCisgICAgICAgIC8vIENsb3NlIHRoZSBkaWFsb2csIGJhY2tncm91
bmQgc2hvdWxkIGJlIGFjY2Vzc2libGUuCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJvayIpLmNsaWNrKCk7CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBhd2FpdCB3YWl0Rm9yKCgpID0+IGJhY2tncm91bmRBY2Nlc3NpYmxlKCkpOwor
ICAgICAgICAgICAgZGVidWcoIkRpYWxvZyBpcyBub3QgZGlzcGxheWluZyIpOworICAgICAgICAg
ICAgc2hvdWxkQmVUcnVlKCJiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIik7CisKKyAgICAgICAgICAg
IC8vIE5vbiBtb2RhbCA8ZGlhbG9nPiBzaG91bGQgYWxsb3cgaW50ZXJhY3Rpb25zIHdpdGggYmFj
a2dyb3VuZC4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaWFsb2ciKS5z
aG93KCk7CisgICAgICAgICAgICBzaG91bGRCZVRydWUoImJhY2tncm91bmRBY2Nlc3NpYmxlKCki
KTsKKyAgICAgICAgICAgIHdpbmRvdy5va0J1dHRvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgib2siKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2Uo
Im9rQnV0dG9uLmlzSWdub3JlZCIpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRpYWxvZyIpLmNsb3NlKCk7CisKKyAgICAgICAgICAgIC8vIENsaWNrIHRoZSBkaXNwbGF5
IGJ1dHRvbiwgZGlhbG9nIHNob3dzIGFuZCBiYWNrZ3JvdW5kIGJlY29tZXMgdW5hY2Nlc3NpYmxl
LgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc3BsYXlCdXR0b24iKS5j
bGljaygpOworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhYmFja2dyb3VuZEFjY2Vz
c2libGUoKSk7CisgICAgICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGRpc3BsYXlpbmciKTsKKyAg
ICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKyAgICAg
ICAgICAgIHdpbmRvdy5va0J1dHRvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgib2siKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoIm9rQnV0dG9u
LmlzSWdub3JlZCIpOworCisgICAgICAgICAgICAvLyBXaXRoIHRoZSBkaWFsb2cgZGlzcGxheWlu
ZywgdGVzdCB0aGF0IGFyaWEtaGlkZGVuIGFuZCB0aGUgb3BhY2l0eSBkb24ndCBhZmZlY3Qgd2hl
dGhlciB0aGUgYmFja2dyb3VuZCBpcyBhY2Nlc3NpYmxlIG9yIG5vdC4KKyAgICAgICAgICAgIC8v
IERpYWxvZyBpcyBhcmlhIGhpZGRlbgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRpYWxvZyIpLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpOworICAgICAg
ICAgICAgZGVidWcoIkRpYWxvZyBpcyBkaXNwbGF5aW5nIGFuZCBhcmlhLWhpZGRlbj10cnVlIikK
KyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKwor
ICAgICAgICAgICAgLy8gU2V0IGFyaWEtaGlkZGVuPWZhbHNlLgorICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImRpYWxvZyIpLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAi
ZmFsc2UiKTsKKyAgICAgICAgICAgIGRlYnVnKCJEaWFsb2cgaXMgZGlzcGxheWluZyBhbmQgYXJp
YS1oaWRkZW49ZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRB
Y2Nlc3NpYmxlKCkiKTsKKworICAgICAgICAgICAgLy8gU2V0IGFyaWEtbW9kYWw9ZmFsc2UuCisg
ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlhbG9nIikuc2V0QXR0cmlidXRl
KCJhcmlhLW1vZGFsIiwgImZhbHNlIik7CisgICAgICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGRp
c3BsYXlpbmcgYW5kIGFyaWEtbW9kYWw9ZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFs
c2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkaWFsb2ciKS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtbW9kYWwiKTsKKworICAg
ICAgICAgICAgLy8gU2V0IG9wYWNpdHkgdG8gMCB3aGljaCBzaG91bGQgbWFrZSB0aGUgZGlhbG9n
IGludmlzaWJsZS4KKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaWFsb2ci
KS5zdHlsZS5vcGFjaXR5ID0gMDsKKyAgICAgICAgICAgIGRlYnVnKCJEaWFsb2cgaXMgbm90IGRp
c3BsYXlpbmcgd2l0aCBvcGFjaXR5IDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJh
Y2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKworICAgICAgICAgICAgLy8gU2V0IG9wYWNpdHkgdG8g
MSB3aGljaCBzaG91bGQgbWFrZSB0aGUgZGlhbG9nIHZpc2libGUgYWdhaW4uCisgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGlhbG9nIikuc3R5bGUub3BhY2l0eSA9IDE7Cisg
ICAgICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGRpc3BsYXlpbmcgd2l0aCBvcGFjaXR5IDEiKTsK
KyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKwor
ICAgICAgICAgICAgLy8gVGVzdCBtb2RhbCBkaWFsb2cgaXMgcmVtb3ZlZCBmcm9tIERPTSB0cmVl
LgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpYWxvZyIpLnJlbW92ZSgp
OworICAgICAgICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgp
KTsKKyAgICAgICAgICAgIGRlYnVnKCJEaWFsb2cgaXMgcmVtb3ZlZCBmcm9tIERPTSIpOworICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCJiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIik7CisKKyAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9LCAwKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIHsKKyAgICAgICAgdmFyIGRpc3BsYXlCdXR0b24g
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImRpc3BsYXlC
dXR0b24iKTsKKyAgICAgICAgdmFyIGJhY2tncm91bmRDb250ZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJiYWNrZ3JvdW5kQ29udGVudCIpOworCisg
ICAgICAgIGlmICghZGlzcGxheUJ1dHRvbiB8fCAhYmFja2dyb3VuZENvbnRlbnQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuICFkaXNwbGF5QnV0dG9uLmlzSWdu
b3JlZCAmJiAhYmFja2dyb3VuZENvbnRlbnQuaXNJZ25vcmVkOworICAgIH0KKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437309</attachid>
            <date>2021-09-03 14:02:37 -0700</date>
            <delta_ts>2021-09-03 14:02:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229815-20210903230236.patch</filename>
            <type>text/plain</type>
            <size>13769</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmU3ZThkYTYyYTdlZDhj
ZmM4N2QwNGZlNmQ3MTkxZWY0ZTM2YjkxZC4uNDliNzRmYWZkYmY0M2JkMzAzYzM4NGYwZmU1ODQy
ZWYyMWY0MDgzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA5LTAzICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGZpbmRNb2RhbE5vZGVzKCkg
YW5kIGN1cnJlbnRNb2RhbE5vZGUoKSBzaG91bGQgaW5jbHVkZSBtb2RhbCA8ZGlhbG9nPgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODE1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgVGVzdDogYWNjZXNz
aWJpbGl0eS9kaWFsb2ctc2hvd01vZGFsLmh0bWwKKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjppc01v
ZGFsRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpmaW5k
TW9kYWxOb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpoYW5kbGVBdHRy
aWJ1dGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6aGFuZGxlTW9k
YWxDaGFuZ2UpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorCiAy
MDIxLTA4LTMxICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZD
XVtJbnRlZ3JhdGlvbl0gTWFrZSBuYW1pbmcgbW9yZSBjb25zaXN0ZW50IGFjcm9zcyBMYXlvdXQ6
OlJ1biBhbmQgSW50ZWdyYXRpb246OlJ1biBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBmMjQ1MTEwMjA0MDAyMzZhYzAyNzZh
ODU5ZTZiZmQ3YWYwOThlMGJhLi4wNzI4Y2NkZjAwYmUzYmRkMGE2OTBkZDViODlhODAwMzljZDcy
ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxB
cmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTERpYWxvZ0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIK
QEAgLTI1MCwxNyArMjUxLDIwIEBAIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkKICNl
bmRpZgogfQogCitib29sIEFYT2JqZWN0Q2FjaGU6OmlzTW9kYWxFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpIGNvbnN0Cit7CisgICAgYm9vbCBoYXNEaWFsb2dSb2xlID0gbm9kZUhhc1JvbGUoJmVs
ZW1lbnQsICJkaWFsb2ciKSB8fCBub2RlSGFzUm9sZSgmZWxlbWVudCwgImFsZXJ0ZGlhbG9nIik7
CisgICAgYm9vbCBpc0FyaWFNb2RhbCA9IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGVs
ZW1lbnQuYXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihhcmlhX21vZGFsQXR0ciksICJ0
cnVlIik7CisKKyAgICByZXR1cm4gKGhhc0RpYWxvZ1JvbGUgJiYgaXNBcmlhTW9kYWwpIHx8IChp
czxIVE1MRGlhbG9nRWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8SFRNTERpYWxvZ0VsZW1l
bnQ+KGVsZW1lbnQpLmlzTW9kYWwoKSk7Cit9CisKIHZvaWQgQVhPYmplY3RDYWNoZTo6ZmluZE1v
ZGFsTm9kZXMoKQogewotICAgIC8vIFRyYXZlcnNlIHRoZSBET00gdHJlZSB0byBsb29rIGZvciB0
aGUgYXJpYS1tb2RhbD10cnVlIG5vZGVzLgorICAgIC8vIFRyYXZlcnNlIHRoZSBET00gdHJlZSB0
byBsb29rIGZvciB0aGUgYXJpYS1tb2RhbD10cnVlIG5vZGVzIG9yIG1vZGFsIDxkaWFsb2c+IGVs
ZW1lbnRzLgogICAgIGZvciAoRWxlbWVudCogZWxlbWVudCA9IEVsZW1lbnRUcmF2ZXJzYWw6OmZp
cnN0V2l0aGluKGRvY3VtZW50KCkucm9vdE5vZGUoKSk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNldWRvKCplbGVtZW50KSkgewotICAgICAgICAv
LyBNdXN0IGhhdmUgZGlhbG9nIG9yIGFsZXJ0ZGlhbG9nIHJvbGUKLSAgICAgICAgaWYgKCFub2Rl
SGFzUm9sZShlbGVtZW50LCAiZGlhbG9nIikgJiYgIW5vZGVIYXNSb2xlKGVsZW1lbnQsICJhbGVy
dGRpYWxvZyIpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UoZWxlbWVudC0+YXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihhcmlhX21vZGFsQXR0ciksICJ0cnVlIikpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBtX21vZGFsRWxlbWVudHNTZXQuYWRkKGVsZW1lbnQpOworICAgICAgICBpZiAoaXNN
b2RhbEVsZW1lbnQoKmVsZW1lbnQpKQorICAgICAgICAgICAgbV9tb2RhbEVsZW1lbnRzU2V0LmFk
ZChlbGVtZW50KTsKICAgICB9CiAKICAgICBtX21vZGFsTm9kZXNJbml0aWFsaXplZCA9IHRydWU7
CkBAIC0yNjgsMTIgKzI3MiwxOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZpbmRNb2RhbE5vZGVz
KCkKIAogRWxlbWVudCogQVhPYmplY3RDYWNoZTo6Y3VycmVudE1vZGFsTm9kZSgpCiB7Ci0gICAg
Ly8gVGhlcmUgbWlnaHQgYmUgbXVsdGlwbGUgbm9kZXMgd2l0aCBhcmlhLW1vZGFsPXRydWUgc2V0
LgorICAgIC8vIFRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG1vZGFsIGRpYWxvZyBub2Rlcy4KICAg
ICAvLyBXZSB1c2UgdGhpcyBmdW5jdGlvbiB0byBwaWNrIHRoZSBvbmUgd2Ugd2FudC4KICAgICBt
X2N1cnJlbnRNb2RhbEVsZW1lbnQgPSBudWxscHRyOwogICAgIGlmIChtX21vZGFsRWxlbWVudHNT
ZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAorICAgIC8vIFBpY2sgdGhl
IGRvY3VtZW50IGFjdGl2ZSBtb2RhbCA8ZGlhbG9nPiBlbGVtZW50IGlmIGl0IGV4aXN0cy4KKyAg
ICBpZiAoRWxlbWVudCogYWN0aXZlTW9kYWxEaWFsb2cgPSBkb2N1bWVudCgpLmFjdGl2ZU1vZGFs
RGlhbG9nKCkpIHsKKyAgICAgICAgQVNTRVJUKG1fbW9kYWxFbGVtZW50c1NldC5jb250YWlucyhh
Y3RpdmVNb2RhbERpYWxvZykpOworICAgICAgICByZXR1cm4gYWN0aXZlTW9kYWxEaWFsb2c7Cisg
ICAgfQorCiAgICAgLy8gSWYgYW55IG9mIHRoZSBtb2RhbCBub2RlcyBjb250YWlucyB0aGUga2V5
Ym9hcmQgZm9jdXMsIHdlIHdhbnQgdG8gcGljayB0aGF0IG9uZS4KICAgICAvLyBJZiBub3QsIHdl
IHdhbnQgdG8gcGljayB0aGUgbGFzdCB2aXNpYmxlIGRpYWxvZyBpbiB0aGUgRE9NLgogICAgIFJl
ZlB0cjxFbGVtZW50PiBmb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQo
KTsKQEAgLTE4MDIsNiArMTgxMiwxMSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJp
YnV0ZUNoYW5nZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgRWxlbWVudAogICAgIGVs
c2UgaWYgKGF0dHJOYW1lID09IGlkQXR0cikKICAgICAgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKGdl
dChlbGVtZW50KSwgQVhPYmplY3RDYWNoZTo6QVhJZEF0dHJpYnV0ZUNoYW5nZWQpOwogI2VuZGlm
CisgICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gb3BlbkF0dHIgJiYgaXM8SFRNTERpYWxvZ0VsZW1l
bnQ+KCplbGVtZW50KSkgeworICAgICAgICBkZWZlck1vZGFsQ2hhbmdlKGVsZW1lbnQpOworICAg
ICAgICByZWNvbXB1dGVJc0lnbm9yZWQoZWxlbWVudC0+cGFyZW50Tm9kZSgpKTsKKyAgICB9CisK
IAogICAgIGlmICghYXR0ck5hbWUubG9jYWxOYW1lKCkuc3RyaW5nKCkuc3RhcnRzV2l0aCgiYXJp
YS0iKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg0OSw3ICsxODY0LDcgQEAgdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVBdHRyaWJ1dGVDaGFuZ2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUsIEVsZW1lbnQKIAogdm9pZCBBWE9iamVjdENhY2hlOjpoYW5kbGVNb2RhbENoYW5nZShFbGVt
ZW50JiBlbGVtZW50KQogewotICAgIGlmICghbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJkaWFsb2ci
KSAmJiAhbm9kZUhhc1JvbGUoJmVsZW1lbnQsICJhbGVydGRpYWxvZyIpKQorICAgIGlmICghaXM8
SFRNTERpYWxvZ0VsZW1lbnQ+KGVsZW1lbnQpICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImRp
YWxvZyIpICYmICFub2RlSGFzUm9sZSgmZWxlbWVudCwgImFsZXJ0ZGlhbG9nIikpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHN0b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCk7CkBA
IC0xODU3LDcgKzE4NzIsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZU1vZGFsQ2hhbmdl
KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFtX21vZGFsTm9kZXNJbml0aWFsaXplZCkKICAg
ICAgICAgZmluZE1vZGFsTm9kZXMoKTsKIAotICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShlbGVtZW50LmF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXJpYV9tb2Rh
bEF0dHIpLCAidHJ1ZSIpKSB7CisgICAgaWYgKGlzTW9kYWxFbGVtZW50KGVsZW1lbnQpKSB7CiAg
ICAgICAgIC8vIEFkZCB0aGUgbmV3bHkgbW9kaWZpZWQgbm9kZSB0byB0aGUgbW9kYWwgbm9kZXMg
c2V0LgogICAgICAgICAvLyBXZSB3aWxsIHJlY29tcHV0ZSB0aGUgY3VycmVudCB2YWxpZCBhcmlh
IG1vZGFsIG5vZGUgaW4gbW9kYWxOb2RlKCkgd2hlbiB0aGlzIG5vZGUgaXMgbm90IHZpc2libGUu
CiAgICAgICAgIG1fbW9kYWxFbGVtZW50c1NldC5hZGQoJmVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCAxZGNhNGNhNWY2ZjQwMDY3
YTZmYWQ0YTExZGI3Zjk4NDRjN2FhNmRiLi40YjYwN2JkNTc5ZjY1NWZiYTMyMjhjYjRlYzc0YmM5
ODFmMWQ1NzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaApAQCAtNDcyLDcgKzQ3Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBoYW5kbGVBcmlhRXhw
YW5kZWRDaGFuZ2UoTm9kZSopOwogICAgIHZvaWQgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5n
ZWQoTm9kZSogb2xkRm9jdXNlZE5vZGUsIE5vZGUqIG5ld0ZvY3VzZWROb2RlKTsKIAotICAgIC8v
IGFyaWEtbW9kYWwgcmVsYXRlZAorICAgIC8vIGFyaWEtbW9kYWwgb3IgbW9kYWwgPGRpYWxvZz4g
cmVsYXRlZAorICAgIGJvb2wgaXNNb2RhbEVsZW1lbnQoRWxlbWVudCYpIGNvbnN0OwogICAgIHZv
aWQgZmluZE1vZGFsTm9kZXMoKTsKICAgICBFbGVtZW50KiBjdXJyZW50TW9kYWxOb2RlKCk7CiAg
ICAgYm9vbCBpc05vZGVWaXNpYmxlKE5vZGUqKSBjb25zdDsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzY2RmNGQ3MDUzM2I5
MWFmOWUzNjBiNDU0NjUxZTg3M2UyMzllZjQ4Li4xZmJkYjQ5ODczZDNjMTM3MzdmZDYxODM3ZGIw
MDI1ZjdiZjgyY2MzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDktMDMgIFRpbSBOZ3V5
ZW4gIDxudGltQGFwcGxlLmNvbT4KKworICAgICAgICBBWDogZmluZE1vZGFsTm9kZXMoKSBhbmQg
Y3VycmVudE1vZGFsTm9kZSgpIHNob3VsZCBpbmNsdWRlIG1vZGFsIDxkaWFsb2c+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4MTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
ZGlhbG9nLXNob3dNb2RhbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvZGlhbG9nLXNob3dNb2RhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0wOC0zMSAgUm9iIEJ1aXMgIDxyYnVpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIE51bGxwdHIgY3Jhc2ggaW4gVHlwaW5nQ29tbWFuZDo6d2lsbEFk
ZFR5cGluZ1RvT3BlbkNvbW1hbmQgdmlhIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtleVByZXNzZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZGlhbG9nLXNob3dNb2RhbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2RpYWxvZy1zaG93TW9kYWwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3ZDBhZjhhOWVkYzlkZjg3YzA3NDc3MTZhYTYwYWI0
MTU0MGQxMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Rp
YWxvZy1zaG93TW9kYWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1RoaXMgdGVzdHMg
dGhhdCBkaWFsb2cuc2hvd01vZGFsKCkgbWFrZXMgb3RoZXIgZWxlbWVudHMgaW5lcnQuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitEaWFsb2cgaXMgaGlkZGVuCitQQVNTIGJhY2tn
cm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQorRGlhbG9nIGlzIGRpc3BsYXlpbmcKK1BBU1MgYmFj
a2dyb3VuZEFjY2Vzc2libGUoKSBpcyBmYWxzZQorRGlhbG9nIGlzIG5vdCBkaXNwbGF5aW5nCitQ
QVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgdHJ1ZQorUEFTUyBiYWNrZ3JvdW5kQWNjZXNz
aWJsZSgpIGlzIHRydWUKK1BBU1Mgb2tCdXR0b24uaXNJZ25vcmVkIGlzIGZhbHNlCitEaWFsb2cg
aXMgZGlzcGxheWluZworUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCitQQVNT
IG9rQnV0dG9uLmlzSWdub3JlZCBpcyBmYWxzZQorRGlhbG9nIGlzIGRpc3BsYXlpbmcgYW5kIGFy
aWEtaGlkZGVuPXRydWUKK1BBU1MgYmFja2dyb3VuZEFjY2Vzc2libGUoKSBpcyBmYWxzZQorRGlh
bG9nIGlzIGRpc3BsYXlpbmcgYW5kIGFyaWEtaGlkZGVuPWZhbHNlCitQQVNTIGJhY2tncm91bmRB
Y2Nlc3NpYmxlKCkgaXMgZmFsc2UKK0RpYWxvZyBpcyBkaXNwbGF5aW5nIGFuZCBhcmlhLW1vZGFs
PWZhbHNlCitQQVNTIGJhY2tncm91bmRBY2Nlc3NpYmxlKCkgaXMgZmFsc2UKK0RpYWxvZyBpcyBu
b3QgZGlzcGxheWluZyB3aXRoIG9wYWNpdHkgMAorUEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgp
IGlzIGZhbHNlCitEaWFsb2cgaXMgZGlzcGxheWluZyB3aXRoIG9wYWNpdHkgMQorUEFTUyBiYWNr
Z3JvdW5kQWNjZXNzaWJsZSgpIGlzIGZhbHNlCitEaWFsb2cgaXMgcmVtb3ZlZCBmcm9tIERPTQor
UEFTUyBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorT3RoZXIgcGFnZSBjb250ZW50IHdpdGggYSBk
dW1teSBmb2N1c2FibGUgZWxlbWVudAorCitEaXNwbGF5IGEgZGlhbG9nCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kaWFsb2ctc2hvd01vZGFsLmh0bWwgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2RpYWxvZy1zaG93TW9kYWwuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
NjA4ZDJhZWUzNWY1OWJhOTBjN2YyNmVlNWJmYjNhNWIwNDY1MjUxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9kaWFsb2ctc2hvd01vZGFsLmh0bWwKQEAgLTAs
MCArMSwxMDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1o
ZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYg
aWQ9ImJhY2tncm91bmQiPgorICAgIDxwIGlkPSJiYWNrZ3JvdW5kQ29udGVudCI+T3RoZXIgcGFn
ZSBjb250ZW50IHdpdGggPGEgaHJlZj0iIyI+YSBkdW1teSBmb2N1c2FibGUgZWxlbWVudDwvYT48
L3A+CisgICAgPHA+PGEgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycp
LnNob3dNb2RhbCgpOyByZXR1cm4gZmFsc2U7IiBocmVmPSIjIiByb2xlPSJidXR0b24iIGlkPSJk
aXNwbGF5QnV0dG9uIj5EaXNwbGF5IGEgZGlhbG9nPC9hPjwvcD4KKzwvZGl2PgorCis8ZGl2IGlk
PSJkaWFsb2dQYXJlbnQiIHJvbGU9Imdyb3VwIj4KKyAgICA8ZGlhbG9nIGlkPSJkaWFsb2ciPgor
ICAgICAgICA8aDM+SnVzdCBhbiBleGFtcGxlLjwvaDM+CisgICAgICAgIDxidXR0b24gaWQ9Im9r
IiBvbmNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlhbG9nJykuY2xvc2UoKTsiIGNs
YXNzPSJjbG9zZS1idXR0b24iPk9LPC9idXR0b24+CisgICAgICAgIDxidXR0b24gb25jbGljaz0i
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxvZycpLmNsb3NlKCk7IiBjbGFzcz0iY2xvc2Ut
YnV0dG9uIj5DYW5jZWw8L2J1dHRvbj4KKyAgICA8L2RpYWxvZz4KKzwvZGl2PgorCis8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgZGlhbG9nLnNob3dNb2RhbCgpIG1h
a2VzIG90aGVyIGVsZW1lbnRzIGluZXJ0LiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cisg
ICAgICAgIAorICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGhpZGRlbiIpOworICAgICAgICBzaG91
bGRCZVRydWUoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRpYWxvZyIpLnNob3dNb2RhbCgpOworCisgICAgICAgIC8vIEJhY2tncm91
bmQgc2hvdWxkIGJlIHVuYWNjZXNzaWJsZSBhZnRlciBsb2FkaW5nLCBzaW5jZSB0aGUKKyAgICAg
ICAgLy8gZGlhbG9nIGlzIGRpc3BsYXllZAorICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGRpc3Bs
YXlpbmciKTsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiYmFja2dyb3VuZEFjY2Vzc2libGUoKSIp
OworCisgICAgICAgIC8vIENsb3NlIHRoZSBkaWFsb2csIGJhY2tncm91bmQgc2hvdWxkIGJlIGFj
Y2Vzc2libGUuCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvayIpLmNsaWNrKCk7
CisgICAgICAgIHNldFRpbWVvdXQoYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBhd2Fp
dCB3YWl0Rm9yKCgpID0+IGJhY2tncm91bmRBY2Nlc3NpYmxlKCkpOworICAgICAgICAgICAgZGVi
dWcoIkRpYWxvZyBpcyBub3QgZGlzcGxheWluZyIpOworICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCJiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIik7CisKKyAgICAgICAgICAgIC8vIE5vbiBtb2RhbCA8
ZGlhbG9nPiBzaG91bGQgYWxsb3cgaW50ZXJhY3Rpb25zIHdpdGggYmFja2dyb3VuZC4KKyAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaWFsb2ciKS5zaG93KCk7CisgICAgICAg
ICAgICBzaG91bGRCZVRydWUoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKyAgICAgICAgICAg
IHdpbmRvdy5va0J1dHRvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgib2siKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoIm9rQnV0dG9uLmlzSWdu
b3JlZCIpOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpYWxvZyIpLmNs
b3NlKCk7CisKKyAgICAgICAgICAgIC8vIENsaWNrIHRoZSBkaXNwbGF5IGJ1dHRvbiwgZGlhbG9n
IHNob3dzIGFuZCBiYWNrZ3JvdW5kIGJlY29tZXMgdW5hY2Nlc3NpYmxlLgorICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpc3BsYXlCdXR0b24iKS5jbGljaygpOworICAgICAg
ICAgICAgYXdhaXQgd2FpdEZvcigoKSA9PiAhYmFja2dyb3VuZEFjY2Vzc2libGUoKSk7CisgICAg
ICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGRpc3BsYXlpbmciKTsKKyAgICAgICAgICAgIHNob3Vs
ZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKyAgICAgICAgICAgIHdpbmRvdy5v
a0J1dHRvbiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
b2siKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoIm9rQnV0dG9uLmlzSWdub3JlZCIpOwor
CisgICAgICAgICAgICAvLyBXaXRoIHRoZSBkaWFsb2cgZGlzcGxheWluZywgdGVzdCB0aGF0IGFy
aWEtaGlkZGVuIGFuZCB0aGUgb3BhY2l0eSBkb24ndCBhZmZlY3Qgd2hldGhlciB0aGUgYmFja2dy
b3VuZCBpcyBhY2Nlc3NpYmxlIG9yIG5vdC4KKyAgICAgICAgICAgIC8vIERpYWxvZyBpcyBhcmlh
IGhpZGRlbgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpYWxvZyIpLnNl
dEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAidHJ1ZSIpOworICAgICAgICAgICAgZGVidWcoIkRp
YWxvZyBpcyBkaXNwbGF5aW5nIGFuZCBhcmlhLWhpZGRlbj10cnVlIikKKyAgICAgICAgICAgIHNo
b3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKworICAgICAgICAgICAgLy8g
U2V0IGFyaWEtaGlkZGVuPWZhbHNlLgorICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRpYWxvZyIpLnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLCAiZmFsc2UiKTsKKyAgICAg
ICAgICAgIGRlYnVnKCJEaWFsb2cgaXMgZGlzcGxheWluZyBhbmQgYXJpYS1oaWRkZW49ZmFsc2Ui
KTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsK
KworICAgICAgICAgICAgLy8gU2V0IGFyaWEtbW9kYWw9ZmFsc2UuCisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZGlhbG9nIikuc2V0QXR0cmlidXRlKCJhcmlhLW1vZGFsIiwg
ImZhbHNlIik7CisgICAgICAgICAgICBkZWJ1ZygiRGlhbG9nIGlzIGRpc3BsYXlpbmcgYW5kIGFy
aWEtbW9kYWw9ZmFsc2UiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRB
Y2Nlc3NpYmxlKCkiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaWFs
b2ciKS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtbW9kYWwiKTsKKworICAgICAgICAgICAgLy8gU2V0
IG9wYWNpdHkgdG8gMCB3aGljaCBzaG91bGQgbWFrZSB0aGUgZGlhbG9nIGludmlzaWJsZS4KKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaWFsb2ciKS5zdHlsZS5vcGFjaXR5
ID0gMDsKKyAgICAgICAgICAgIGRlYnVnKCJEaWFsb2cgaXMgbm90IGRpc3BsYXlpbmcgd2l0aCBv
cGFjaXR5IDAiKTsKKyAgICAgICAgICAgIHNob3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3Np
YmxlKCkiKTsKKworICAgICAgICAgICAgLy8gU2V0IG9wYWNpdHkgdG8gMSB3aGljaCBzaG91bGQg
bWFrZSB0aGUgZGlhbG9nIHZpc2libGUgYWdhaW4uCisgICAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGlhbG9nIikuc3R5bGUub3BhY2l0eSA9IDE7CisgICAgICAgICAgICBkZWJ1
ZygiRGlhbG9nIGlzIGRpc3BsYXlpbmcgd2l0aCBvcGFjaXR5IDEiKTsKKyAgICAgICAgICAgIHNo
b3VsZEJlRmFsc2UoImJhY2tncm91bmRBY2Nlc3NpYmxlKCkiKTsKKworICAgICAgICAgICAgLy8g
VGVzdCBtb2RhbCBkaWFsb2cgaXMgcmVtb3ZlZCBmcm9tIERPTSB0cmVlLgorICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpYWxvZyIpLnJlbW92ZSgpOworICAgICAgICAgICAg
YXdhaXQgd2FpdEZvcigoKSA9PiBiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpKTsKKyAgICAgICAgICAg
IGRlYnVnKCJEaWFsb2cgaXMgcmVtb3ZlZCBmcm9tIERPTSIpOworICAgICAgICAgICAgc2hvdWxk
QmVUcnVlKCJiYWNrZ3JvdW5kQWNjZXNzaWJsZSgpIik7CisKKyAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9LCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBiYWNrZ3JvdW5k
QWNjZXNzaWJsZSgpIHsKKyAgICAgICAgdmFyIGRpc3BsYXlCdXR0b24gPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImRpc3BsYXlCdXR0b24iKTsKKyAgICAg
ICAgdmFyIGJhY2tncm91bmRDb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJiYWNrZ3JvdW5kQ29udGVudCIpOworCisgICAgICAgIGlmICghZGlz
cGxheUJ1dHRvbiB8fCAhYmFja2dyb3VuZENvbnRlbnQpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgcmV0dXJuICFkaXNwbGF5QnV0dG9uLmlzSWdub3JlZCAmJiAhYmFja2dy
b3VuZENvbnRlbnQuaXNJZ25vcmVkOworICAgIH0KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1OTczNGRhNzE5
YjBmN2VmNmFhOGRiMmFkNzcyNTI4MjcyYWVkZTIyLi4yMTljMTAyM2M3NjVkMmJhMzc3ZTM1OWVi
NjQwZjA2NDMzMDg1NmQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0
aW9ucwpAQCAtMTUwMCw2ICsxNTAwLDcgQEAgd2Via2l0Lm9yZy9iLzEzMDAxMSBhY2Nlc3NpYmls
aXR5L2FyaWEtc2V0c2l6ZS1wb3NpbnNldC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvOTU0
MDUgYWNjZXNzaWJpbGl0eS93aW4vc2luZ2xlLXNlbGVjdC1jaGlsZHJlbi5odG1sIFsgU2tpcCBd
CiBhY2Nlc3NpYmlsaXR5L2ZpbGUtdXBsb2FkLWJ1dHRvbi1zdHJpbmd2YWx1ZS5odG1sCiB3ZWJr
aXQub3JnL2IvOTcwMjYgYWNjZXNzaWJpbGl0eS9maWxlLXVwbG9hZC1idXR0b24td2l0aC1heHBy
ZXNzLmh0bWwgWyBTa2lwIF0gIyAgWyBUaW1lb3V0IF0KK2FjY2Vzc2liaWxpdHkvZGlhbG9nLXNo
b3dNb2RhbC5odG1sIFsgU2tpcCBdCiAKICMgQ29sb3IgV2VsbCBpcyBub3QgaW1wbGVtZW50ZWQ6
CiBhY2Nlc3NpYmlsaXR5L2NvbG9yLXdlbGwuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>