<?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>239498</bug_id>
          
          <creation_ts>2022-04-19 08:23:43 -0700</creation_ts>
          <short_desc>Fix for accessibility/aria-grid-with-aria-owns-rows.html in isolated tree mode.</short_desc>
          <delta_ts>2022-04-22 06:30:36 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</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>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1862553</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-19 08:23:43 -0700</bug_when>
    <thetext>Fix for accessibility/aria-grid-with-aria-owns-rows.html in isolated tree mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862554</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-19 08:23:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/91961398&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862567</commentid>
    <comment_count>2</comment_count>
      <attachid>457899</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-19 08:48:29 -0700</bug_when>
    <thetext>Created attachment 457899
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862576</commentid>
    <comment_count>3</comment_count>
      <attachid>457899</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-04-19 09:00:40 -0700</bug_when>
    <thetext>Comment on attachment 457899
Patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:52
&gt; +        initializeAttributeData(axObject, !m_parentID.isValid());

What is the second Boolean parameter here? Can we make it an enum or evaluate the property inside this method?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862578</commentid>
    <comment_count>4</comment_count>
      <attachid>457899</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-19 09:04:34 -0700</bug_when>
    <thetext>Comment on attachment 457899
Patch

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

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:52
&gt; +        initializeAttributeData(axObject, !m_parentID.isValid());

Is it safe to use member variables inside the constructor of an object, even if we&apos;ve initialized it above?

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:189
&gt; +    auto object = AXIsolatedObject::create(axObject, this);

Below in this method, we update the node map with the passed-in parentID, which can be different than what AXIsolatedObject::create computes for itself with this patch. Will that be a problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862596</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-04-19 09:52:24 -0700</bug_when>
    <thetext>In AXIsolatedTree, we have a member variable:

HashMap&lt;AXID, std::pair&lt;AXID, AttachWrapper&gt;&gt; m_unresolvedPendingAppends;

Where the first part of the pair is the parent ID that should be used to resolve the append (i.e. when we call nodeChangeForObject for the object).

With your change, do we still need this data in m_unresolvedPendingAppends?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863285</commentid>
    <comment_count>6</comment_count>
      <attachid>458060</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-21 07:28:46 -0700</bug_when>
    <thetext>Created attachment 458060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863292</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-21 08:03:18 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #3)
&gt; Comment on attachment 457899 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457899&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:52
&gt; &gt; +        initializeAttributeData(axObject, !m_parentID.isValid());
&gt; 
&gt; What is the second Boolean parameter here? Can we make it an enum or
&gt; evaluate the property inside this method?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863293</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-21 08:05:49 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; Comment on attachment 457899 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457899&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:52
&gt; &gt; +        initializeAttributeData(axObject, !m_parentID.isValid());
&gt; 
&gt; Is it safe to use member variables inside the constructor of an object, even
&gt; if we&apos;ve initialized it above?

Yes.
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:189
&gt; &gt; +    auto object = AXIsolatedObject::create(axObject, this);
&gt; 
&gt; Below in this method, we update the node map with the passed-in parentID,
&gt; which can be different than what AXIsolatedObject::create computes for
&gt; itself with this patch. Will that be a problem?

Fixed, thanks for pointing it out. Cleaned up the whole thing of passing the parentIDs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863294</commentid>
    <comment_count>9</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-04-21 08:07:57 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #5)
&gt; In AXIsolatedTree, we have a member variable:
&gt; 
&gt; HashMap&lt;AXID, std::pair&lt;AXID, AttachWrapper&gt;&gt; m_unresolvedPendingAppends;
&gt; 
&gt; Where the first part of the pair is the parent ID that should be used to
&gt; resolve the append (i.e. when we call nodeChangeForObject for the object).
&gt; 
&gt; With your change, do we still need this data in m_unresolvedPendingAppends?

No we don&apos;t need that any more, so I cleaned it up. Thanks for pointing that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863641</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-22 06:30:33 -0700</bug_when>
    <thetext>Committed r293219 (249888@main): &lt;https://commits.webkit.org/249888@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458060.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457899</attachid>
            <date>2022-04-19 08:48:29 -0700</date>
            <delta_ts>2022-04-21 07:28:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239498-20220419114827.patch</filename>
            <type>text/plain</type>
            <size>12676</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uOGEyNzNmZWE1N2VkYzUxY2VjOGJhMGVkNDQ5Yzgy
YjliOTAxYTFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIyLTA0LTE5ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggZm9yIGFj
Y2Vzc2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MuaHRtbCBpbiBpc29sYXRl
ZCB0cmVlIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkxOTYxMzk4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxp
dHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MuaHRtbC4KKworICAgICAgICBXaGVuIGNy
ZWF0aW5nIEFYSXNvbGF0ZWRPYmplY3RzLCB3ZSB3ZXJlIHBhc3NpbmcgdGhlIG9iamVjdCBJRCBv
ZiB0aGUKKyAgICAgICAgcGFyZW50IHRvIHRoZSBjb25zdHJ1Y3RvciBpbiBhIHBhcmVudCB0byBj
aGlsZCB0cmF2ZXJzYWwsIGFuZCBzdG9yaW5nCisgICAgICAgIHRoYXQgcGFyZW50IElEIGluIHRo
ZSBvYmplY3QuIFRoaXMgYXNzdW1lZCB0aGF0IGFsbCBBWCBvYmplY3RzIGhhdmUgYQorICAgICAg
ICBwYXJlbnQtY2hpbGQgcmVmbGV4aXZlIHJlbGF0aW9uc2hpcCwgaS5lLiwgaWYgQSBpcyBhIGNo
aWxkIG9mIEIsIEIgaXMKKyAgICAgICAgdGhlIHBhcmVudCBvZiBBLiBCdXQgdGhhdCBpcyBub3Qg
dHJ1ZSBpbiBzZXZlcmFsIGNhc2VzIGluIHRoZQorICAgICAgICBhY2Nlc3NpYmlsaXR5IGhpZXJh
cmNoeS4KKyAgICAgICAgT25lIGV4YW1wbGUgd2hlcmUgdGhlIHBhcmVudC1jaGlsZCByZWxhdGlv
bnNoaXAgaXMgbm90IHJlZmxleGl2ZSBpcyBmb3IgdGFibGUgY2VsbHMsIHdoZXJlIGEgY2VsbCBj
YW4gYmUgdGhlIGNoaWxkIG9mIGFuIG9iamVjdCB3aXRoIHJvbGUgY29sdW1uLCBidXQgaXRzIHBh
cmVudCBpcyBhbiBvYmplY3Qgd2l0aCByb2xlIHJvdy4KKyAgICAgICAgQW5vdGhlciBjYXNlIGlz
IHdoZW4gYXJpYS1vd25zIGlzIHVzZWQuCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHBy
b2JsZW0gYnkgbGV0dGluZyB0aGUgbGl2ZSBvYmplY3QgZGV0ZXJtaW5lIGl0cworICAgICAgICBv
d24gcGFyZW50LCBpbnN0ZWFkIG9mIGhhdmluZyB0aGUgdHJhdmVyc2FsIGFsZ29yaXRobSBwYXNz
IHRoZSBwYXJlbnQgSUQKKyAgICAgICAgdG8gdGhlIEFYSXNvbGF0ZWRPYmplY3QgY29uc3RydWN0
b3IuCisgICAgICAgIEEgcHJldmlvdXMgYXR0ZW1wdCB0byBmaXggdGhpcyBwcm9ibGVtIHdhcyBt
YWRlIGluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzYxNTYuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OkFYSXNvbGF0
ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6Y3JlYXRlKToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnBhcmVudElERm9yT2JqZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oOgorCiAyMDIyLTA0LTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXVtXZWJSVENdIE1pbm9yIGNsZWFudXAgaW4gSW5j
b21pbmdTb3VyY2VHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTUx
Njk0YzI4YTI5MjE1ZTdlYTJiMjM0ZjQ4YTU2NTJhY2YzMWNkNC4uYzhmMzY0ODQyYzliN2ZkMzZi
OTQ0N2JlNTE0YjIyYTk4ZjkwZjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAg
LTM4LDIzICszOCwyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFYSXNvbGF0ZWRPYmpl
Y3Q6OkFYSXNvbGF0ZWRPYmplY3QoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFYSXNvbGF0ZWRUcmVl
KiB0cmVlLCBBWElEIHBhcmVudElEKQorQVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVj
dChBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWElzb2xhdGVkVHJlZSogdHJlZSkKICAgICA6IG1f
Y2FjaGVkVHJlZSh0cmVlKQotICAgICwgbV9wYXJlbnRJRChwYXJlbnRJRCkKLSAgICAsIG1faWQo
b2JqZWN0Lm9iamVjdElEKCkpCisgICAgLCBtX2lkKGF4T2JqZWN0Lm9iamVjdElEKCkpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXM8QWNjZXNzaWJpbGl0eU9i
amVjdD4oYXhPYmplY3QpKTsKKworICAgIGF1dG8qIGF4UGFyZW50ID0gYXhPYmplY3QucGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgbV9wYXJlbnRJRCA9IGF4UGFyZW50ID8gYXhQYXJlbnQt
Pm9iamVjdElEKCkgOiBBWElEKCk7CisKICAgICBpZiAobV9pZC5pc1ZhbGlkKCkpCi0gICAgICAg
IGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKG9iamVjdCwgIXBhcmVudElELmlzVmFsaWQoKSk7Cisg
ICAgICAgIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKGF4T2JqZWN0LCAhbV9wYXJlbnRJRC5pc1Zh
bGlkKCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVy
IG5vcm1hbCBjaXJjdW1zdGFuY2VzLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICB9CiB9CiAKLVJlZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUo
QVhDb3JlT2JqZWN0JiBvYmplY3QsIEFYSXNvbGF0ZWRUcmVlKiB0cmVlLCBBWElEIHBhcmVudElE
KQorUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZShBWENvcmVP
YmplY3QmIG9iamVjdCwgQVhJc29sYXRlZFRyZWUqIHRyZWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQVhJc29sYXRlZE9iamVjdChvYmplY3QsIHRyZWUsIHBhcmVudElEKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZE9iamVjdChvYmplY3QsIHRyZWUpKTsKIH0K
IAogQVhJc29sYXRlZE9iamVjdDo6fkFYSXNvbGF0ZWRPYmplY3QoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9i
amVjdC5oCmluZGV4IDU3MzcwNWI1MzA0OWJkOTE1NDBhZDgzYjEwYzMzYWZiNTBjNzNiNzYuLmM2
OWRhZjhjN2U3NjczYjQ2OGJhNjY5NTJiNWQ1ZWZiNzE4ZGJiYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgY2xhc3MgQVhJc29sYXRlZFRyZWU7CiBjbGFzcyBB
WElzb2xhdGVkT2JqZWN0IGZpbmFsIDogcHVibGljIEFYQ29yZU9iamVjdCB7CiAgICAgZnJpZW5k
IGNsYXNzIEFYSXNvbGF0ZWRUcmVlOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRl
ZE9iamVjdD4gY3JlYXRlKEFYQ29yZU9iamVjdCYsIEFYSXNvbGF0ZWRUcmVlKiwgQVhJRCBwYXJl
bnRJRCk7CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkT2JqZWN0PiBjcmVhdGUoQVhDb3JlT2Jq
ZWN0JiwgQVhJc29sYXRlZFRyZWUqKTsKICAgICB+QVhJc29sYXRlZE9iamVjdCgpOwogCiAgICAg
dm9pZCBzZXRPYmplY3RJRChBWElEIGlkKSBvdmVycmlkZSB7IG1faWQgPSBpZDsgfQpAQCAtNjYs
NyArNjYsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlKiB0cmVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWNoZWRUcmVlLmdldCgpOyB9CiAKICAgICBBWElzb2xhdGVkT2JqZWN0KCkgPSBk
ZWZhdWx0OwotICAgIEFYSXNvbGF0ZWRPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJc29sYXRlZFRy
ZWUqLCBBWElEIHBhcmVudElEKTsKKyAgICBBWElzb2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYs
IEFYSXNvbGF0ZWRUcmVlKik7CiAgICAgYm9vbCBpc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGluaXRpYWxpemVBdHRy
aWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYsIGJvb2wgaXNSb290KTsKICAgICB2b2lkIGluaXRpYWxp
emVQbGF0Zm9ybVByb3BlcnRpZXMoY29uc3QgQVhDb3JlT2JqZWN0JiwgYm9vbCBpc1Jvb3QpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDhmYjRkMGJjYWIyMGEzYzFmYzgzOWM2OThhZDQ3
NmQ1NzBmODdmYjQuLjliMjk5ZjcxYWRlMWM5MDI5NjJkYjI1OWM0ZjBjYmM3OTFjMjAzNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTE4MiwzMSArMTgyLDExIEBAIHZvaWQgQVhJc29s
YXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWENvcmVP
YmplY3QqIGF4UGFyCiAgICAgcXVldWVSZW1vdmFsc0FuZFVucmVzb2x2ZWRDaGFuZ2VzKHsgfSk7
CiB9CiAKLUFYSUQgQVhJc29sYXRlZFRyZWU6OnBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVj
dCYgYXhPYmplY3QsIEFYSUQgYXNzdW1lZFBhcmVudElEKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0KLSAgICBhdXRvIHJvbGUgPSBheE9iamVjdC5yb2xlVmFsdWUoKTsKLSAgICBp
ZiAocm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q2VsbCB8fCByb2xlID09IEFjY2Vzc2liaWxp
dHlSb2xlOjpSb3dIZWFkZXIgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Q29sdW1uSGVh
ZGVyKSB7Ci0gICAgICAgIC8vIFVuZm9ydHVuYXRlbHksIHRhYmxlIHJlbGF0aW9uc2hpcHMgZG9u
J3QgYWx3YXlzIGZvbGxvdyB0aGUgdXN1YWwgbW9kZWwgd2UgYnVpbGQgdGhlIGlzb2xhdGVkIHRy
ZWUgd2l0aCAoYSBzaW1wbGUKLSAgICAgICAgLy8gbGl2ZS10cmVlIHdhbGssIGNhbGxpbmcgY2hp
bGRyZW4oKSBhbmQgc2V0dGluZyB0aG9zZSBjaGlsZHJlbiB0byBoYXZlIGEgcGFyZW50IG9mIHRo
ZSBjYWxsZXIgb2YgY2hpbGRyZW4oKSkuCi0gICAgICAgIC8vIE92ZXJ3cml0ZSB0aGUgcGFyZW50
SUQgdG8gYmUgdGhhdCBvZiB0aGUgYWN0dWFsIHBhcmVudC4KLSAgICAgICAgaWYgKGF1dG8qIGFj
dHVhbFBhcmVudCA9IGF4T2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpKSB7Ci0gICAgICAg
ICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgcGFyZW50IHJvdyBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5v
dy4KLSAgICAgICAgICAgIC8vIElmIHdlIGhpdCB0aGlzIG1fbm9kZU1hcC5jb250YWlucyBBU1NF
UlQsIHdlIG1heSBuZWVkIHRvIGNyZWF0ZSBhbiBpc29sYXRlZCBvYmplY3QgZm9yIGBhY3R1YWxQ
YXJlbnRgIGhlcmUgb3IgZWxzZXdoZXJlLgotICAgICAgICAgICAgQVNTRVJUKG1fbm9kZU1hcC5j
b250YWlucyhhY3R1YWxQYXJlbnQtPm9iamVjdElEKCkpKTsKLSAgICAgICAgICAgIEFTU0VSVChh
Y3R1YWxQYXJlbnQtPnJvbGVWYWx1ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpSb3cpOwotICAg
ICAgICAgICAgcmV0dXJuIGFjdHVhbFBhcmVudC0+b2JqZWN0SUQoKTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gYXNzdW1lZFBhcmVudElEOwotfQotCiBBWElzb2xhdGVkVHJlZTo6Tm9k
ZUNoYW5nZSBBWElzb2xhdGVkVHJlZTo6bm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmplY3Qm
IGF4T2JqZWN0LCBBWElEIHBhcmVudElELCBBdHRhY2hXcmFwcGVyIGF0dGFjaFdyYXBwZXIpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gb2JqZWN0ID0gQVhJc29s
YXRlZE9iamVjdDo6Y3JlYXRlKGF4T2JqZWN0LCB0aGlzLCBwYXJlbnRJREZvck9iamVjdChheE9i
amVjdCwgcGFyZW50SUQpKTsKKyAgICBhdXRvIG9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNy
ZWF0ZShheE9iamVjdCwgdGhpcyk7CiAgICAgTm9kZUNoYW5nZSBub2RlQ2hhbmdlIHsgb2JqZWN0
LCBudWxscHRyIH07CiAKICAgICBpZiAoIW9iamVjdC0+b2JqZWN0SUQoKS5pc1ZhbGlkKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGRkYzk3M2YyYWM1NmIzZWMxYWNmZmEwZWYxODRlMzMx
NmQ3NTMxMzkuLjcyY2RkNzBmZjliNTQ1NzU3MDA2OTIzNjkwMTVlNDc3ZWU5NWFlZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0
ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaApAQCAtMzg1LDkgKzM4NSw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJRENh
Y2hlKCkgV1RGX1JFUVVJUkVTX0xPQ0soc19jYWNoZUxvY2spOwogICAgIHN0YXRpYyBIYXNoTWFw
PFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpIFdU
Rl9SRVFVSVJFU19MT0NLKHNfY2FjaGVMb2NrKTsKIAotICAgIC8vIE1ldGhvZHMgaW4gdGhpcyBi
bG9jayBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICAvLyBDb21wdXRlcyB0aGUg
cGFyZW50IElEIG9mIHRoZSBnaXZlbiBvYmplY3QsIHdoaWNoIGlzIGdlbmVyYWxseSB0aGUgImFz
c3VtZWQiIHBhcmVudCBJRCAoYnV0IG5vdCBhbHdheXMsIGxpa2UgaW4gdGhlIGNhc2Ugb2YgdGFi
bGVzKS4KLSAgICBBWElEIHBhcmVudElERm9yT2JqZWN0KEFYQ29yZU9iamVjdCYsIEFYSUQgYXNz
dW1lZFBhcmVudElEKTsKICAgICBlbnVtIGNsYXNzIEF0dGFjaFdyYXBwZXIgOiBib29sIHsgT25N
YWluVGhyZWFkLCBPbkFYVGhyZWFkIH07CiAgICAgTm9kZUNoYW5nZSBub2RlQ2hhbmdlRm9yT2Jq
ZWN0KEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIEF0dGFjaFdyYXBwZXIgPSBBdHRhY2hX
cmFwcGVyOjpPbk1haW5UaHJlYWQpOwogICAgIHZvaWQgY29sbGVjdE5vZGVDaGFuZ2VzRm9yU3Vi
dHJlZShBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElEKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0MjljY2IxMGY4ZGY5
ODdiMzI5ZGQzZWU3ZGI2OTIyMGQ2ZjBhYjM5Li43YzViNTcwMWMzMGE2NmNmMzkyMmE3NzhmMTdl
ZTk2ODYyNGI2NjkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDQtMTkgIEFuZHJlcyBH
b256YWxleiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBmb3IgYWNjZXNz
aWJpbGl0eS9hcmlhLWdyaWQtd2l0aC1hcmlhLW93bnMtcm93cy5odG1sIGluIGlzb2xhdGVkIHRy
ZWUgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTQ5OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTE5NjEzOTg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEt
Z3JpZC13aXRoLWFyaWEtb3ducy1yb3dzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2FyaWEtZ3JpZC13aXRoLWFyaWEtb3ducy1yb3dzLmh0bWw6CisKIDIwMjItMDQtMTkg
IFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBBbHNvIHNraXAg
cmVzaXplLW9ydGhvZ29uYWwtY29udGFpbmluZy1ibG9jay5odG1sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZ3JpZC13aXRoLWFyaWEtb3ducy1yb3dzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1v
d25zLXJvd3MtZXhwZWN0ZWQudHh0CmluZGV4IGVhNzMzYzdiMmFhNjk0NTRkODA2NTcxNTgyYmU4
MjM0MjYwNzgzZGEuLjkyOTUxZGM0MGE5NzhlMzcyYzA3NDRkOWNmODAxMjAzZWEwOWZjMzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1v
d25zLXJvd3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MtZXhwZWN0ZWQudHh0CkBAIC0xLDE1ICsxLDExIEBA
Ci1Gb28KLUJhcgogVGhpcyB0ZXN0cyB0aGF0IGFuIEFSSUEgdGFibGUgY2FuIHVzZSBhcmlhLW93
bnMgZm9yIGl0cyBjZWxscy4KK1BBU1M6IHJvdzEuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgPT09IHRydWUKK1BBU1M6IHJvdzEuY2hpbGRB
dEluZGV4KDApLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCdyb3cxLWNlbGwtMScpKSA9PT0gdHJ1ZQorUEFTUzogY2VsbDEucGFyZW50RWxlbWVu
dCgpLmlzRXF1YWwocm93MSkgPT09IHRydWUKK1BBU1M6IHJvdzEucGFyZW50RWxlbWVudCgpLmlz
RXF1YWwodGFibGUpID09PSB0cnVlCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1Q
QVNTIHJvdzEuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygwLCAwKSkgaXMgdHJ1ZQotUEFTUyByb3cxLmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgncm93MS1jZWxsLTEnKSkg
aXMgdHJ1ZQotUEFTUyBjZWxsMS5wYXJlbnRFbGVtZW50KCkuaXNFcXVhbChyb3cxKSBpcyB0cnVl
Ci1QQVNTIHJvdzEucGFyZW50RWxlbWVudCgpLmlzRXF1YWwodGFibGUpIGlzIHRydWUKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQotCitGb28KK0Jhcgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWdyaWQtd2l0aC1hcmlh
LW93bnMtcm93cy5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWdyaWQtd2l0
aC1hcmlhLW93bnMtcm93cy5odG1sCmluZGV4IDMxMWVkNjZiMmQyMDA3NjhmN2IwYjkzMjc1Y2M1
YmYwZmJlYjAzMDkuLjMzYjFhOTUyY2VmYjc4NDE0ZmY3Mzc2Y2I2ODQzMDhmNzFlOTdkZWYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1v
d25zLXJvd3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZ3JpZC13
aXRoLWFyaWEtb3ducy1yb3dzLmh0bWwKQEAgLTEsMzMgKzEsMzEgQEAKIDwhRE9DVFlQRSBodG1s
PgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgotPHRpdGxlPmFyaWEtc29ydDwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIAog
PGRpdiBhcmlhLWxhYmVsPSJGaWxlcyIgcm9sZT0iZ3JpZCIgdGFiaW5kZXg9IjAiIGFyaWEtcm93
Y291bnQ9IjIiIGFyaWEtY29sY291bnQ9IjIiIGlkPSJ0YWJsZSI+Ci0JPGRpdiByb2xlPSJyb3ci
IGFyaWEtb3ducz0icm93MS1jZWxsLTEgcm93MS1jZWxsLTIiIGlkPSJyb3cxIj48L2Rpdj4KLQk8
ZGl2IGlkPSJyb3cxLWNlbGwtMSIgYXJpYS1yb3dpbmRleD0iMSIgYXJpYS1jb2xpbmRleD0iMSIg
cm9sZT0iZ3JpZGNlbGwiIHRhYmluZGV4PSIwIj5Gb288L2Rpdj4KLQk8ZGl2IGlkPSJyb3cxLWNl
bGwtMiIgYXJpYS1yb3dpbmRleD0iMSIgYXJpYS1jb2xpbmRleD0iMiIgcm9sZT0iZ3JpZGNlbGwi
IHRhYmluZGV4PSIwIj5CYXI8L2Rpdj4KKyAgICA8ZGl2IHJvbGU9InJvdyIgYXJpYS1vd25zPSJy
b3cxLWNlbGwtMSByb3cxLWNlbGwtMiIgaWQ9InJvdzEiPjwvZGl2PgorICAgIDxkaXYgaWQ9InJv
dzEtY2VsbC0xIiBhcmlhLXJvd2luZGV4PSIxIiBhcmlhLWNvbGluZGV4PSIxIiByb2xlPSJncmlk
Y2VsbCIgdGFiaW5kZXg9IjAiPkZvbzwvZGl2PgorICAgIDxkaXYgaWQ9InJvdzEtY2VsbC0yIiBh
cmlhLXJvd2luZGV4PSIxIiBhcmlhLWNvbGluZGV4PSIyIiByb2xlPSJncmlkY2VsbCIgdGFiaW5k
ZXg9IjAiPkJhcjwvZGl2PgogPC9kaXY+CiAKLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMg
dGVzdHMgdGhhdCBhbiBBUklBIHRhYmxlIGNhbiB1c2UgYXJpYS1vd25zIGZvciBpdHMgY2VsbHMu
Iik7CisgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoYXQgYW4gQVJJQSB0YWJsZSBjYW4g
dXNlIGFyaWEtb3ducyBmb3IgaXRzIGNlbGxzLlxuIjsKIAogICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKICAgICAgICAgdmFyIHJvdzEgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInJvdzEiKTsKICAgICAgICAgdmFyIHRhYmxl
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZSIp
CiAgICAgICAgIHZhciBjZWxsMSA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCk7Ci0g
ICAgICAgIHNob3VsZEJlVHJ1ZSgicm93MS5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoInJvdzEu
Y2hpbGRBdEluZGV4KDApLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCdyb3cxLWNlbGwtMScpKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImNl
bGwxLnBhcmVudEVsZW1lbnQoKS5pc0VxdWFsKHJvdzEpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1
ZSgicm93MS5wYXJlbnRFbGVtZW50KCkuaXNFcXVhbCh0YWJsZSkiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgicm93MS5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29s
dW1uQW5kUm93KDAsIDApKSIsICJ0cnVlIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInJv
dzEuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCdyb3cxLWNlbGwtMScpKSIsICJ0cnVlIik7CisgICAgICAgIG91dHB1
dCArPSBleHBlY3QoImNlbGwxLnBhcmVudEVsZW1lbnQoKS5pc0VxdWFsKHJvdzEpIiwgInRydWUi
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgicm93MS5wYXJlbnRFbGVtZW50KCkuaXNFcXVh
bCh0YWJsZSkiLCAidHJ1ZSIpOworCisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQogPC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458060</attachid>
            <date>2022-04-21 07:28:46 -0700</date>
            <delta_ts>2022-04-22 06:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239498-20220421102844.patch</filename>
            <type>text/plain</type>
            <size>22938</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzMDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3ZmRiMTEwODlkNjhh
MTJhNjJjMjQ2YTUxYzQ0NzA5Yzk0YjNjYS4uZjIyODM3Y2JmODg4NzRkMDFiYTkwOTkxYzMyZmI1
ZjgwNTVjNjdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIyLTA0LTIxICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggZm9yIGFj
Y2Vzc2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MuaHRtbCBpbiBpc29sYXRl
ZCB0cmVlIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk0OTgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzkxOTYxMzk4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoIGFuZCBUeWxlciBXaWxjb2NrLgorCisgICAgICAg
IFRlc3Q6IGFjY2Vzc2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MuaHRtbC4K
KworICAgICAgICBXaGVuIGNyZWF0aW5nIEFYSXNvbGF0ZWRPYmplY3RzLCB3ZSB3ZXJlIHBhc3Np
bmcgdGhlIG9iamVjdCBJRCBvZiB0aGUKKyAgICAgICAgcGFyZW50IHRvIHRoZSBjb25zdHJ1Y3Rv
ciBpbiBhIHBhcmVudCB0byBjaGlsZCB0cmF2ZXJzYWwsIGFuZCBzdG9yaW5nCisgICAgICAgIHRo
YXQgcGFyZW50IElEIGluIHRoZSBvYmplY3QuIFRoaXMgYXNzdW1lZCB0aGF0IGFsbCBBWCBvYmpl
Y3RzIGhhdmUgYQorICAgICAgICBwYXJlbnQtY2hpbGQgcmVmbGV4aXZlIHJlbGF0aW9uc2hpcCwg
aS5lLiwgaWYgQSBpcyBhIGNoaWxkIG9mIEIsIEIgaXMKKyAgICAgICAgdGhlIHBhcmVudCBvZiBB
LiBCdXQgdGhhdCBpcyBub3QgdHJ1ZSBpbiBzZXZlcmFsIGNhc2VzIGluIHRoZQorICAgICAgICBh
Y2Nlc3NpYmlsaXR5IGhpZXJhcmNoeS4KKyAgICAgICAgT25lIGV4YW1wbGUgd2hlcmUgdGhlIHBh
cmVudC1jaGlsZCByZWxhdGlvbnNoaXAgaXMgbm90IHJlZmxleGl2ZSBpcyBmb3IgdGFibGUgY2Vs
bHMsIHdoZXJlIGEgY2VsbCBjYW4gYmUgdGhlIGNoaWxkIG9mIGFuIG9iamVjdCB3aXRoIHJvbGUg
Y29sdW1uLCBidXQgaXRzIHBhcmVudCBpcyBhbiBvYmplY3Qgd2l0aCByb2xlIHJvdy4KKyAgICAg
ICAgQW5vdGhlciBjYXNlIGlzIHdoZW4gYXJpYS1vd25zIGlzIHVzZWQuCisgICAgICAgIFRoaXMg
cGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0gYnkgbGV0dGluZyB0aGUgbGl2ZSBvYmplY3QgZGV0ZXJt
aW5lIGl0cworICAgICAgICBvd24gcGFyZW50LCBpbnN0ZWFkIG9mIGhhdmluZyB0aGUgdHJhdmVy
c2FsIGFsZ29yaXRobSBwYXNzIHRoZSBwYXJlbnQgSUQKKyAgICAgICAgdG8gdGhlIEFYSXNvbGF0
ZWRPYmplY3QgY29uc3RydWN0b3IuCisgICAgICAgIEEgcHJldmlvdXMgYXR0ZW1wdCB0byBmaXgg
dGhpcyBwcm9ibGVtIHdhcyBtYWRlIGluCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzYxNTYuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRPYmplY3Q6OkFYSXNvbGF0ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRl
ZE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6
OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKTogUmVuYW1lZC4KKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QVhJc29sYXRlZFRyZWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJl
ZTo6Z2VuZXJhdGVTdWJ0cmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpu
b2RlQ2hhbmdlRm9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpx
dWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OmNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QVhJ
c29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0
ZWRUcmVlOjpwYXJlbnRJREZvck9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OkFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMpOgor
CiAyMDIyLTA0LTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1N0cmVhbWVyXVtXZWJSVENdIE1pbm9yIGNsZWFudXAgaW4gSW5jb21pbmdTb3Vy
Y2VHU3RyZWFtZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNv
bGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKaW5kZXggMTUxNjk0YzI4YTI5
MjE1ZTdlYTJiMjM0ZjQ4YTU2NTJhY2YzMWNkNC4uMTk2ODE0YmU5ODQ4Y2Y5ZDg2M2MwNmI5YTJj
MjAzZDI0ZDA5NzJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTM4LDIzICsz
OCwyOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFYSXNvbGF0ZWRPYmplY3Q6OkFYSXNv
bGF0ZWRPYmplY3QoQVhDb3JlT2JqZWN0JiBvYmplY3QsIEFYSXNvbGF0ZWRUcmVlKiB0cmVlLCBB
WElEIHBhcmVudElEKQorQVhJc29sYXRlZE9iamVjdDo6QVhJc29sYXRlZE9iamVjdChBWENvcmVP
YmplY3QmIGF4T2JqZWN0LCBBWElzb2xhdGVkVHJlZSogdHJlZSkKICAgICA6IG1fY2FjaGVkVHJl
ZSh0cmVlKQotICAgICwgbV9wYXJlbnRJRChwYXJlbnRJRCkKLSAgICAsIG1faWQob2JqZWN0Lm9i
amVjdElEKCkpCisgICAgLCBtX2lkKGF4T2JqZWN0Lm9iamVjdElEKCkpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAobV9pZC5pc1ZhbGlkKCkpCi0gICAgICAgIGluaXRp
YWxpemVBdHRyaWJ1dGVEYXRhKG9iamVjdCwgIXBhcmVudElELmlzVmFsaWQoKSk7Ci0gICAgZWxz
ZSB7CisgICAgQVNTRVJUKGlzPEFjY2Vzc2liaWxpdHlPYmplY3Q+KGF4T2JqZWN0KSk7CisKKyAg
ICBhdXRvKiBheFBhcmVudCA9IGF4T2JqZWN0LnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAg
IG1fcGFyZW50SUQgPSBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDogQVhJRCgpOwor
CisgICAgaWYgKG1faWQuaXNWYWxpZCgpKSB7CisgICAgICAgIGF1dG8gaXNSb290ID0gIWF4UGFy
ZW50ICYmIGF4T2JqZWN0LmlzU2Nyb2xsVmlldygpID8gSXNSb290OjpZZXMgOiBJc1Jvb3Q6Ok5v
OworICAgICAgICBpbml0aWFsaXplUHJvcGVydGllcyhheE9iamVjdCwgaXNSb290KTsKKyAgICB9
IGVsc2UgewogICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBjaXJj
dW1zdGFuY2VzLgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiB9CiAKLVJl
ZjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkT2JqZWN0OjpjcmVhdGUoQVhDb3JlT2JqZWN0
JiBvYmplY3QsIEFYSXNvbGF0ZWRUcmVlKiB0cmVlLCBBWElEIHBhcmVudElEKQorUmVmPEFYSXNv
bGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZShBWENvcmVPYmplY3QmIG9iamVj
dCwgQVhJc29sYXRlZFRyZWUqIHRyZWUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJ
c29sYXRlZE9iamVjdChvYmplY3QsIHRyZWUsIHBhcmVudElEKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQVhJc29sYXRlZE9iamVjdChvYmplY3QsIHRyZWUpKTsKIH0KIAogQVhJc29sYXRl
ZE9iamVjdDo6fkFYSXNvbGF0ZWRPYmplY3QoKQpAQCAtNjcsNyArNzIsNyBAQCB2b2lkIEFYSXNv
bGF0ZWRPYmplY3Q6OmluaXQoKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lk
IEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9iamVjdCYg
Y29yZU9iamVjdCwgYm9vbCBpc1Jvb3QpCit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKEFYQ29yZU9iamVjdCYgY29yZU9iamVjdCwgSXNSb290IGlzUm9vdCkKIHsK
ICAgICBBU1NFUlQoaXM8QWNjZXNzaWJpbGl0eU9iamVjdD4oY29yZU9iamVjdCkpOwogICAgIGF1
dG8mIG9iamVjdCA9IGRvd25jYXN0PEFjY2Vzc2liaWxpdHlPYmplY3Q+KGNvcmVPYmplY3QpOwpA
QCAtNDA4LDcgKzQxMyw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZUF0dHJp
YnV0ZURhdGEoQVhDb3JlT2JqZWN0JiBjb3JlT2JqZWN0LCBib29sIGlzCiAgICAgICAgIHNldE1h
dGhzY3JpcHRzKEFYUHJvcGVydHlOYW1lOjpNYXRoUG9zdHNjcmlwdHMsIG9iamVjdCk7CiAgICAg
fQogCi0gICAgaWYgKGlzUm9vdCkgeworICAgIGlmIChpc1Jvb3QgPT0gSXNSb290OjpZZXMpIHsK
ICAgICAgICAgc2V0T2JqZWN0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OldlYkFyZWEsIG9iamVj
dC53ZWJBcmVhT2JqZWN0KCkpOwogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
U2Vzc2lvbklELCBvYmplY3Quc2Vzc2lvbklEKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RG9jdW1lbnRVUkksIG9iamVjdC5kb2N1bWVudFVS
SSgpLmlzb2xhdGVkQ29weSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCA1NzM3MDVi
NTMwNDliZDkxNTQwYWQ4M2IxMGMzM2FmYjUwYzczYjc2Li5jZDMwMjlkZGIzNzE5ZDE3OTAzNjFj
NDZjMDU5MDI2OWRiZWY1ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOwogY2xhc3MgQVhJc29sYXRlZE9iamVjdCBmaW5h
bCA6IHB1YmxpYyBBWENvcmVPYmplY3QgewogICAgIGZyaWVuZCBjbGFzcyBBWElzb2xhdGVkVHJl
ZTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZShBWENv
cmVPYmplY3QmLCBBWElzb2xhdGVkVHJlZSosIEFYSUQgcGFyZW50SUQpOworICAgIHN0YXRpYyBS
ZWY8QVhJc29sYXRlZE9iamVjdD4gY3JlYXRlKEFYQ29yZU9iamVjdCYsIEFYSXNvbGF0ZWRUcmVl
Kik7CiAgICAgfkFYSXNvbGF0ZWRPYmplY3QoKTsKIAogICAgIHZvaWQgc2V0T2JqZWN0SUQoQVhJ
RCBpZCkgb3ZlcnJpZGUgeyBtX2lkID0gaWQ7IH0KQEAgLTY2LDEyICs2NiwxNCBAQCBwcml2YXRl
OgogICAgIEFYSXNvbGF0ZWRUcmVlKiB0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRUcmVl
LmdldCgpOyB9CiAKICAgICBBWElzb2xhdGVkT2JqZWN0KCkgPSBkZWZhdWx0OwotICAgIEFYSXNv
bGF0ZWRPYmplY3QoQVhDb3JlT2JqZWN0JiwgQVhJc29sYXRlZFRyZWUqLCBBWElEIHBhcmVudElE
KTsKKyAgICBBWElzb2xhdGVkT2JqZWN0KEFYQ29yZU9iamVjdCYsIEFYSXNvbGF0ZWRUcmVlKik7
CiAgICAgYm9vbCBpc0FYSXNvbGF0ZWRPYmplY3RJbnN0YW5jZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIGluaXRpYWxpemVBdHRyaWJ1dGVEYXRhKEFYQ29yZU9i
amVjdCYsIGJvb2wgaXNSb290KTsKLSAgICB2b2lkIGluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRp
ZXMoY29uc3QgQVhDb3JlT2JqZWN0JiwgYm9vbCBpc1Jvb3QpOwogICAgIEFYQ29yZU9iamVjdCog
YXNzb2NpYXRlZEFYT2JqZWN0KCkgY29uc3Q7CiAKKyAgICBlbnVtIGNsYXNzIElzUm9vdCA6IGJv
b2wgeyBZZXMsIE5vIH07CisgICAgdm9pZCBpbml0aWFsaXplUHJvcGVydGllcyhBWENvcmVPYmpl
Y3QmLCBJc1Jvb3QpOworICAgIHZvaWQgaW5pdGlhbGl6ZVBsYXRmb3JtUHJvcGVydGllcyhjb25z
dCBBWENvcmVPYmplY3QmLCBJc1Jvb3QpOworCiAgICAgdm9pZCBzZXRQcm9wZXJ0eShBWFByb3Bl
cnR5TmFtZSwgQVhQcm9wZXJ0eVZhbHVlVmFyaWFudCYmLCBib29sIHNob3VsZFJlbW92ZSA9IGZh
bHNlKTsKICAgICB2b2lkIHNldE9iamVjdFByb3BlcnR5KEFYUHJvcGVydHlOYW1lLCBBWENvcmVP
YmplY3QqKTsKICAgICB2b2lkIHNldE9iamVjdFZlY3RvclByb3BlcnR5KEFYUHJvcGVydHlOYW1l
LCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcAppbmRleCA4ZmI0ZDBiY2FiMjBhM2MxZmM4MzljNjk4YWQ0NzZkNTcwZjg3ZmI0Li4zYTgz
ZTkyYTNlYmFjNmNmZjdlNWYxYzk4MzUxOWU4MTVlNWYzODljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVk
VHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgLy8gRm9yIHRo
aXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0cyBvZiB0aGUgQVhPYmplY3Qg
dHJlZS4KICAgICBhdXRvKiBheFJvb3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShheE9i
amVjdENhY2hlLT5kb2N1bWVudCgpLnZpZXcoKSk7CiAgICAgaWYgKGF4Um9vdCkKLSAgICAgICAg
dHJlZS0+Z2VuZXJhdGVTdWJ0cmVlKCpheFJvb3QsIG51bGxwdHIpOworICAgICAgICB0cmVlLT5n
ZW5lcmF0ZVN1YnRyZWUoKmF4Um9vdCk7CiAgICAgYXV0byogYXhGb2N1cyA9IGF4T2JqZWN0Q2Fj
aGUtPmZvY3VzZWRPYmplY3RGb3JQYWdlKGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50KCkucGFnZSgp
KTsKICAgICBpZiAoYXhGb2N1cykKICAgICAgICAgdHJlZS0+c2V0Rm9jdXNlZE5vZGVJRChheEZv
Y3VzLT5vYmplY3RJRCgpKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBWZWN0b3I8UmVmUHRyPEFYQ29y
ZU9iamVjdD4+IEFYSXNvbGF0ZWRUcmVlOjpvYmplY3RzRm9ySURzKGNvbnN0IFZlY3RvcjxBWElE
PiYgYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OmdlbmVy
YXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBBWENvcmVPYmplY3QqIGF4UGFyZW50
KQordm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhP
YmplY3QpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSJf
cyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTE3NywzNiArMTc3LDE1IEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0
LCBBWENvcmVPYmplY3QqIGF4UGFyCiAgICAgaWYgKCFheE9iamVjdC5vYmplY3RJRCgpLmlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVhJRCBwYXJlbnRJRCA9IGF4UGFyZW50ID8g
YXhQYXJlbnQtPm9iamVjdElEKCkgOiBBWElEKCk7Ci0gICAgY29sbGVjdE5vZGVDaGFuZ2VzRm9y
U3VidHJlZShheE9iamVjdCwgcGFyZW50SUQpOworICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1
YnRyZWUoYXhPYmplY3QpOwogICAgIHF1ZXVlUmVtb3ZhbHNBbmRVbnJlc29sdmVkQ2hhbmdlcyh7
IH0pOwogfQogCi1BWElEIEFYSXNvbGF0ZWRUcmVlOjpwYXJlbnRJREZvck9iamVjdChBWENvcmVP
YmplY3QmIGF4T2JqZWN0LCBBWElEIGFzc3VtZWRQYXJlbnRJRCkKK0FYSXNvbGF0ZWRUcmVlOjpO
b2RlQ2hhbmdlIEFYSXNvbGF0ZWRUcmVlOjpub2RlQ2hhbmdlRm9yT2JqZWN0KEFYQ29yZU9iamVj
dCYgYXhPYmplY3QsIEF0dGFjaFdyYXBwZXIgYXR0YWNoV3JhcHBlcikKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0byByb2xlID0gYXhPYmplY3Qucm9sZVZhbHVlKCk7
Ci0gICAgaWYgKHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNlbGwgfHwgcm9sZSA9PSBBY2Nl
c3NpYmlsaXR5Um9sZTo6Um93SGVhZGVyIHx8IHJvbGUgPT0gQWNjZXNzaWJpbGl0eVJvbGU6OkNv
bHVtbkhlYWRlcikgewotICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5LCB0YWJsZSByZWxhdGlvbnNo
aXBzIGRvbid0IGFsd2F5cyBmb2xsb3cgdGhlIHVzdWFsIG1vZGVsIHdlIGJ1aWxkIHRoZSBpc29s
YXRlZCB0cmVlIHdpdGggKGEgc2ltcGxlCi0gICAgICAgIC8vIGxpdmUtdHJlZSB3YWxrLCBjYWxs
aW5nIGNoaWxkcmVuKCkgYW5kIHNldHRpbmcgdGhvc2UgY2hpbGRyZW4gdG8gaGF2ZSBhIHBhcmVu
dCBvZiB0aGUgY2FsbGVyIG9mIGNoaWxkcmVuKCkpLgotICAgICAgICAvLyBPdmVyd3JpdGUgdGhl
IHBhcmVudElEIHRvIGJlIHRoYXQgb2YgdGhlIGFjdHVhbCBwYXJlbnQuCi0gICAgICAgIGlmIChh
dXRvKiBhY3R1YWxQYXJlbnQgPSBheE9iamVjdC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKSkgewot
ICAgICAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHBhcmVudCByb3cgaGFzIGJlZW4gY3JlYXRl
ZCBieSBub3cuCi0gICAgICAgICAgICAvLyBJZiB3ZSBoaXQgdGhpcyBtX25vZGVNYXAuY29udGFp
bnMgQVNTRVJULCB3ZSBtYXkgbmVlZCB0byBjcmVhdGUgYW4gaXNvbGF0ZWQgb2JqZWN0IGZvciBg
YWN0dWFsUGFyZW50YCBoZXJlIG9yIGVsc2V3aGVyZS4KLSAgICAgICAgICAgIEFTU0VSVChtX25v
ZGVNYXAuY29udGFpbnMoYWN0dWFsUGFyZW50LT5vYmplY3RJRCgpKSk7Ci0gICAgICAgICAgICBB
U1NFUlQoYWN0dWFsUGFyZW50LT5yb2xlVmFsdWUoKSA9PSBBY2Nlc3NpYmlsaXR5Um9sZTo6Um93
KTsKLSAgICAgICAgICAgIHJldHVybiBhY3R1YWxQYXJlbnQtPm9iamVjdElEKCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgcmV0dXJuIGFzc3VtZWRQYXJlbnRJRDsKLX0KLQotQVhJc29sYXRlZFRy
ZWU6Ok5vZGVDaGFuZ2UgQVhJc29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3Jl
T2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgQXR0YWNoV3JhcHBlciBhdHRhY2hXcmFw
cGVyKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0KLSAgICBhdXRvIG9iamVjdCA9
IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZShheE9iamVjdCwgdGhpcywgcGFyZW50SURGb3JPYmpl
Y3QoYXhPYmplY3QsIHBhcmVudElEKSk7CisgICAgYXV0byBvYmplY3QgPSBBWElzb2xhdGVkT2Jq
ZWN0OjpjcmVhdGUoYXhPYmplY3QsIHRoaXMpOwogICAgIE5vZGVDaGFuZ2Ugbm9kZUNoYW5nZSB7
IG9iamVjdCwgbnVsbHB0ciB9OwogCiAgICAgaWYgKCFvYmplY3QtPm9iamVjdElEKCkuaXNWYWxp
ZCgpKSB7CkBAIC0yMjMsOSArMjAyLDkgQEAgQVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2UgQVhJ
c29sYXRlZFRyZWU6Om5vZGVDaGFuZ2VGb3JPYmplY3QoQVhDb3JlT2JqZWN0JiBheE8KICAgICAg
ICAgbm9kZUNoYW5nZS53cmFwcGVyID0gYXhPYmplY3Qud3JhcHBlcigpOwogICAgIH0KIAotICAg
IG1fbm9kZU1hcC5zZXQoYXhPYmplY3Qub2JqZWN0SUQoKSwgUGFyZW50Q2hpbGRyZW5JRHMgeyBw
YXJlbnRJRCwgYXhPYmplY3QuY2hpbGRyZW5JRHMoKSB9KTsKKyAgICBtX25vZGVNYXAuc2V0KGF4
T2JqZWN0Lm9iamVjdElEKCksIFBhcmVudENoaWxkcmVuSURzIHsgbm9kZUNoYW5nZS5pc29sYXRl
ZE9iamVjdC0+cGFyZW50KCksIGF4T2JqZWN0LmNoaWxkcmVuSURzKCkgfSk7CiAKLSAgICBpZiAo
IXBhcmVudElELmlzVmFsaWQoKSkgeworICAgIGlmICghbm9kZUNoYW5nZS5pc29sYXRlZE9iamVj
dC0+cGFyZW50KCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5n
ZUxvZ0xvY2sgfTsKICAgICAgICAgc2V0Um9vdE5vZGUobm9kZUNoYW5nZS5pc29sYXRlZE9iamVj
dC5wdHIoKSk7CiAgICAgfQpAQCAtMjgxLDcgKzI2MCw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6
OnF1ZXVlUmVtb3ZhbHNBbmRVbnJlc29sdmVkQ2hhbmdlcyhjb25zdCBWZWN0b3I8QVhJRD4mIHN1
YnRyCiAgICAgICAgICAgICByZXNvbHZlZEFwcGVuZHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSht
X3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5zaXplKCkpOwogICAgICAgICAgICAgZm9yIChjb25z
dCBhdXRvJiB1bnJlc29sdmVkQXBwZW5kIDogbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMpIHsK
ICAgICAgICAgICAgICAgICBpZiAoYXV0byogYXhPYmplY3QgPSBjYWNoZS0+b2JqZWN0RnJvbUFY
SUQodW5yZXNvbHZlZEFwcGVuZC5rZXkpKQotICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEFw
cGVuZHMudW5jaGVja2VkQXBwZW5kKG5vZGVDaGFuZ2VGb3JPYmplY3QoKmF4T2JqZWN0LCB1bnJl
c29sdmVkQXBwZW5kLnZhbHVlLmZpcnN0LCB1bnJlc29sdmVkQXBwZW5kLnZhbHVlLnNlY29uZCkp
OworICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEFwcGVuZHMudW5jaGVja2VkQXBwZW5kKG5v
ZGVDaGFuZ2VGb3JPYmplY3QoKmF4T2JqZWN0LCB1bnJlc29sdmVkQXBwZW5kLnZhbHVlKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5jbGVh
cigpOwogICAgICAgICB9CkBAIC0yOTMsMTkgKzI3MiwyMiBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVl
OjpxdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMoY29uc3QgVmVjdG9yPEFYSUQ+JiBz
dWJ0cgogICAgIHF1ZXVlUmVtb3ZhbHNMb2NrZWQoc3VidHJlZVJlbW92YWxzKTsKIH0KIAotdm9p
ZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVjdE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmpl
Y3QmIGF4T2JqZWN0LCBBWElEIHBhcmVudElEKQordm9pZCBBWElzb2xhdGVkVHJlZTo6Y29sbGVj
dE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0KQogewogICAgIEFY
VFJBQ0UoIkFYSXNvbGF0ZWRUcmVlOjpjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlIl9zKTsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFNldEZvclNjb3BlIGNvbGxlY3RpbmdO
b2RlQ2hhbmdlcyhtX2lzQ29sbGVjdGluZ05vZGVDaGFuZ2VzLCB0cnVlKTsKLSAgICBtX3VucmVz
b2x2ZWRQZW5kaW5nQXBwZW5kcy5zZXQoYXhPYmplY3Qub2JqZWN0SUQoKSwgc3RkOjptYWtlX3Bh
aXIocGFyZW50SUQsIEF0dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCkpOworICAgIG1fdW5yZXNv
bHZlZFBlbmRpbmdBcHBlbmRzLnNldChheE9iamVjdC5vYmplY3RJRCgpLCBBdHRhY2hXcmFwcGVy
OjpPbk1haW5UaHJlYWQpOwogCiAgICAgYXV0byBheENoaWxkcmVuQ29weSA9IGF4T2JqZWN0LmNo
aWxkcmVuKCk7CiAgICAgYXV0byBheENoaWxkcmVuSURzID0gYXhDaGlsZHJlbkNvcHkubWFwKFsm
XShhdXRvJiBheENoaWxkKSB7Ci0gICAgICAgIGNvbGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUo
KmF4Q2hpbGQsIGF4T2JqZWN0Lm9iamVjdElEKCkpOworICAgICAgICBjb2xsZWN0Tm9kZUNoYW5n
ZXNGb3JTdWJ0cmVlKCpheENoaWxkKTsKICAgICAgICAgcmV0dXJuIGF4Q2hpbGQtPm9iamVjdElE
KCk7CiAgICAgfSk7Ci0gICAgbV9ub2RlTWFwLnNldChheE9iamVjdC5vYmplY3RJRCgpLCBQYXJl
bnRDaGlsZHJlbklEcyB7IHBhcmVudElELCBXVEZNb3ZlKGF4Q2hpbGRyZW5JRHMpIH0pOworCisg
ICAgLy8gVXBkYXRlIHRoZSBtX25vZGVNYXAuCisgICAgYXV0byogYXhQYXJlbnQgPSBheE9iamVj
dC5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBtX25vZGVNYXAuc2V0KGF4T2JqZWN0Lm9i
amVjdElEKCksIFBhcmVudENoaWxkcmVuSURzIHsgYXhQYXJlbnQgPyBheFBhcmVudC0+b2JqZWN0
SUQoKSA6IEFYSUQoKSwgV1RGTW92ZShheENoaWxkcmVuSURzKSB9KTsKIH0KIAogdm9pZCBBWElz
b2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVPYmplY3QmIGF4T2JqZWN0KQpAQCAtMzE0LDE5
ICsyOTYsMTcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZShBWENvcmVPYmplY3Qm
IGF4T2JqZWN0KQogICAgIEFYTE9HKCZheE9iamVjdCk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAotICAgIGF1dG8qIGF4UGFyZW50ID0gYXhPYmplY3QucGFyZW50T2JqZWN0VW5pZ25v
cmVkKCk7Ci0gICAgQVhJRCBwYXJlbnRJRCA9IGF4UGFyZW50ID8gYXhQYXJlbnQtPm9iamVjdElE
KCkgOiBBWElEKCk7CiAgICAgLy8gSWYgd2UgdXBkYXRlIGEgbm9kZSBhcyB0aGUgcmVzdWx0IG9m
IHNvbWUgc2lkZSBlZmZlY3Qgd2hpbGUgY29sbGVjdGluZyBub2RlIGNoYW5nZXMgKGUuZy4gYSBy
b2xlIGNoYW5nZSBmcm9tCiAgICAgLy8gQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRl
Um9sZUFmdGVyQ2hpbGRyZW5DcmVhdGlvbiksIHF1ZXVlIHRoZSBhcHBlbmQgdXAgdG8gYmUgcmVz
b2x2ZWQgd2l0aCB0aGUgcmVzdAogICAgIC8vIG9mIHRoZSBjb2xsZWN0ZWQgY2hhbmdlcy4gVGhp
cyBwcmV2ZW50cyB1cyBmcm9tIGNyZWF0aW5nIHR3byBub2RlIGNoYW5nZXMgZm9yIHRoZSBzYW1l
IG9iamVjdC4KICAgICBpZiAobV9pc0NvbGxlY3RpbmdOb2RlQ2hhbmdlcykgewotICAgICAgICBt
X3VucmVzb2x2ZWRQZW5kaW5nQXBwZW5kcy5zZXQoYXhPYmplY3Qub2JqZWN0SUQoKSwgc3RkOjpt
YWtlX3BhaXIoV1RGTW92ZShwYXJlbnRJRCksIEF0dGFjaFdyYXBwZXI6Ok9uQVhUaHJlYWQpKTsK
KyAgICAgICAgbV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4T2JqZWN0Lm9iamVjdElE
KCksIEF0dGFjaFdyYXBwZXI6Ok9uQVhUaHJlYWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIC8vIE90aGVyd2lzZSwgcmVzb2x2ZSB0aGUgY2hhbmdlIGltbWVkaWF0ZWx5IGFuZCBxdWV1
ZSBpdCB1cC4KICAgICAvLyBJbiBib3RoIGNhc2VzLCB3ZSBjYW4ndCBhdHRhY2ggdGhlIHdyYXBw
ZXIgaW1tZWRpYXRlbHkgb24gdGhlIG1haW4gdGhyZWFkLCBzaW5jZSB0aGUgd3JhcHBlciBjb3Vs
ZCBiZSBpbiB1c2UKICAgICAvLyBvbiB0aGUgQVggdGhyZWFkIChiZWNhdXNlIHRoaXMgZnVuY3Rp
b24gdXBkYXRlcyBhbiBleGlzdGluZyBub2RlKS4KLSAgICBhdXRvIGNoYW5nZSA9IG5vZGVDaGFu
Z2VGb3JPYmplY3QoYXhPYmplY3QsIHBhcmVudElELCBBdHRhY2hXcmFwcGVyOjpPbkFYVGhyZWFk
KTsKKyAgICBhdXRvIGNoYW5nZSA9IG5vZGVDaGFuZ2VGb3JPYmplY3QoYXhPYmplY3QsIEF0dGFj
aFdyYXBwZXI6Ok9uQVhUaHJlYWQpOwogICAgIExvY2tlciBsb2NrZXIgeyBtX2NoYW5nZUxvZ0xv
Y2sgfTsKICAgICBxdWV1ZUNoYW5nZShjaGFuZ2UpOwogfQpAQCAtNDk5LDcgKzQ3OSw3IEBAIHZv
aWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZUNoaWxkcmVuKEFYQ29yZU9iamVjdCYgYXhPYmplY3Qp
CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbmV3IGNoaWxkLCBhZGQgaXQgdG8gdGhlIHRyZWUu
CiAgICAgICAgICAgICBBWExPRyhtYWtlU3RyaW5nKCJBWElEICIsIGF4QW5jZXN0b3ItPm9iamVj
dElEKCkubG9nZ2luZ1N0cmluZygpLCAiIGdhaW5pbmcgbmV3IHN1YnRyZWUsIHN0YXJ0aW5nIGF0
IElEICIsIG5ld0NoaWxkcmVuW2ldLT5vYmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKSwgIjoiKSk7
CiAgICAgICAgICAgICBBWExPRyhuZXdDaGlsZHJlbltpXSk7Ci0gICAgICAgICAgICBjb2xsZWN0
Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpuZXdDaGlsZHJlbltpXSwgYXhBbmNlc3Rvci0+b2JqZWN0
SUQoKSk7CisgICAgICAgICAgICBjb2xsZWN0Tm9kZUNoYW5nZXNGb3JTdWJ0cmVlKCpuZXdDaGls
ZHJlbltpXSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgbV9ub2RlTWFwLnNldChheEFuY2VzdG9y
LT5vYmplY3RJRCgpLCBQYXJlbnRDaGlsZHJlbklEcyB7IG9sZElEcy5wYXJlbnRJRCwgV1RGTW92
ZShuZXdDaGlsZHJlbklEcykgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAppbmRleCBkZGM5NzNmMmFj
NTZiM2VjMWFjZmZhMGVmMTg0ZTMzMTZkNzUzMTM5Li43YWMwMGYyNzg4ZWI3ZWM0NDJmNjU0ZWUz
MDUwMzNjN2UzMTVjOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKQEAgLTM0OSw3ICszNDksNyBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9OwogCi0gICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhD
b3JlT2JqZWN0JiwgQVhDb3JlT2JqZWN0Kik7CisgICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhD
b3JlT2JqZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVOb2RlKEFYQ29yZU9iamVjdCYpOwogICAgIHZv
aWQgdXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CiAgICAgdm9pZCB1cGRhdGVOb2RlUHJv
cGVydHkoQVhDb3JlT2JqZWN0JiwgQVhQcm9wZXJ0eU5hbWUpOwpAQCAtMzg1LDEyICszODUsOSBA
QCBwcml2YXRlOgogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJlZjxBWElz
b2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpIFdURl9SRVFVSVJFU19MT0NLKHNfY2FjaGVMb2Nr
KTsKICAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVl
Pj4mIHRyZWVQYWdlQ2FjaGUoKSBXVEZfUkVRVUlSRVNfTE9DSyhzX2NhY2hlTG9jayk7CiAKLSAg
ICAvLyBNZXRob2RzIGluIHRoaXMgYmxvY2sgYXJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
Ci0gICAgLy8gQ29tcHV0ZXMgdGhlIHBhcmVudCBJRCBvZiB0aGUgZ2l2ZW4gb2JqZWN0LCB3aGlj
aCBpcyBnZW5lcmFsbHkgdGhlICJhc3N1bWVkIiBwYXJlbnQgSUQgKGJ1dCBub3QgYWx3YXlzLCBs
aWtlIGluIHRoZSBjYXNlIG9mIHRhYmxlcykuCi0gICAgQVhJRCBwYXJlbnRJREZvck9iamVjdChB
WENvcmVPYmplY3QmLCBBWElEIGFzc3VtZWRQYXJlbnRJRCk7CiAgICAgZW51bSBjbGFzcyBBdHRh
Y2hXcmFwcGVyIDogYm9vbCB7IE9uTWFpblRocmVhZCwgT25BWFRocmVhZCB9OwotICAgIE5vZGVD
aGFuZ2Ugbm9kZUNoYW5nZUZvck9iamVjdChBWENvcmVPYmplY3QmLCBBWElEIHBhcmVudElELCBB
dHRhY2hXcmFwcGVyID0gQXR0YWNoV3JhcHBlcjo6T25NYWluVGhyZWFkKTsKLSAgICB2b2lkIGNv
bGxlY3ROb2RlQ2hhbmdlc0ZvclN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJlbnRJRCk7
CisgICAgTm9kZUNoYW5nZSBub2RlQ2hhbmdlRm9yT2JqZWN0KEFYQ29yZU9iamVjdCYsIEF0dGFj
aFdyYXBwZXIgPSBBdHRhY2hXcmFwcGVyOjpPbk1haW5UaHJlYWQpOworICAgIHZvaWQgY29sbGVj
dE5vZGVDaGFuZ2VzRm9yU3VidHJlZShBWENvcmVPYmplY3QmKTsKICAgICB2b2lkIHF1ZXVlQ2hh
bmdlKGNvbnN0IE5vZGVDaGFuZ2UmKSBXVEZfUkVRVUlSRVNfTE9DSyhtX2NoYW5nZUxvZ0xvY2sp
OwogICAgIHZvaWQgcXVldWVSZW1vdmFscyhjb25zdCBWZWN0b3I8QVhJRD4mKTsKICAgICB2b2lk
IHF1ZXVlUmVtb3ZhbHNMb2NrZWQoY29uc3QgVmVjdG9yPEFYSUQ+JikgV1RGX1JFUVVJUkVTX0xP
Q0sobV9jaGFuZ2VMb2dMb2NrKTsKQEAgLTQxMyw4ICs0MTAsOCBAQCBwcml2YXRlOgogCiAgICAg
Ly8gT25seSBhY2Nlc3NlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgLy8gVGhlIGtleSBpcyB0
aGUgSUQgb2YgdGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgcmVzb2x2ZWQgaW50byBhbiBtX3BlbmRp
bmdBcHBlbmRzIE5vZGVDaGFuZ2UuCi0gICAgLy8gVGhlIHZhbHVlIHJlcHJlc2VudHMgdGhlIHBh
cmVudCBJRCBvZiB0aGUgb2JqZWN0LCBhbmQgd2hldGhlciB0aGUgd3JhcHBlciBzaG91bGQgYmUg
YXR0YWNoZWQgb24gdGhlIG1haW4gdGhyZWFkIG9yIHRoZSBBWCB0aHJlYWQuCi0gICAgSGFzaE1h
cDxBWElELCBzdGQ6OnBhaXI8QVhJRCwgQXR0YWNoV3JhcHBlcj4+IG1fdW5yZXNvbHZlZFBlbmRp
bmdBcHBlbmRzOworICAgIC8vIFRoZSB2YWx1ZSBpcyB3aGV0aGVyIHRoZSB3cmFwcGVyIHNob3Vs
ZCBiZSBhdHRhY2hlZCBvbiB0aGUgbWFpbiB0aHJlYWQgb3IgdGhlIEFYIHRocmVhZC4KKyAgICBI
YXNoTWFwPEFYSUQsIEF0dGFjaFdyYXBwZXI+IG1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzOwog
ICAgIC8vIE9ubHkgYWNjZXNzZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9pc0Nv
bGxlY3RpbmdOb2RlQ2hhbmdlcyB7IGZhbHNlIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0
ZWRPYmplY3RNYWMubW0KaW5kZXggZDEyZThkMTBiMmM1MWUwYTZlMmQ0MTRiNDRiNzU5YmRkY2Yy
OGUzNC4uZWQxOTQxNTU1ODcwY2E2M2VkMWE5ZTgyODQwZmEzOWJjMTEwMTVmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0
ZWRPYmplY3RNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KQEAgLTMyLDEzICszMiwxMyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVBs
YXRmb3JtUHJvcGVydGllcyhjb25zdCBBWENvcmVPYmplY3QmIG9iamVjdCwgYm9vbCBpc1Jvb3Qp
Cit2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6OmluaXRpYWxpemVQbGF0Zm9ybVByb3BlcnRpZXMoY29u
c3QgQVhDb3JlT2JqZWN0JiBvYmplY3QsIElzUm9vdCBpc1Jvb3QpCiB7CiAgICAgc2V0UHJvcGVy
dHkoQVhQcm9wZXJ0eU5hbWU6Okhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSwgb2JqZWN0
Lmhhc0FwcGxlUERGQW5ub3RhdGlvbkF0dHJpYnV0ZSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6U3BlZWNoSGludCwgb2JqZWN0LnNwZWVjaEhpbnRBdHRyaWJ1dGVWYWx1ZSgp
Lmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6Q2FyZXRC
cm93c2luZ0VuYWJsZWQsIG9iamVjdC5jYXJldEJyb3dzaW5nRW5hYmxlZCgpKTsKIAotICAgIGlm
IChpc1Jvb3QpCisgICAgaWYgKGlzUm9vdCA9PSBJc1Jvb3Q6OlllcykKICAgICAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlByZXZlbnRLZXlib2FyZERPTUV2ZW50RGlzcGF0Y2gsIG9i
amVjdC5wcmV2ZW50S2V5Ym9hcmRET01FdmVudERpc3BhdGNoKCkpOwogCiAgICAgaWYgKG9iamVj
dC5pc1Njcm9sbFZpZXcoKSkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQyOWNjYjEwZjhkZjk4N2IzMjlkZDNlZTdkYjY5
MjIwZDZmMGFiMzkuLmY0YzEyYzI2ZjI0MDk0ODZiZWY4YzU3MDI4OTI0ZGU3NmJjMzkzODggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNC0yMSAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVz
Z18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IGZvciBhY2Nlc3NpYmlsaXR5L2FyaWEtZ3Jp
ZC13aXRoLWFyaWEtb3ducy1yb3dzLmh0bWwgaW4gaXNvbGF0ZWQgdHJlZSBtb2RlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5NDk4CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS85MTk2MTM5OD4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBG
bGVpemFjaCBhbmQgVHlsZXIgV2lsY29jay4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJp
YS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MuaHRtbDoKKwogMjAyMi0wNC0x
OSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEFsc28gc2tp
cCByZXNpemUtb3J0aG9nb25hbC1jb250YWluaW5nLWJsb2NrLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1ncmlkLXdpdGgtYXJpYS1vd25zLXJvd3MtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWdyaWQtd2l0aC1hcmlh
LW93bnMtcm93cy1leHBlY3RlZC50eHQKaW5kZXggZWE3MzNjN2IyYWE2OTQ1NGQ4MDY1NzE1ODJi
ZTgyMzQyNjA3ODNkYS4uOTI5NTFkYzQwYTk3OGUzNzJjMDc0NGQ5Y2Y4MDEyMDNlYTA5ZmMzMyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWdyaWQtd2l0aC1hcmlh
LW93bnMtcm93cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9h
cmlhLWdyaWQtd2l0aC1hcmlhLW93bnMtcm93cy1leHBlY3RlZC50eHQKQEAgLTEsMTUgKzEsMTEg
QEAKLUZvbwotQmFyCiBUaGlzIHRlc3RzIHRoYXQgYW4gQVJJQSB0YWJsZSBjYW4gdXNlIGFyaWEt
b3ducyBmb3IgaXRzIGNlbGxzLgorUEFTUzogcm93MS5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0
YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApKSA9PT0gdHJ1ZQorUEFTUzogcm93MS5jaGls
ZEF0SW5kZXgoMCkuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoJ3JvdzEtY2VsbC0xJykpID09PSB0cnVlCitQQVNTOiBjZWxsMS5wYXJlbnRFbGVt
ZW50KCkuaXNFcXVhbChyb3cxKSA9PT0gdHJ1ZQorUEFTUzogcm93MS5wYXJlbnRFbGVtZW50KCku
aXNFcXVhbCh0YWJsZSkgPT09IHRydWUKIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0K
LVBBU1Mgcm93MS5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDAsIDApKSBpcyB0cnVlCi1QQVNTIHJvdzEuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwoYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCdyb3cxLWNlbGwtMScp
KSBpcyB0cnVlCi1QQVNTIGNlbGwxLnBhcmVudEVsZW1lbnQoKS5pc0VxdWFsKHJvdzEpIGlzIHRy
dWUKLVBBU1Mgcm93MS5wYXJlbnRFbGVtZW50KCkuaXNFcXVhbCh0YWJsZSkgaXMgdHJ1ZQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KK0ZvbworQmFy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZ3JpZC13aXRoLWFy
aWEtb3ducy1yb3dzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FyaWEtZ3JpZC13
aXRoLWFyaWEtb3ducy1yb3dzLmh0bWwKaW5kZXggMzExZWQ2NmIyZDIwMDc2OGY3YjBiOTMyNzVj
YzViZjBmYmViMDMwOS4uMzNiMWE5NTJjZWZiNzg0MTRmZjczNzZjYjY4NDMwOGY3MWU5N2RlZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLWdyaWQtd2l0aC1hcmlh
LW93bnMtcm93cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1ncmlk
LXdpdGgtYXJpYS1vd25zLXJvd3MuaHRtbApAQCAtMSwzMyArMSwzMSBAQAogPCFET0NUWVBFIGh0
bWw+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Ci08dGl0bGU+YXJpYS1zb3J0PC90aXRsZT4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5Pgog
CiA8ZGl2IGFyaWEtbGFiZWw9IkZpbGVzIiByb2xlPSJncmlkIiB0YWJpbmRleD0iMCIgYXJpYS1y
b3djb3VudD0iMiIgYXJpYS1jb2xjb3VudD0iMiIgaWQ9InRhYmxlIj4KLQk8ZGl2IHJvbGU9InJv
dyIgYXJpYS1vd25zPSJyb3cxLWNlbGwtMSByb3cxLWNlbGwtMiIgaWQ9InJvdzEiPjwvZGl2Pgot
CTxkaXYgaWQ9InJvdzEtY2VsbC0xIiBhcmlhLXJvd2luZGV4PSIxIiBhcmlhLWNvbGluZGV4PSIx
IiByb2xlPSJncmlkY2VsbCIgdGFiaW5kZXg9IjAiPkZvbzwvZGl2PgotCTxkaXYgaWQ9InJvdzEt
Y2VsbC0yIiBhcmlhLXJvd2luZGV4PSIxIiBhcmlhLWNvbGluZGV4PSIyIiByb2xlPSJncmlkY2Vs
bCIgdGFiaW5kZXg9IjAiPkJhcjwvZGl2PgorICAgIDxkaXYgcm9sZT0icm93IiBhcmlhLW93bnM9
InJvdzEtY2VsbC0xIHJvdzEtY2VsbC0yIiBpZD0icm93MSI+PC9kaXY+CisgICAgPGRpdiBpZD0i
cm93MS1jZWxsLTEiIGFyaWEtcm93aW5kZXg9IjEiIGFyaWEtY29saW5kZXg9IjEiIHJvbGU9Imdy
aWRjZWxsIiB0YWJpbmRleD0iMCI+Rm9vPC9kaXY+CisgICAgPGRpdiBpZD0icm93MS1jZWxsLTIi
IGFyaWEtcm93aW5kZXg9IjEiIGFyaWEtY29saW5kZXg9IjIiIHJvbGU9ImdyaWRjZWxsIiB0YWJp
bmRleD0iMCI+QmFyPC9kaXY+CiA8L2Rpdj4KIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyB0aGF0IGFuIEFSSUEgdGFibGUgY2FuIHVzZSBhcmlhLW93bnMgZm9yIGl0cyBjZWxs
cy4iKTsKKyAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCBhbiBBUklBIHRhYmxlIGNh
biB1c2UgYXJpYS1vd25zIGZvciBpdHMgY2VsbHMuXG4iOwogCiAgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICB2YXIgcm93MSA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgicm93MSIpOwogICAgICAgICB2YXIgdGFi
bGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxl
IikKICAgICAgICAgdmFyIGNlbGwxID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKTsK
LSAgICAgICAgc2hvdWxkQmVUcnVlKCJyb3cxLmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgicm93
MS5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoJ3JvdzEtY2VsbC0xJykpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgi
Y2VsbDEucGFyZW50RWxlbWVudCgpLmlzRXF1YWwocm93MSkiKTsKLSAgICAgICAgc2hvdWxkQmVU
cnVlKCJyb3cxLnBhcmVudEVsZW1lbnQoKS5pc0VxdWFsKHRhYmxlKSIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJyb3cxLmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JD
b2x1bW5BbmRSb3coMCwgMCkpIiwgInRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
cm93MS5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoJ3JvdzEtY2VsbC0xJykpIiwgInRydWUiKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgiY2VsbDEucGFyZW50RWxlbWVudCgpLmlzRXF1YWwocm93MSkiLCAidHJ1
ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyb3cxLnBhcmVudEVsZW1lbnQoKS5pc0Vx
dWFsKHRhYmxlKSIsICJ0cnVlIik7CisKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9CiA8
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>