<?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>209409</bug_id>
          
          <creation_ts>2020-03-22 19:33:36 -0700</creation_ts>
          <short_desc>Avoid multiple unnecessary updates of the IsolatedTree.</short_desc>
          <delta_ts>2020-03-24 20:49:14 -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>New Bugs</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>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>1632724</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-03-22 19:33:36 -0700</bug_when>
    <thetext>Avoid multiple unnecessary updates of the IsolatedTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632725</commentid>
    <comment_count>1</comment_count>
      <attachid>394238</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-03-22 19:51:43 -0700</bug_when>
    <thetext>Created attachment 394238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632726</commentid>
    <comment_count>2</comment_count>
      <attachid>394238</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2020-03-22 20:20:20 -0700</bug_when>
    <thetext>Comment on attachment 394238
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:-3147
&gt; -    case AXChildrenChanged:

where do we handle the children changed case?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:3129
&gt; +            tree-&gt;updateSubtree(object);

do we need to remake the subtree here? or just remake this specific element attribute. for these attributes, I would think we just need to get the info for this element but leave the children as-is

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:3172
&gt; +                tree-&gt;updateSubtree(*note.first);

childrenChanged should do the updateSubtree, but I think these other ones should just an updateIsolatedObject, that leaves the subtree alone

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp:163
&gt; +        auto child = createSubtree(*axChild, object-&gt;objectID(), attachWrapper, nodeChanges);

instead of creating a sub tree for all the children, can we check if the child already exists in the tree and not remake it here?
presumably if this child had it&apos;s childrenChanged, it would get a notification for this object right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633744</commentid>
    <comment_count>3</comment_count>
      <attachid>394462</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2020-03-24 19:40:48 -0700</bug_when>
    <thetext>Created attachment 394462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633763</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-24 20:48:39 -0700</bug_when>
    <thetext>Committed r258971: &lt;https://trac.webkit.org/changeset/258971&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394462.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1633764</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-24 20:49:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/60857009&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394238</attachid>
            <date>2020-03-22 19:51:43 -0700</date>
            <delta_ts>2020-03-24 19:40:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209409-20200322225142.patch</filename>
            <type>text/plain</type>
            <size>13407</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NmMjQzMDA5YzY3YzEx
MmRmYWM4OTI2NTdhZmY3ZTViNjdkMzEzMy4uZThhNGNkYWMwN2VlNDY4YTc0YjNiMWU0MjFkNGZh
NTFjYjc4MmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTAzLTIyICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBtdWx0
aXBsZSB1bm5lY2Vzc2FyeSB1cGRhdGVzIG9mIHRoZSBJc29sYXRlZFRyZWUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBWE9iamVjdENhY2hlOjpub3Rp
ZmljYXRpb25Qb3N0VGltZXJGaXJlZCB3YXMgdXBkYXRpbmcgdGhlIGlzb2xhdGVkIHRyZWUKKyAg
ICAgICAgaW4gZXZlcnkgc2luZ2xlIG5vdGlmaWNhdGlvbiwgY2F1c2luZyBhIGJpZyBwZXJmb3Jt
YW5jZSBoaXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGZpbHRlcnMgb3V0IHJlcGVhdGVkIG5vdGlm
aWNhdGlvbnMgZm9yIHRoZSBzYW1lIG5vZGUgb3IgZm9yCisgICAgICAgIGFueSBvZiBpdHMgZGVz
Y2VuZGFudHMsIHRodXMgcmVkdWNpbmcgc2lnbmlmaWNhbnRseSB0aGUgbnVtYmVyIG9mIHRpbWVz
CisgICAgICAgIGEgc3VidHJlZSBpcyB1cGRhdGVkLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6Om5v
dGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnBvc3ROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6
cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjpnZW5lcmF0ZUlzb2xhdGVkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWE9i
amVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6YXBwZW5k
SWZOb3RDb250YWluc01hdGNoaW5nKTogSGVscGVyIGZ1bmN0aW9uIHRoYXQgd291bGQgYmV0dGVy
IGJlbG9uZyB0byBXVEY6OlZlY3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlzb2xhdGVk
VHJlZUhpZXJhcmNoeSk6IEJlY2FtZSBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlU3VidHJlZS4KKyAg
ICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBWElzb2xhdGVkVHJlZTo6Y3JlYXRlU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpBWElz
b2xhdGVkVHJlZTo6dXBkYXRlU3VidHJlZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoKKwogMjAyMC0wMy0yMCAgQW5kcmVzIEdvbnphbGV6
ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgSXNvbGF0ZWQgdHJlZSB1cGRhdGVz
IG11c3QgaGFwcGVuIGFmdGVyIEFYT2JqZWN0IGhhcyBmaW5pc2hlZCBoYW5kbGluZyBub3RpZmlj
YXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHAKaW5kZXggMjg4MDM0MDE5NmQxNjlhM2RmMWMwMGFkZmE4Zjk2Zjg0YzRkODJiMi4uYzVmZWM2
NzIzNDVhMTY1MjJhM2RkM2MzYmZjZTU3ZDc5NDk4MDRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xMDI1LDcgKzEwMjUsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVkKCkKICAgICAvLyBJ
biB0ZXN0cywgcG9zdGluZyBub3RpZmljYXRpb25zIGhhcyBhIHRlbmRlbmN5IHRvIGltbWVkaWF0
ZWx5IHF1ZXVlIHVwIG90aGVyIG5vdGlmaWNhdGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHVuZXhw
ZWN0ZWQgYmVoYXZpb3IKICAgICAvLyB3aGVuIHRoZSBub3RpZmljYXRpb24gbGlzdCBpcyBjbGVh
cmVkIGF0IHRoZSBlbmQuIEluc3RlYWQgY29weSB0aGlzIGxpc3QgYXQgdGhlIHN0YXJ0LgogICAg
IGF1dG8gbm90aWZpY2F0aW9ucyA9IFdURk1vdmUobV9ub3RpZmljYXRpb25zVG9Qb3N0KTsKLSAg
ICAKKwogICAgIGZvciAoY29uc3QgYXV0byYgbm90ZSA6IG5vdGlmaWNhdGlvbnMpIHsKICAgICAg
ICAgQVhDb3JlT2JqZWN0KiBvYmogPSBub3RlLmZpcnN0LmdldCgpOwogICAgICAgICBpZiAoIW9i
ai0+b2JqZWN0SUQoKSkKQEAgLTEwNTYsMTIgKzEwNTYsMTIgQEAgdm9pZCBBWE9iamVjdENhY2hl
Ojpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgICAgIGlmIChub3RpZmljYXRpb24g
PT0gQVhDaGlsZHJlbkNoYW5nZWQgJiYgb2JqLT5wYXJlbnRPYmplY3RJZkV4aXN0cygpICYmIG9i
ai0+bGFzdEtub3duSXNJZ25vcmVkVmFsdWUoKSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSkKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZChvYmotPnBhcmVudE9iamVjdCgpKTsK
IAotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgICAgIHVwZGF0
ZUlzb2xhdGVkVHJlZShvYmosIG5vdGlmaWNhdGlvbik7Ci0jZW5kaWYKLQogICAgICAgICBwb3N0
UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqLCBub3RpZmljYXRpb24pOwogICAgIH0KKworI2lmIEVO
QUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCisgICAgdXBkYXRlSXNvbGF0ZWRUcmVl
KG5vdGlmaWNhdGlvbnMpOworI2VuZGlmCiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cGFzc3dv
cmROb3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lk
IEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIERv
Y3VtZW50KiBkb2N1bWVudCwgQQogICAgICAgICAgICAgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIu
c3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfSBlbHNlIHsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElU
WV9JU09MQVRFRF9UUkVFKQotICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUob2JqZWN0LCBub3Rp
ZmljYXRpb24pOworICAgICAgICB1cGRhdGVJc29sYXRlZFRyZWUoKm9iamVjdCwgbm90aWZpY2F0
aW9uKTsKICNlbmRpZgogCiAgICAgICAgIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3Qs
IG5vdGlmaWNhdGlvbik7CkBAIC0xMzc1LDcgKzEzNzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9u
LCBjbwogICAgIH0KIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0g
ICAgdXBkYXRlSXNvbGF0ZWRUcmVlKG9iamVjdCwgQVhTZWxlY3RlZFRleHRDaGFuZ2VkKTsKKyAg
ICB1cGRhdGVJc29sYXRlZFRyZWUoKm9iamVjdCwgQVhTZWxlY3RlZFRleHRDaGFuZ2VkKTsKICNl
bmRpZgogCiAgICAgcG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihvYmplY3QsIGludGVu
dCwgc2VsZWN0aW9uKTsKQEAgLTE0MjUsNyArMTQyNSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihOb2RlKiBub2RlLCBBWFRleHRFZGl0VHlw
ZSB0CiAgICAgfQogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAg
ICB1cGRhdGVJc29sYXRlZFRyZWUob2JqZWN0LCBBWFZhbHVlQ2hhbmdlZCk7CisgICAgdXBkYXRl
SXNvbGF0ZWRUcmVlKCpvYmplY3QsIEFYVmFsdWVDaGFuZ2VkKTsKICNlbmRpZgogCiAgICAgcG9z
dFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgdHlwZSwgdGV4dCwg
cG9zaXRpb24pOwpAQCAtMzA4NCwyNyArMzA4NCw2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVy
Zm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQogfQogICAgIAogI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZX0lTT0xBVEVEX1RSRUUpCi1zdGF0aWMgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZUlz
b2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhJc29sYXRlZFRyZWVJ
RCB0cmVlSUQsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPEFYSXNv
bGF0ZWRUcmVlOjpOb2RlQ2hhbmdlPiYgbm9kZUNoYW5nZXMpCi17Ci0gICAgYXV0byBpc29sYXRl
ZE9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZShvYmplY3QsIHRyZWVJRCwgcGFyZW50
SUQpOwotICAgIGlmIChhdHRhY2hXcmFwcGVyKSB7Ci0gICAgICAgIGlzb2xhdGVkT2JqZWN0LT5h
dHRhY2hQbGF0Zm9ybVdyYXBwZXIob2JqZWN0LndyYXBwZXIoKSk7Ci0gICAgICAgIC8vIFNpbmNl
IHRoaXMgb2JqZWN0IGhhcyBhbHJlYWR5IGFuIGF0dGFjaGVkIHdyYXBwZXIsIHNldCB0aGUgd3Jh
cHBlcgotICAgICAgICAvLyBpbiB0aGUgTm9kZUNoYW5nZSB0byBudWxsIHNvIHRoYXQgaXQgaXMg
bm90IHJlLWF0dGFjaGVkLgotICAgICAgICBub2RlQ2hhbmdlcy5hcHBlbmQoQVhJc29sYXRlZFRy
ZWU6Ok5vZGVDaGFuZ2UoaXNvbGF0ZWRPYmplY3QsIG51bGxwdHIpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICAvLyBTZXQgdGhlIHdyYXBwZXIgaW4gdGhlIE5vZGVDaGFuZ2Ugc28gdGhhdCBpdCBp
cyBzZXQgb24gdGhlIEFYIHRocmVhZC4KLSAgICAgICAgbm9kZUNoYW5nZXMuYXBwZW5kKEFYSXNv
bGF0ZWRUcmVlOjpOb2RlQ2hhbmdlKGlzb2xhdGVkT2JqZWN0LCBvYmplY3Qud3JhcHBlcigpKSk7
Ci0gICAgfQotCi0gICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IG9iamVjdC5jaGlsZHJlbigp
KSB7Ci0gICAgICAgIGF1dG8gc3RhdGljQ2hpbGQgPSBjcmVhdGVJc29sYXRlZFRyZWVIaWVyYXJj
aHkoKmNoaWxkLCB0cmVlSUQsIGlzb2xhdGVkT2JqZWN0LT5vYmplY3RJRCgpLCBhdHRhY2hXcmFw
cGVyLCBub2RlQ2hhbmdlcyk7Ci0gICAgICAgIGlzb2xhdGVkT2JqZWN0LT5hcHBlbmRDaGlsZChz
dGF0aWNDaGlsZC0+b2JqZWN0SUQoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlzb2xhdGVkT2Jq
ZWN0OwotfQotCiBSZWY8QVhJc29sYXRlZFRyZWU+IEFYT2JqZWN0Q2FjaGU6OmdlbmVyYXRlSXNv
bGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTMxMjEsNyArMzEwMCw3IEBA
IFJlZjxBWElzb2xhdGVkVHJlZT4gQVhPYmplY3RDYWNoZTo6Z2VuZXJhdGVJc29sYXRlZFRyZWUo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBECiAgICAgYXV0byogYXhSb290ID0gYXhPYmplY3RDYWNo
ZS0+Z2V0T3JDcmVhdGUoZG9jdW1lbnQudmlldygpKTsKICAgICBpZiAoYXhSb290KSB7CiAgICAg
ICAgIFZlY3RvcjxBWElzb2xhdGVkVHJlZTo6Tm9kZUNoYW5nZT4gbm9kZUNoYW5nZXM7Ci0gICAg
ICAgIGF1dG8gaXNvbGF0ZWRSb290ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpheFJv
b3QsIHRyZWUtPnRyZWVJZGVudGlmaWVyKCksIEludmFsaWRBWElELCB0cnVlLCBub2RlQ2hhbmdl
cyk7CisgICAgICAgIGF1dG8gaXNvbGF0ZWRSb290ID0gdHJlZS0+Y3JlYXRlU3VidHJlZSgqYXhS
b290LCBJbnZhbGlkQVhJRCwgdHJ1ZSwgbm9kZUNoYW5nZXMpOwogICAgICAgICB0cmVlLT5zZXRS
b290Tm9kZShpc29sYXRlZFJvb3QpOwogICAgICAgICB0cmVlLT5hcHBlbmROb2RlQ2hhbmdlcyhu
b2RlQ2hhbmdlcyk7CiAgICAgfQpAQCAtMzEzMyw3ICszMTEyLDcgQEAgUmVmPEFYSXNvbGF0ZWRU
cmVlPiBBWE9iamVjdENhY2hlOjpnZW5lcmF0ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIEQKICAgICByZXR1cm4gbWFrZVJlZigqdHJlZSk7CiB9CiAKLXZvaWQgQVhPYmplY3RD
YWNoZTo6dXBkYXRlSXNvbGF0ZWRUcmVlKEFYQ29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNh
dGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVkVHJl
ZShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewog
ICAgIGlmICghbV9wYWdlSUQpCiAgICAgICAgIHJldHVybjsKQEAgLTMxNDQsMjMgKzMxMjMsNjIg
QEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3JlT2JqZWN0KiBv
YmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGkKIAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7
CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6Ci0gICAgY2FzZSBBWENoaWxkcmVuQ2hh
bmdlZDoKICAgICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVD
aGFuZ2VkOiB7Ci0gICAgICAgIHRyZWUtPnJlbW92ZU5vZGUob2JqZWN0LT5vYmplY3RJRCgpKTsK
LSAgICAgICAgYXV0byogcGFyZW50ID0gb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKLSAgICAgICAg
QVhJRCBwYXJlbnRJRCA9IHBhcmVudCA/IHBhcmVudC0+b2JqZWN0SUQoKSA6IEludmFsaWRBWElE
OwotICAgICAgICBWZWN0b3I8QVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2U+IG5vZGVDaGFuZ2Vz
OwotICAgICAgICBhdXRvIGlzb2xhdGVkT2JqZWN0ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFy
Y2h5KCpvYmplY3QsIHRyZWUtPnRyZWVJZGVudGlmaWVyKCksIHBhcmVudElELCBmYWxzZSwgbm9k
ZUNoYW5nZXMpOwotICAgICAgICB0cmVlLT5hcHBlbmROb2RlQ2hhbmdlcyhub2RlQ2hhbmdlcyk7
CisgICAgICAgIGlmIChvYmplY3Qub2JqZWN0SUQoKSAhPSBJbnZhbGlkQVhJRCkKKyAgICAgICAg
ICAgIHRyZWUtPnVwZGF0ZVN1YnRyZWUob2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KKworLy8gRklYTUU6IHNob3Vs
ZCBiZSBhZGRlZCB0byBXVEY6OlZlY3Rvci4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEY+CitzdGF0aWMgYm9vbCBhcHBlbmRJZk5vdENvbnRhaW5zTWF0Y2hpbmcoVmVjdG9yPFQ+JiB2
ZWN0b3IsIGNvbnN0IFQmIHZhbHVlLCBGIG1hdGNoZXMpCit7CisgICAgaWYgKHZlY3Rvci5maW5k
TWF0Y2hpbmcobWF0Y2hlcykgIT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB2ZWN0b3IuYXBwZW5kKHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBWE9i
amVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQ
dHI8QVhDb3JlT2JqZWN0PiwgQVhOb3RpZmljYXRpb24+PiYgbm90aWZpY2F0aW9ucykKK3sKKyAg
ICBpZiAoIW1fcGFnZUlEKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHRyZWUgPSBBWElz
b2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9wYWdlSUQpOworICAgIGlmICghdHJlZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRmlsdGVyIG91dCBtdWx0aXBsZSBub3RpZmljYXRpb25z
IGZvciB0aGUgc2FtZSBvYmplY3Qgb3IgZm9yIGl0cyBkZXNjZW5kYW50cy4KKyAgICAvLyBUaGlz
IGF2b2lkcyByZW1vdmluZyBhbmQgcmUtY3JlYXRpbmcgdGhlIHNhbWUgc3VidHJlZXMgbXVsdGlw
bGUgdGltZXMuCisgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBhbmNlc3RvcnM7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBub3RlIDogbm90aWZpY2F0aW9ucykgeworICAgICAgICBpZiAo
IW5vdGUuZmlyc3QgfHwgbm90ZS5maXJzdC0+b2JqZWN0SUQoKSA9PSBJbnZhbGlkQVhJRCkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHN3aXRjaCAobm90ZS5zZWNvbmQpIHsKKyAg
ICAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQ6CisgICAgICAgIGNhc2UgQVhDaGlsZHJl
bkNoYW5nZWQ6CisgICAgICAgIGNhc2UgQVhTZWxlY3RlZFRleHRDaGFuZ2VkOgorICAgICAgICBj
YXNlIEFYVmFsdWVDaGFuZ2VkOiB7CisgICAgICAgICAgICBib29sIG5lZWRzVXBkYXRlID0gYXBw
ZW5kSWZOb3RDb250YWluc01hdGNoaW5nKGFuY2VzdG9ycywgbm90ZS5maXJzdCwgWyZub3RlXSAo
Y29uc3QgUmVmUHRyPEFYQ29yZU9iamVjdD4mIGFuY2VzdG9yKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGFuY2VzdG9yLT5pc0FuY2VzdG9yT2ZPYmplY3Qobm90ZS5maXJzdC5nZXQoKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmIChuZWVkc1VwZGF0ZSkKKyAgICAgICAgICAg
ICAgICB0cmVlLT51cGRhdGVTdWJ0cmVlKCpub3RlLmZpcnN0KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KK30KICNlbmRpZgotICAgIAorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmRlZmVy
UmVjb21wdXRlSXNJZ25vcmVkSWZOZWVkZWQoRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAo
IW5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKGVsZW1lbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA5N2YwNzcwYWE2ODA3YTljMzQ1MTM0YWQy
NmU5ZjBjZGUzN2UwZjRjLi42NDRmYmQzN2E1Y2E3YWJkNzk3NmM5YWU2YWI4NzljOWQ3NmY0ZjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAt
MzYwLDcgKzM2MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc29sYXRlZFRyZWVGb2N1c2Vk
T2JqZWN0KE5vZGUqKTsKICAgICBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IGdldE9yQ3JlYXRlSXNv
bGF0ZWRUcmVlKCkgY29uc3Q7CiAgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gZ2VuZXJh
dGVJc29sYXRlZFRyZWUoUGFnZUlkZW50aWZpZXIsIERvY3VtZW50Jik7Ci0gICAgdm9pZCB1cGRh
dGVJc29sYXRlZFRyZWUoQVhDb3JlT2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOworICAgIHZvaWQg
dXBkYXRlSXNvbGF0ZWRUcmVlKEFYQ29yZU9iamVjdCYsIEFYTm90aWZpY2F0aW9uKTsKKyAgICB2
b2lkIHVwZGF0ZUlzb2xhdGVkVHJlZShjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBWENv
cmVPYmplY3Q+LCBBWE5vdGlmaWNhdGlvbj4+Jik7CiAgICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVNlY29uZGFyeUFYVGhyZWFkKCk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmlu
ZGV4IGZkNDQ3ZTU1NGY2NmJmNTc2ODczZDJhODg3MmM2NTBmMDZmMTFkYWQuLjIwM2UyYjExNTZk
NTZmMDI2ZjU4NGI1NmYyNjFhOTkzZGU2NjlkOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAK
QEAgLTE0NSw2ICsxNDUsNDAgQEAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBBWElzb2xh
dGVkVHJlZTo6b2JqZWN0c0ZvcklEcyhWZWN0b3I8QVhJRD4gYXhJRHMpIGMKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitSZWY8QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OmNyZWF0
ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiBheE9iamVjdCwgQVhJRCBwYXJlbnRJRCwgYm9vbCBhdHRh
Y2hXcmFwcGVyLCBWZWN0b3I8Tm9kZUNoYW5nZT4mIG5vZGVDaGFuZ2VzKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byBvYmplY3QgPSBBWElzb2xhdGVkT2JqZWN0Ojpj
cmVhdGUoYXhPYmplY3QsIG1fdHJlZUlELCBwYXJlbnRJRCk7CisgICAgaWYgKGF0dGFjaFdyYXBw
ZXIpIHsKKyAgICAgICAgb2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIoYXhPYmplY3Qud3Jh
cHBlcigpKTsKKyAgICAgICAgLy8gU2luY2UgdGhpcyBvYmplY3QgaGFzIGFscmVhZHkgYW4gYXR0
YWNoZWQgd3JhcHBlciwgc2V0IHRoZSB3cmFwcGVyCisgICAgICAgIC8vIGluIHRoZSBOb2RlQ2hh
bmdlIHRvIG51bGwgc28gdGhhdCBpdCBpcyBub3QgcmUtYXR0YWNoZWQuCisgICAgICAgIG5vZGVD
aGFuZ2VzLmFwcGVuZChOb2RlQ2hhbmdlKG9iamVjdCwgbnVsbHB0cikpOworICAgIH0gZWxzZSB7
CisgICAgICAgIC8vIFNldCB0aGUgd3JhcHBlciBpbiB0aGUgTm9kZUNoYW5nZSBzbyB0aGF0IGl0
IGlzIHNldCBvbiB0aGUgQVggdGhyZWFkLgorICAgICAgICBub2RlQ2hhbmdlcy5hcHBlbmQoTm9k
ZUNoYW5nZShvYmplY3QsIGF4T2JqZWN0LndyYXBwZXIoKSkpOworICAgIH0KKworICAgIGZvciAo
Y29uc3QgYXV0byYgYXhDaGlsZCA6IGF4T2JqZWN0LmNoaWxkcmVuKCkpIHsKKyAgICAgICAgYXV0
byBjaGlsZCA9IGNyZWF0ZVN1YnRyZWUoKmF4Q2hpbGQsIG9iamVjdC0+b2JqZWN0SUQoKSwgYXR0
YWNoV3JhcHBlciwgbm9kZUNoYW5nZXMpOworICAgICAgICBvYmplY3QtPmFwcGVuZENoaWxkKGNo
aWxkLT5vYmplY3RJRCgpKTsKKyAgICB9CisKKyAgICByZXR1cm4gb2JqZWN0OworfQorCit2b2lk
IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYgYXhPYmplY3QpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZW1vdmVOb2RlKGF4T2JqZWN0Lm9i
amVjdElEKCkpOworICAgIGF1dG8qIHBhcmVudCA9IGF4T2JqZWN0LnBhcmVudE9iamVjdCgpOwor
ICAgIEFYSUQgcGFyZW50SUQgPSBwYXJlbnQgPyBwYXJlbnQtPm9iamVjdElEKCkgOiBJbnZhbGlk
QVhJRDsKKyAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gbm9kZUNoYW5nZXM7CisgICAgYXV0byBvYmpl
Y3QgPSBjcmVhdGVTdWJ0cmVlKGF4T2JqZWN0LCBwYXJlbnRJRCwgZmFsc2UsIG5vZGVDaGFuZ2Vz
KTsKKyAgICBhcHBlbmROb2RlQ2hhbmdlcyhub2RlQ2hhbmdlcyk7CisgICAgLy8gRklYTUU6IGFk
ZCB0aGUgbmV3IGNoaWxkIHRvIHRoZSBwYXJlbnQuCit9CisKIFJlZlB0cjxBWElzb2xhdGVkT2Jq
ZWN0PiBBWElzb2xhdGVkVHJlZTo6Zm9jdXNlZFVJRWxlbWVudCgpCiB7CiAgICAgcmV0dXJuIG5v
ZGVGb3JJRChtX2ZvY3VzZWROb2RlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKaW5kZXggMTRkOTFi
NDBjNDdjMWRjNGMwNDdhYmQzMzJhYzEwYWMxYzdiOTk4ZS4uNDhhNmU5NDk2M2E2YTUxYTI0ZTkw
MGEzM2QzMDJmYzgzNzNlNDBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC01MSwxMyArNTEs
MTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVG
b3JQYWdlSUQoUGFnZUlkZW50aWZpZXIpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVRyZWVGb3JQ
YWdlSUQoUGFnZUlkZW50aWZpZXIpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0
cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklEKEFYSXNv
bGF0ZWRUcmVlSUQpOworICAgIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQ
YWdlSUQoUGFnZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKICAgICBBWE9iamVjdENhY2hlKiBheE9iamVj
dENhY2hlKCkgY29uc3QgeyByZXR1cm4gbV9heE9iamVjdENhY2hlOyB9CiAgICAgdm9pZCBzZXRB
WE9iamVjdENhY2hlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpIHsgbV9heE9iamVjdENh
Y2hlID0gYXhPYmplY3RDYWNoZTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFYSXNv
bGF0ZWRPYmplY3Q+IHJvb3ROb2RlKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFYSXNv
bGF0ZWRPYmplY3Q+IGZvY3VzZWRVSUVsZW1lbnQoKTsKKyAgICBSZWZQdHI8QVhJc29sYXRlZE9i
amVjdD4gcm9vdE5vZGUoKTsKKyAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gZm9jdXNlZFVJ
RWxlbWVudCgpOwogICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBub2RlRm9ySUQoQVhJRCkg
Y29uc3Q7CiAgICAgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBub2RlSW5UcmVlRm9y
SUQoQVhJc29sYXRlZFRyZWVJRCwgQVhJRCk7CiAgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmpl
Y3Q+PiBvYmplY3RzRm9ySURzKFZlY3RvcjxBWElEPikgY29uc3Q7CkBAIC02OSw2ICs2OSw5IEBA
IHB1YmxpYzoKICAgICAgICAgTm9kZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJik7CiAgICAgfTsK
IAorICAgIFJlZjxBWElzb2xhdGVkT2JqZWN0PiBjcmVhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYs
IEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPE5vZGVDaGFuZ2U+Jik7
CisgICAgdm9pZCB1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOworCiAgICAgLy8gQ2FsbCBv
biBtYWluIHRocmVhZAogICAgIHZvaWQgYXBwZW5kTm9kZUNoYW5nZXMoY29uc3QgVmVjdG9yPE5v
ZGVDaGFuZ2U+Jik7CiAgICAgLy8gUmVtb3ZlcyB0aGUgZ2l2ZW4gbm9kZSBhbmQgYWxsIGl0cyBk
ZXNjZW5kYW50cy4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394462</attachid>
            <date>2020-03-24 19:40:48 -0700</date>
            <delta_ts>2020-03-24 20:48:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209409-20200324224047.patch</filename>
            <type>text/plain</type>
            <size>21942</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NmMjQzMDA5YzY3YzEx
MmRmYWM4OTI2NTdhZmY3ZTViNjdkMzEzMy4uOTA1N2EzNmQyMGVlNWVjY2Q4MWMwZjQ3OTIyZjUw
NjUwYzc0NGU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDIwLTAzLTI0ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBBdm9pZCBtdWx0
aXBsZSB1bm5lY2Vzc2FyeSB1cGRhdGVzIG9mIHRoZSBJc29sYXRlZFRyZWUuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk0MDkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBWE9iamVjdENhY2hlOjpub3Rp
ZmljYXRpb25Qb3N0VGltZXJGaXJlZCB3YXMgdXBkYXRpbmcgdGhlIGlzb2xhdGVkIHRyZWUKKyAg
ICAgICAgaW4gZXZlcnkgc2luZ2xlIG5vdGlmaWNhdGlvbiwgY2F1c2luZyBhIGJpZyBwZXJmb3Jt
YW5jZSBoaXQuCisgICAgICAgIFRoaXMgY2hhbmdlIGZpbHRlcnMgb3V0IHJlcGVhdGVkIG5vdGlm
aWNhdGlvbnMgZm9yIHRoZSBzYW1lIG5vZGUsIHRodXMKKyAgICAgICAgcmVkdWNpbmcgc2lnbmlm
aWNhbnRseSB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBpc29sYXRlZCB0cmVlIGlzIHVwZGF0ZWQu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6bm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmdlbmVyYXRlSXNvbGF0ZWRUcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVkVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRJZk5vdENvbnRhaW5zTWF0Y2hpbmcpOiBIZWxwZXIg
ZnVuY3Rpb24gdGhhdCBtaWdodCBiZQorICAgICAgICBhZGRlZCB0byBXVEY6OlZlY3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeSk6IEJlY2FtZSBBWElz
b2xhdGVkVHJlZTo6Y3JlYXRlU3VidHJlZQorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhDb3JlT2JqZWN0OjpjaGlsZHJlbklEcyk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQp
OgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6OmdlbmVyYXRlU3VidHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6Y3JlYXRlU3VidHJlZSk6CisgICAgICAg
IChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6dXBkYXRlTm9kZSk6IFVwZGF0ZXMgb25seSB0aGUg
Z2l2ZW4gbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVTdWJ0
cmVlKTogUmVjcmVhdGVzIHRoZSBlbnRpcmUgc3VidHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OkFY
SXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbik6IFVwZGF0ZXMgdGhlIGFzc29jaWF0ZWQgb2Jq
ZWN0LAorICAgICAgICByZWNyZWF0aW5nIG9ubHkgdGhlIGNoaWxkcmVuIHRoYXQgYXJlIGFkZGVk
IGFuZCByZW1vdmluZyB0aGUgb25lcyB0aGF0CisgICAgICAgIGFyZSBubyBsb25nZXIgcHJlc2Vu
dCBpbiB0aGUgQVggdHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpyZW1v
dmVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjpyZW1vdmVTdWJ0cmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRUcmVlOjphcHBlbmROb2RlQ2hhbmdlcyk6
CisgICAgICAgIChXZWJDb3JlOjpBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcyk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaDoK
KwogMjAyMC0wMy0yMCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSXNvbGF0ZWQgdHJlZSB1cGRhdGVzIG11c3QgaGFwcGVuIGFmdGVyIEFYT2JqZWN0
IGhhcyBmaW5pc2hlZCBoYW5kbGluZyBub3RpZmljYXRpb25zLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggMjg4MDM0MDE5NmQxNjlhM2Rm
MWMwMGFkZmE4Zjk2Zjg0YzRkODJiMi4uOWZiZmRhNjhhYjE2YzI0YzQzZGM0ZmFhN2M5ODI4NWVi
N2MwNzQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuY3BwCkBAIC0xMDI1LDcgKzEwMjUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vdGlmaWNh
dGlvblBvc3RUaW1lckZpcmVkKCkKICAgICAvLyBJbiB0ZXN0cywgcG9zdGluZyBub3RpZmljYXRp
b25zIGhhcyBhIHRlbmRlbmN5IHRvIGltbWVkaWF0ZWx5IHF1ZXVlIHVwIG90aGVyIG5vdGlmaWNh
dGlvbnMsIHdoaWNoIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IKICAgICAvLyB3aGVu
IHRoZSBub3RpZmljYXRpb24gbGlzdCBpcyBjbGVhcmVkIGF0IHRoZSBlbmQuIEluc3RlYWQgY29w
eSB0aGlzIGxpc3QgYXQgdGhlIHN0YXJ0LgogICAgIGF1dG8gbm90aWZpY2F0aW9ucyA9IFdURk1v
dmUobV9ub3RpZmljYXRpb25zVG9Qb3N0KTsKLSAgICAKKwogICAgIGZvciAoY29uc3QgYXV0byYg
bm90ZSA6IG5vdGlmaWNhdGlvbnMpIHsKICAgICAgICAgQVhDb3JlT2JqZWN0KiBvYmogPSBub3Rl
LmZpcnN0LmdldCgpOwogICAgICAgICBpZiAoIW9iai0+b2JqZWN0SUQoKSkKQEAgLTEwNTYsMTIg
KzEwNTYsMTIgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJl
ZCgpCiAgICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gQVhDaGlsZHJlbkNoYW5nZWQgJiYgb2Jq
LT5wYXJlbnRPYmplY3RJZkV4aXN0cygpICYmIG9iai0+bGFzdEtub3duSXNJZ25vcmVkVmFsdWUo
KSAhPSBvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKICAgICAgICAgICAgIGNoaWxkcmVu
Q2hhbmdlZChvYmotPnBhcmVudE9iamVjdCgpKTsKIAotI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZ
X0lTT0xBVEVEX1RSRUUpCi0gICAgICAgIHVwZGF0ZUlzb2xhdGVkVHJlZShvYmosIG5vdGlmaWNh
dGlvbik7Ci0jZW5kaWYKLQogICAgICAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqLCBu
b3RpZmljYXRpb24pOwogICAgIH0KKworI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVE
X1RSRUUpCisgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKG5vdGlmaWNhdGlvbnMpOworI2VuZGlmCiB9
CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXJGaXJl
ZCgpCkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmlj
YXRpb24oQVhDb3JlT2JqZWN0KiBvYmplY3QsIERvY3VtZW50KiBkb2N1bWVudCwgQQogICAgICAg
ICAgICAgbV9ub3RpZmljYXRpb25Qb3N0VGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAgfSBl
bHNlIHsKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQotICAgICAgICB1
cGRhdGVJc29sYXRlZFRyZWUob2JqZWN0LCBub3RpZmljYXRpb24pOworICAgICAgICB1cGRhdGVJ
c29sYXRlZFRyZWUoKm9iamVjdCwgbm90aWZpY2F0aW9uKTsKICNlbmRpZgogCiAgICAgICAgIHBv
c3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3QsIG5vdGlmaWNhdGlvbik7CkBAIC0xMzc1LDcg
KzEzNzUsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmlj
YXRpb24oY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBjbwogICAgIH0KIAogI2lmIEVOQUJMRShB
Q0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgdXBkYXRlSXNvbGF0ZWRUcmVlKG9iamVj
dCwgQVhTZWxlY3RlZFRleHRDaGFuZ2VkKTsKKyAgICB1cGRhdGVJc29sYXRlZFRyZWUoKm9iamVj
dCwgQVhTZWxlY3RlZFRleHRDaGFuZ2VkKTsKICNlbmRpZgogCiAgICAgcG9zdFRleHRTdGF0ZUNo
YW5nZU5vdGlmaWNhdGlvbihvYmplY3QsIGludGVudCwgc2VsZWN0aW9uKTsKQEAgLTE0MjUsNyAr
MTQyNSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNh
dGlvbihOb2RlKiBub2RlLCBBWFRleHRFZGl0VHlwZSB0CiAgICAgfQogCiAjaWYgRU5BQkxFKEFD
Q0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICB1cGRhdGVJc29sYXRlZFRyZWUob2JqZWN0
LCBBWFZhbHVlQ2hhbmdlZCk7CisgICAgdXBkYXRlSXNvbGF0ZWRUcmVlKCpvYmplY3QsIEFYVmFs
dWVDaGFuZ2VkKTsKICNlbmRpZgogCiAgICAgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90
aWZpY2F0aW9uKG9iamVjdCwgdHlwZSwgdGV4dCwgcG9zaXRpb24pOwpAQCAtMzA4NCwyNyArMzA4
NCw2IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cGVyZm9ybURlZmVycmVkQ2FjaGVVcGRhdGUoKQog
fQogICAgIAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi1zdGF0aWMg
UmVmPEFYSXNvbGF0ZWRPYmplY3Q+IGNyZWF0ZUlzb2xhdGVkVHJlZUhpZXJhcmNoeShBWENvcmVP
YmplY3QmIG9iamVjdCwgQVhJc29sYXRlZFRyZWVJRCB0cmVlSUQsIEFYSUQgcGFyZW50SUQsIGJv
b2wgYXR0YWNoV3JhcHBlciwgVmVjdG9yPEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hhbmdlPiYgbm9k
ZUNoYW5nZXMpCi17Ci0gICAgYXV0byBpc29sYXRlZE9iamVjdCA9IEFYSXNvbGF0ZWRPYmplY3Q6
OmNyZWF0ZShvYmplY3QsIHRyZWVJRCwgcGFyZW50SUQpOwotICAgIGlmIChhdHRhY2hXcmFwcGVy
KSB7Ci0gICAgICAgIGlzb2xhdGVkT2JqZWN0LT5hdHRhY2hQbGF0Zm9ybVdyYXBwZXIob2JqZWN0
LndyYXBwZXIoKSk7Ci0gICAgICAgIC8vIFNpbmNlIHRoaXMgb2JqZWN0IGhhcyBhbHJlYWR5IGFu
IGF0dGFjaGVkIHdyYXBwZXIsIHNldCB0aGUgd3JhcHBlcgotICAgICAgICAvLyBpbiB0aGUgTm9k
ZUNoYW5nZSB0byBudWxsIHNvIHRoYXQgaXQgaXMgbm90IHJlLWF0dGFjaGVkLgotICAgICAgICBu
b2RlQ2hhbmdlcy5hcHBlbmQoQVhJc29sYXRlZFRyZWU6Ok5vZGVDaGFuZ2UoaXNvbGF0ZWRPYmpl
Y3QsIG51bGxwdHIpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBTZXQgdGhlIHdyYXBwZXIg
aW4gdGhlIE5vZGVDaGFuZ2Ugc28gdGhhdCBpdCBpcyBzZXQgb24gdGhlIEFYIHRocmVhZC4KLSAg
ICAgICAgbm9kZUNoYW5nZXMuYXBwZW5kKEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hhbmdlKGlzb2xh
dGVkT2JqZWN0LCBvYmplY3Qud3JhcHBlcigpKSk7Ci0gICAgfQotCi0gICAgZm9yIChjb25zdCBh
dXRvJiBjaGlsZCA6IG9iamVjdC5jaGlsZHJlbigpKSB7Ci0gICAgICAgIGF1dG8gc3RhdGljQ2hp
bGQgPSBjcmVhdGVJc29sYXRlZFRyZWVIaWVyYXJjaHkoKmNoaWxkLCB0cmVlSUQsIGlzb2xhdGVk
T2JqZWN0LT5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBub2RlQ2hhbmdlcyk7Ci0gICAgICAg
IGlzb2xhdGVkT2JqZWN0LT5hcHBlbmRDaGlsZChzdGF0aWNDaGlsZC0+b2JqZWN0SUQoKSk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGlzb2xhdGVkT2JqZWN0OwotfQotCiBSZWY8QVhJc29sYXRlZFRy
ZWU+IEFYT2JqZWN0Q2FjaGU6OmdlbmVyYXRlSXNvbGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKQEAgLTMxMTksMTIgKzMwOTgsOCBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYT2Jq
ZWN0Q2FjaGU6OmdlbmVyYXRlSXNvbGF0ZWRUcmVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgRAog
ICAgIHRyZWUtPnNldEFYT2JqZWN0Q2FjaGUoYXhPYmplY3RDYWNoZSk7CiAKICAgICBhdXRvKiBh
eFJvb3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShkb2N1bWVudC52aWV3KCkpOwotICAg
IGlmIChheFJvb3QpIHsKLSAgICAgICAgVmVjdG9yPEFYSXNvbGF0ZWRUcmVlOjpOb2RlQ2hhbmdl
PiBub2RlQ2hhbmdlczsKLSAgICAgICAgYXV0byBpc29sYXRlZFJvb3QgPSBjcmVhdGVJc29sYXRl
ZFRyZWVIaWVyYXJjaHkoKmF4Um9vdCwgdHJlZS0+dHJlZUlkZW50aWZpZXIoKSwgSW52YWxpZEFY
SUQsIHRydWUsIG5vZGVDaGFuZ2VzKTsKLSAgICAgICAgdHJlZS0+c2V0Um9vdE5vZGUoaXNvbGF0
ZWRSb290KTsKLSAgICAgICAgdHJlZS0+YXBwZW5kTm9kZUNoYW5nZXMobm9kZUNoYW5nZXMpOwot
ICAgIH0KKyAgICBpZiAoYXhSb290KQorICAgICAgICB0cmVlLT5nZW5lcmF0ZVN1YnRyZWUoKmF4
Um9vdCwgSW52YWxpZEFYSUQsIHRydWUpOwogCiAgICAgYXV0byogYXhGb2N1cyA9IGF4T2JqZWN0
Q2FjaGUtPmZvY3VzZWRPYmplY3QoZG9jdW1lbnQpOwogICAgIGlmIChheEZvY3VzKQpAQCAtMzEz
Myw3ICszMTA4LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWE9iamVjdENhY2hlOjpnZW5lcmF0
ZUlzb2xhdGVkVHJlZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIEQKICAgICByZXR1cm4gbWFrZVJl
ZigqdHJlZSk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dXBkYXRlSXNvbGF0ZWRUcmVlKEFY
Q29yZU9iamVjdCogb2JqZWN0LCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCit2b2lkIEFY
T2JqZWN0Q2FjaGU6OnVwZGF0ZUlzb2xhdGVkVHJlZShBWENvcmVPYmplY3QmIG9iamVjdCwgQVhO
b3RpZmljYXRpb24gbm90aWZpY2F0aW9uKQogewogICAgIGlmICghbV9wYWdlSUQpCiAgICAgICAg
IHJldHVybjsKQEAgLTMxNDQsMjMgKzMxMTksNzEgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp1cGRh
dGVJc29sYXRlZFRyZWUoQVhDb3JlT2JqZWN0KiBvYmplY3QsIEFYTm90aWZpY2F0aW9uIG5vdGkK
IAogICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CiAgICAgY2FzZSBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQ6Ci0gICAgY2FzZSBBWENoaWxkcmVuQ2hhbmdlZDoKICAgICBjYXNlIEFYU2VsZWN0ZWRU
ZXh0Q2hhbmdlZDoKICAgICBjYXNlIEFYVmFsdWVDaGFuZ2VkOiB7Ci0gICAgICAgIHRyZWUtPnJl
bW92ZU5vZGUob2JqZWN0LT5vYmplY3RJRCgpKTsKLSAgICAgICAgYXV0byogcGFyZW50ID0gb2Jq
ZWN0LT5wYXJlbnRPYmplY3QoKTsKLSAgICAgICAgQVhJRCBwYXJlbnRJRCA9IHBhcmVudCA/IHBh
cmVudC0+b2JqZWN0SUQoKSA6IEludmFsaWRBWElEOwotICAgICAgICBWZWN0b3I8QVhJc29sYXRl
ZFRyZWU6Ok5vZGVDaGFuZ2U+IG5vZGVDaGFuZ2VzOwotICAgICAgICBhdXRvIGlzb2xhdGVkT2Jq
ZWN0ID0gY3JlYXRlSXNvbGF0ZWRUcmVlSGllcmFyY2h5KCpvYmplY3QsIHRyZWUtPnRyZWVJZGVu
dGlmaWVyKCksIHBhcmVudElELCBmYWxzZSwgbm9kZUNoYW5nZXMpOwotICAgICAgICB0cmVlLT5h
cHBlbmROb2RlQ2hhbmdlcyhub2RlQ2hhbmdlcyk7CisgICAgICAgIGlmIChvYmplY3Qub2JqZWN0
SUQoKSAhPSBJbnZhbGlkQVhJRCkKKyAgICAgICAgICAgIHRyZWUtPnVwZGF0ZU5vZGUob2JqZWN0
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIH0KKworLy8gRklYTUU6IHNob3VsZCBiZSBhZGRlZCB0byBXVEY6OlZlY3Rvci4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CitzdGF0aWMgYm9vbCBhcHBlbmRJZk5vdENv
bnRhaW5zTWF0Y2hpbmcoVmVjdG9yPFQ+JiB2ZWN0b3IsIGNvbnN0IFQmIHZhbHVlLCBGIG1hdGNo
ZXMpCit7CisgICAgaWYgKHZlY3Rvci5maW5kTWF0Y2hpbmcobWF0Y2hlcykgIT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB2ZWN0b3IuYXBwZW5kKHZhbHVlKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBWE9iamVjdENhY2hlOjp1cGRhdGVJc29sYXRlZFRyZWUo
Y29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxSZWZQdHI8QVhDb3JlT2JqZWN0PiwgQVhOb3RpZmljYXRp
b24+PiYgbm90aWZpY2F0aW9ucykKK3sKKyAgICBpZiAoIW1fcGFnZUlEKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCgqbV9w
YWdlSUQpOworICAgIGlmICghdHJlZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmlsdGVy
IG91dCBtdWx0aXBsZSBub3RpZmljYXRpb25zIGZvciB0aGUgc2FtZSBvYmplY3QuIFRoaXMgYXZv
aWRzCisgICAgLy8gdXBkYXRpbmcgdGhlIGlzb2xhdGVkIHRyZWUgbXVsdGlwbGUgdGltZXMgdW5u
ZWNlc3NhcmlseS4KKyAgICBWZWN0b3I8c3RkOjpwYWlyPFJlZlB0cjxBWENvcmVPYmplY3Q+LCBB
WE5vdGlmaWNhdGlvbj4+IGZpbHRlcmVkTm90aWZpY2F0aW9uczsKKyAgICBmb3IgKGNvbnN0IGF1
dG8mIG5vdGlmaWNhdGlvbiA6IG5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgaWYgKCFub3RpZmlj
YXRpb24uZmlyc3QgfHwgbm90aWZpY2F0aW9uLmZpcnN0LT5vYmplY3RJRCgpID09IEludmFsaWRB
WElEKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgc3dpdGNoIChub3RpZmljYXRp
b24uc2Vjb25kKSB7CisgICAgICAgIGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgorICAgICAg
ICBjYXNlIEFYU2VsZWN0ZWRUZXh0Q2hhbmdlZDoKKyAgICAgICAgY2FzZSBBWFZhbHVlQ2hhbmdl
ZDogeworICAgICAgICAgICAgYm9vbCBuZWVkc1VwZGF0ZSA9IGFwcGVuZElmTm90Q29udGFpbnNN
YXRjaGluZyhmaWx0ZXJlZE5vdGlmaWNhdGlvbnMsIG5vdGlmaWNhdGlvbiwgWyZub3RpZmljYXRp
b25dIChjb25zdCBzdGQ6OnBhaXI8UmVmUHRyPEFYQ29yZU9iamVjdD4sIEFYTm90aWZpY2F0aW9u
PiYgbm90ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBub3RlLnNlY29uZCA9PSBub3RpZmlj
YXRpb24uc2Vjb25kICYmIG5vdGUuZmlyc3QuZ2V0KCkgPT0gbm90aWZpY2F0aW9uLmZpcnN0Lmdl
dCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmIChuZWVkc1VwZGF0ZSkKKyAg
ICAgICAgICAgICAgICB0cmVlLT51cGRhdGVOb2RlKCpub3RpZmljYXRpb24uZmlyc3QpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBBWENoaWxkcmVuQ2hhbmdl
ZDogeworICAgICAgICAgICAgYm9vbCBuZWVkc1VwZGF0ZSA9IGFwcGVuZElmTm90Q29udGFpbnNN
YXRjaGluZyhmaWx0ZXJlZE5vdGlmaWNhdGlvbnMsIG5vdGlmaWNhdGlvbiwgWyZub3RpZmljYXRp
b25dIChjb25zdCBzdGQ6OnBhaXI8UmVmUHRyPEFYQ29yZU9iamVjdD4sIEFYTm90aWZpY2F0aW9u
PiYgbm90ZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBub3RlLnNlY29uZCA9PSBub3RpZmlj
YXRpb24uc2Vjb25kICYmIG5vdGUuZmlyc3QuZ2V0KCkgPT0gbm90aWZpY2F0aW9uLmZpcnN0Lmdl
dCgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGlmIChuZWVkc1VwZGF0ZSkKKyAg
ICAgICAgICAgICAgICB0cmVlLT51cGRhdGVDaGlsZHJlbigqbm90aWZpY2F0aW9uLmZpcnN0KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KICNlbmRpZgotICAgIAorCiB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmRlZmVyUmVjb21wdXRlSXNJZ25vcmVkSWZOZWVkZWQoRWxlbWVudCogZWxl
bWVudCkKIHsKICAgICBpZiAoIW5vZGVBbmRSZW5kZXJlckFyZVZhbGlkKGVsZW1lbnQpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAppbmRleCA5N2YwNzcw
YWE2ODA3YTljMzQ1MTM0YWQyNmU5ZjBjZGUzN2UwZjRjLi42NDRmYmQzN2E1Y2E3YWJkNzk3NmM5
YWU2YWI4NzljOWQ3NmY0ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaApAQCAtMzYwLDcgKzM2MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJ
c29sYXRlZFRyZWVGb2N1c2VkT2JqZWN0KE5vZGUqKTsKICAgICBSZWZQdHI8QVhJc29sYXRlZFRy
ZWU+IGdldE9yQ3JlYXRlSXNvbGF0ZWRUcmVlKCkgY29uc3Q7CiAgICAgc3RhdGljIFJlZjxBWElz
b2xhdGVkVHJlZT4gZ2VuZXJhdGVJc29sYXRlZFRyZWUoUGFnZUlkZW50aWZpZXIsIERvY3VtZW50
Jik7Ci0gICAgdm9pZCB1cGRhdGVJc29sYXRlZFRyZWUoQVhDb3JlT2JqZWN0KiwgQVhOb3RpZmlj
YXRpb24pOworICAgIHZvaWQgdXBkYXRlSXNvbGF0ZWRUcmVlKEFYQ29yZU9iamVjdCYsIEFYTm90
aWZpY2F0aW9uKTsKKyAgICB2b2lkIHVwZGF0ZUlzb2xhdGVkVHJlZShjb25zdCBWZWN0b3I8c3Rk
OjpwYWlyPFJlZlB0cjxBWENvcmVPYmplY3Q+LCBBWE5vdGlmaWNhdGlvbj4+Jik7CiAgICAgc3Rh
dGljIHZvaWQgaW5pdGlhbGl6ZVNlY29uZGFyeUFYVGhyZWFkKCk7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaAppbmRleCA4ZjU1NzA4ZmExNzRhMjk3MmQ2ZjJhMjNiYjZhYjhmZmRhOGRh
YzM2Li40NTQ3OGNlOWVjYTU5YmQyNTRiMDRmNGJiYWFkNTBhOTE1N2RjMmRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3RJbnRlcmZhY2UuaApAQCAtOTA0LDEwICs5MDQsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHRleHRDaGFuZ2Vk
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpID0gMDsK
KwogICAgIHZpcnR1YWwgY29uc3QgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
bihib29sIHVwZGF0ZUNoaWxkcmVuSWZOZWVkZWQgPSB0cnVlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkcmVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChBWENvcmVP
YmplY3QqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGluc2VydENoaWxkKEFYQ29yZU9iamVjdCos
IHVuc2lnbmVkKSA9IDA7CisgICAgVmVjdG9yPEFYSUQ+IGNoaWxkcmVuSURzKCk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlQXR0cmlidXRlUm9sZSgpIGNvbnN0ID0gMDsKIApAQCAt
MTIwMSw2ICsxMjAzLDE0IEBAIGlubGluZSB2b2lkIEFYQ29yZU9iamVjdDo6ZGV0YWNoV3JhcHBl
cihBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGUgZGV0YWNobWVudFR5CiB9CiAjZW5kaWYKIAor
aW5saW5lIFZlY3RvcjxBWElEPiBBWENvcmVPYmplY3Q6OmNoaWxkcmVuSURzKCkKK3sKKyAgICBW
ZWN0b3I8QVhJRD4gY2hpbGRyZW5JRHM7CisgICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNo
aWxkcmVuKCkpCisgICAgICAgIGNoaWxkcmVuSURzLmFwcGVuZChjaGlsZC0+b2JqZWN0SUQoKSk7
CisgICAgcmV0dXJuIGNoaWxkcmVuSURzOworfQorCiBuYW1lc3BhY2UgQWNjZXNzaWJpbGl0eSB7
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEY+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5j
cHAKaW5kZXggZmQ0NDdlNTU0ZjY2YmY1NzY4NzNkMmE4ODcyYzY1MGYwNmYxMWRhZC4uNjY2ZWI2
MjdlZGVjMDUyNDFhOTdjMDYyMDIzZmY2NTBlYzUyNzU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92ZVRyZWVG
b3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgICAgICBhdXRvJiB0cmVlIHsgKm9w
dGlvbmFsVHJlZSB9OwogCiAgICAgICAgIExvY2tIb2xkZXIgdHJlZUxvY2tlciB7IHRyZWUtPm1f
Y2hhbmdlTG9nTG9jayB9OwotICAgICAgICB0cmVlLT5tX3BlbmRpbmdSZW1vdmFscy5hcHBlbmQo
dHJlZS0+bV9yb290Tm9kZUlEKTsKKyAgICAgICAgdHJlZS0+bV9wZW5kaW5nU3VidHJlZVJlbW92
YWxzLmFwcGVuZCh0cmVlLT5tX3Jvb3ROb2RlSUQpOwogICAgICAgICB0cmVlLT5zZXRBWE9iamVj
dENhY2hlKG51bGxwdHIpOwogICAgICAgICB0cmVlTG9ja2VyLnVubG9ja0Vhcmx5KCk7CiAKQEAg
LTE0NSw2ICsxNDUsMTAyIEBAIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gQVhJc29sYXRl
ZFRyZWU6Om9iamVjdHNGb3JJRHMoVmVjdG9yPEFYSUQ+IGF4SURzKSBjCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAordm9pZCBBWElzb2xhdGVkVHJlZTo6Z2VuZXJhdGVTdWJ0cmVlKEFYQ29yZU9i
amVjdCYgYXhPYmplY3QsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlcikKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFZlY3RvcjxOb2RlQ2hhbmdlPiBub2RlQ2hh
bmdlczsKKyAgICBhdXRvIG9iamVjdCA9IGNyZWF0ZVN1YnRyZWUoYXhPYmplY3QsIHBhcmVudElE
LCBhdHRhY2hXcmFwcGVyLCBub2RlQ2hhbmdlcyk7CisgICAgYXBwZW5kTm9kZUNoYW5nZXMobm9k
ZUNoYW5nZXMpOworCisgICAgaWYgKHBhcmVudElEID09IEludmFsaWRBWElEKQorICAgICAgICBz
ZXRSb290Tm9kZShvYmplY3QpOworICAgIC8vIEZJWE1FOiBlbHNlIGF0dGFjaCB0aGUgbmV3bHkg
Y3JlYXRlZCBzdWJ0cmVlIHRvIGl0cyBwYXJlbnQuCit9CisKK1JlZjxBWElzb2xhdGVkT2JqZWN0
PiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0LCBB
WElEIHBhcmVudElELCBib29sIGF0dGFjaFdyYXBwZXIsIFZlY3RvcjxOb2RlQ2hhbmdlPiYgbm9k
ZUNoYW5nZXMpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIG9iamVj
dCA9IEFYSXNvbGF0ZWRPYmplY3Q6OmNyZWF0ZShheE9iamVjdCwgbV90cmVlSUQsIHBhcmVudElE
KTsKKyAgICBpZiAoYXR0YWNoV3JhcHBlcikgeworICAgICAgICBvYmplY3QtPmF0dGFjaFBsYXRm
b3JtV3JhcHBlcihheE9iamVjdC53cmFwcGVyKCkpOworICAgICAgICAvLyBTaW5jZSB0aGlzIG9i
amVjdCBoYXMgYWxyZWFkeSBhbiBhdHRhY2hlZCB3cmFwcGVyLCBzZXQgdGhlIHdyYXBwZXIKKyAg
ICAgICAgLy8gaW4gdGhlIE5vZGVDaGFuZ2UgdG8gbnVsbCBzbyB0aGF0IGl0IGlzIG5vdCByZS1h
dHRhY2hlZC4KKyAgICAgICAgbm9kZUNoYW5nZXMuYXBwZW5kKE5vZGVDaGFuZ2Uob2JqZWN0LCBu
dWxscHRyKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gU2V0IHRoZSB3cmFwcGVyIGluIHRo
ZSBOb2RlQ2hhbmdlIHNvIHRoYXQgaXQgaXMgc2V0IG9uIHRoZSBBWCB0aHJlYWQuCisgICAgICAg
IG5vZGVDaGFuZ2VzLmFwcGVuZChOb2RlQ2hhbmdlKG9iamVjdCwgYXhPYmplY3Qud3JhcHBlcigp
KSk7CisgICAgfQorCisgICAgZm9yIChjb25zdCBhdXRvJiBheENoaWxkIDogYXhPYmplY3QuY2hp
bGRyZW4oKSkgeworICAgICAgICBhdXRvIGNoaWxkID0gY3JlYXRlU3VidHJlZSgqYXhDaGlsZCwg
b2JqZWN0LT5vYmplY3RJRCgpLCBhdHRhY2hXcmFwcGVyLCBub2RlQ2hhbmdlcyk7CisgICAgICAg
IG9iamVjdC0+YXBwZW5kQ2hpbGQoY2hpbGQtPm9iamVjdElEKCkpOworICAgIH0KKworICAgIHJl
dHVybiBvYmplY3Q7Cit9CisKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnVwZGF0ZU5vZGUoQVhDb3Jl
T2JqZWN0JiBheE9iamVjdCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFY
SUQgYXhJRCA9IGF4T2JqZWN0Lm9iamVjdElEKCk7CisgICAgYXV0byogYXhQYXJlbnQgPSBheE9i
amVjdC5wYXJlbnRPYmplY3QoKTsKKyAgICBBWElEIHBhcmVudElEID0gYXhQYXJlbnQgPyBheFBh
cmVudC0+b2JqZWN0SUQoKSA6IEludmFsaWRBWElEOworCisgICAgaWYgKGF1dG8gb2JqZWN0ID0g
bm9kZUZvcklEKGF4SUQpKSB7CisgICAgICAgIEFTU0VSVChvYmplY3QtPm9iamVjdElEKCkgPT0g
YXhJRCk7CisgICAgICAgIGF1dG8gbmV3T2JqZWN0ID0gQVhJc29sYXRlZE9iamVjdDo6Y3JlYXRl
KGF4T2JqZWN0LCBtX3RyZWVJRCwgcGFyZW50SUQpOworCisgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CisgICAgICAgIC8vIFRoZSBuZXcgb2JqZWN0IHNob3Vs
ZCBoYXZlIHRoZSBzYW1lIGNoaWxkcmVuIGFzIHRoZSBvbGQgb25lLgorICAgICAgICBuZXdPYmpl
Y3QtPm1fY2hpbGRyZW5JRHMgPSBvYmplY3QtPm1fY2hpbGRyZW5JRHM7CisgICAgICAgIC8vIFJl
bW92ZSB0aGUgb2xkIG9iamVjdCBhbmQgc2V0IHRoZSBuZXcgb25lIHRvIGJlIHVwZGF0ZWQgb24g
dGhlIEFYIHRocmVhZC4KKyAgICAgICAgbV9wZW5kaW5nTm9kZVJlbW92YWxzLmFwcGVuZChheElE
KTsKKyAgICAgICAgbV9wZW5kaW5nQXBwZW5kcy5hcHBlbmQoTm9kZUNoYW5nZShuZXdPYmplY3Qs
IGF4T2JqZWN0LndyYXBwZXIoKSkpOworICAgIH0KK30KKwordm9pZCBBWElzb2xhdGVkVHJlZTo6
dXBkYXRlU3VidHJlZShBWENvcmVPYmplY3QmIGF4T2JqZWN0KQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgcmVtb3ZlU3VidHJlZShheE9iamVjdC5vYmplY3RJRCgpKTsKKyAg
ICBhdXRvKiBheFBhcmVudCA9IGF4T2JqZWN0LnBhcmVudE9iamVjdCgpOworICAgIEFYSUQgcGFy
ZW50SUQgPSBheFBhcmVudCA/IGF4UGFyZW50LT5vYmplY3RJRCgpIDogSW52YWxpZEFYSUQ7Cisg
ICAgZ2VuZXJhdGVTdWJ0cmVlKGF4T2JqZWN0LCBwYXJlbnRJRCwgZmFsc2UpOworfQorCit2b2lk
IEFYSXNvbGF0ZWRUcmVlOjp1cGRhdGVDaGlsZHJlbihBWENvcmVPYmplY3QmIGF4T2JqZWN0KQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVhJRCBheE9iamVjdElEID0gYXhP
YmplY3Qub2JqZWN0SUQoKTsKKyAgICBhdXRvIG9iamVjdCA9IG5vZGVGb3JJRChheE9iamVjdElE
KTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOyAvLyBub3RoaW5nIHRvIHVwZGF0
ZS4KKworICAgIGNvbnN0IGF1dG8mIGF4Q2hpbGRyZW4gPSBheE9iamVjdC5jaGlsZHJlbigpOwor
ICAgIGF1dG8gYXhDaGlsZHJlbklEcyA9IGF4T2JqZWN0LmNoaWxkcmVuSURzKCk7CisKKyAgICBM
b2NrSG9sZGVyIGxvY2tlciB7IG1fY2hhbmdlTG9nTG9jayB9OworICAgIGF1dG8gcmVtb3ZhbHMg
PSBvYmplY3QtPm1fY2hpbGRyZW5JRHM7CisgICAgLy8gTWFrZSB0aGUgY2hpbGRyZW4gSURzIG9m
IHRoZSBpc29sYXRlZCBvYmplY3QgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIEFYT2JqZWN0J3MuCisg
ICAgb2JqZWN0LT5tX2NoaWxkcmVuSURzID0gYXhDaGlsZHJlbklEczsKKyAgICBsb2NrZXIudW5s
b2NrRWFybHkoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXhDaGlsZHJlbklEcy5z
aXplKCk7ICsraSkgeworICAgICAgICBzaXplX3QgaW5kZXggPSByZW1vdmFscy5maW5kKGF4Q2hp
bGRyZW5JRHNbaV0pOworICAgICAgICBpZiAoaW5kZXggIT0gbm90Rm91bmQpCisgICAgICAgICAg
ICByZW1vdmFscy5yZW1vdmUoaW5kZXgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgaXMgYSBuZXcgY2hpbGQsIGFkZCBpdCB0byB0aGUgdHJlZS4KKyAgICAgICAgICAgIGdl
bmVyYXRlU3VidHJlZSgqYXhDaGlsZHJlbltpXSwgYXhPYmplY3RJRCwgZmFsc2UpOworICAgICAg
ICB9CisgICAgfQorCisgICAgLy8gV2hhdCBpcyBsZWZ0IGluIHJlbW92YWxzIGFyZSB0aGUgSURz
IHRoYXQgYXJlIG5vIGxvbmdlciBjaGlsZHJlbiBvZgorICAgIC8vIGF4T2JqZWN0LiBUaHVzLCBy
ZW1vdmUgdGhlbSBmcm9tIHRoZSB0cmVlLgorICAgIGZvciAoY29uc3QgQVhJRCYgY2hpbGRJRCA6
IHJlbW92YWxzKQorICAgICAgICByZW1vdmVTdWJ0cmVlKGNoaWxkSUQpOworfQorCiBSZWZQdHI8
QVhJc29sYXRlZE9iamVjdD4gQVhJc29sYXRlZFRyZWU6OmZvY3VzZWRVSUVsZW1lbnQoKQogewog
ICAgIHJldHVybiBub2RlRm9ySUQobV9mb2N1c2VkTm9kZUlEKTsKQEAgLTE4OCwxOCArMjg0LDIz
IEBAIHZvaWQgQVhJc29sYXRlZFRyZWU6OnNldEZvY3VzZWROb2RlSUQoQVhJRCBheElEKQogICAg
IExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07CiAgICAgbV9wZW5kaW5nRm9j
dXNlZE5vZGVJRCA9IGF4SUQ7CiB9Ci0gICAgCisKIHZvaWQgQVhJc29sYXRlZFRyZWU6OnJlbW92
ZU5vZGUoQVhJRCBheElEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dM
b2NrIH07Ci0gICAgbV9wZW5kaW5nUmVtb3ZhbHMuYXBwZW5kKGF4SUQpOworICAgIG1fcGVuZGlu
Z05vZGVSZW1vdmFscy5hcHBlbmQoYXhJRCk7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OmFw
cGVuZE5vZGVDaGFuZ2VzKGNvbnN0IFZlY3RvcjxOb2RlQ2hhbmdlPiYgY2hhbmdlcykKK3ZvaWQg
QVhJc29sYXRlZFRyZWU6OnJlbW92ZVN1YnRyZWUoQVhJRCBheElEKQogewogICAgIExvY2tIb2xk
ZXIgbG9ja2VyIHsgbV9jaGFuZ2VMb2dMb2NrIH07Ci0gICAgZm9yIChjb25zdCBhdXRvJiBub2Rl
Q2hhbmdlIDogY2hhbmdlcykKLSAgICAgICAgbV9wZW5kaW5nQXBwZW5kcy5hcHBlbmQobm9kZUNo
YW5nZSk7CisgICAgbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLmFwcGVuZChheElEKTsKK30KKwor
dm9pZCBBWElzb2xhdGVkVHJlZTo6YXBwZW5kTm9kZUNoYW5nZXMoY29uc3QgVmVjdG9yPE5vZGVD
aGFuZ2U+JiBjaGFuZ2VzKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9w
ZW5kaW5nQXBwZW5kcy5hcHBlbmRWZWN0b3IoY2hhbmdlcyk7CiB9CiAKIHZvaWQgQVhJc29sYXRl
ZFRyZWU6OmFwcGx5UGVuZGluZ0NoYW5nZXMoKQpAQCAtMjA5LDE0ICszMTAsMjMgQEAgdm9pZCBB
WElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hhbmdlcygpCiAKICAgICBtX2ZvY3VzZWROb2Rl
SUQgPSBtX3BlbmRpbmdGb2N1c2VkTm9kZUlEOwogCi0gICAgd2hpbGUgKG1fcGVuZGluZ1JlbW92
YWxzLnNpemUoKSkgewotICAgICAgICBhdXRvIGF4SUQgPSBtX3BlbmRpbmdSZW1vdmFscy50YWtl
TGFzdCgpOworICAgIHdoaWxlIChtX3BlbmRpbmdOb2RlUmVtb3ZhbHMuc2l6ZSgpKSB7CisgICAg
ICAgIGF1dG8gYXhJRCA9IG1fcGVuZGluZ05vZGVSZW1vdmFscy50YWtlTGFzdCgpOworICAgICAg
ICBpZiAoYXhJRCA9PSBJbnZhbGlkQVhJRCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIGlmIChhdXRvIG9iamVjdCA9IG5vZGVGb3JJRChheElEKSkKKyAgICAgICAgICAgIG9iamVj
dC0+ZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZTo6RWxlbWVudERlc3Ryb3llZCk7
CisgICAgfQorCisgICAgd2hpbGUgKG1fcGVuZGluZ1N1YnRyZWVSZW1vdmFscy5zaXplKCkpIHsK
KyAgICAgICAgYXV0byBheElEID0gbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzLnRha2VMYXN0KCk7
CiAgICAgICAgIGlmIChheElEID09IEludmFsaWRBWElEKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgaWYgKGF1dG8gb2JqZWN0ID0gbm9kZUZvcklEKGF4SUQpKSB7CiAgICAgICAg
ICAgICBvYmplY3QtPmRldGFjaChBY2Nlc3NpYmlsaXR5RGV0YWNobWVudFR5cGU6OkVsZW1lbnRE
ZXN0cm95ZWQpOwotICAgICAgICAgICAgbV9wZW5kaW5nUmVtb3ZhbHMuYXBwZW5kVmVjdG9yKG9i
amVjdC0+bV9jaGlsZHJlbklEcyk7CisgICAgICAgICAgICBtX3BlbmRpbmdTdWJ0cmVlUmVtb3Zh
bHMuYXBwZW5kVmVjdG9yKG9iamVjdC0+bV9jaGlsZHJlbklEcyk7CiAgICAgICAgIH0KICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IDE0ZDkxYjQwYzQ3YzFkYzRjMDQ3YWJkMzMyYWMx
MGFjMWM3Yjk5OGUuLmM0MDU1MzhhZGE0YjkyNzQwNDNjMmI3MDgwYmRmZWUxZTQ5YjI2MDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtNTEsMTMgKzUxLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVy
KTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsK
IAotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVG
b3JQYWdlSUQoUGFnZUlkZW50aWZpZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKKyAgICBzdGF0
aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsK
KyAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRy
ZWVJRCk7CiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYXhPYmplY3RDYWNoZTsgfQogICAgIHZvaWQgc2V0QVhPYmplY3RDYWNoZShBWE9iamVjdENh
Y2hlKiBheE9iamVjdENhY2hlKSB7IG1fYXhPYmplY3RDYWNoZSA9IGF4T2JqZWN0Q2FjaGU7IH0K
IAotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiByb290Tm9kZSgp
OwotICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBmb2N1c2VkVUlF
bGVtZW50KCk7CisgICAgUmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IHJvb3ROb2RlKCk7CisgICAg
UmVmUHRyPEFYSXNvbGF0ZWRPYmplY3Q+IGZvY3VzZWRVSUVsZW1lbnQoKTsKICAgICBSZWZQdHI8
QVhJc29sYXRlZE9iamVjdD4gbm9kZUZvcklEKEFYSUQpIGNvbnN0OwogICAgIHN0YXRpYyBSZWZQ
dHI8QVhJc29sYXRlZE9iamVjdD4gbm9kZUluVHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQsIEFY
SUQpOwogICAgIFZlY3RvcjxSZWZQdHI8QVhDb3JlT2JqZWN0Pj4gb2JqZWN0c0ZvcklEcyhWZWN0
b3I8QVhJRD4pIGNvbnN0OwpAQCAtNjksMTAgKzY5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgTm9k
ZUNoYW5nZShjb25zdCBOb2RlQ2hhbmdlJik7CiAgICAgfTsKIAotICAgIC8vIENhbGwgb24gbWFp
biB0aHJlYWQKLSAgICB2b2lkIGFwcGVuZE5vZGVDaGFuZ2VzKGNvbnN0IFZlY3RvcjxOb2RlQ2hh
bmdlPiYpOwotICAgIC8vIFJlbW92ZXMgdGhlIGdpdmVuIG5vZGUgYW5kIGFsbCBpdHMgZGVzY2Vu
ZGFudHMuCisgICAgdm9pZCBnZW5lcmF0ZVN1YnRyZWUoQVhDb3JlT2JqZWN0JiwgQVhJRCBwYXJl
bnRJRCwgYm9vbCBhdHRhY2hXcmFwcGVyKTsKKyAgICB2b2lkIHVwZGF0ZU5vZGUoQVhDb3JlT2Jq
ZWN0Jik7CisgICAgdm9pZCB1cGRhdGVTdWJ0cmVlKEFYQ29yZU9iamVjdCYpOworICAgIHZvaWQg
dXBkYXRlQ2hpbGRyZW4oQVhDb3JlT2JqZWN0Jik7CisKKyAgICAvLyBSZW1vdmVzIHRoZSBnaXZl
biBub2RlIGxlYXZpbmcgYWxsIGRlc2NlbmRhbnRzIGFsb25lLgogICAgIHZvaWQgcmVtb3ZlTm9k
ZShBWElEKTsKKyAgICAvLyBSZW1vdmVzIHRoZSBnaXZlbiBub2RlIGFuZCBhbGwgaXRzIGRlc2Nl
bmRhbnRzLgorICAgIHZvaWQgcmVtb3ZlU3VidHJlZShBWElEKTsKIAogICAgIC8vIEJvdGggc2V0
Um9vdE5vZGUgYW5kIHNldEZvY3VzZWROb2RlIG11c3QgYmUgY2FsbGVkIG9ubHkgZHVyaW5nIHRo
ZQogICAgIC8vIGdlbmVyYXRpb24gb2YgdGhlIElzb2xhdGVkVHJlZS4KQEAgLTk0LDE0ICs5OSwy
MCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0ZWRUcmVlSUQsIFJlZjxB
WElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwogICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgpOwogCisgICAg
Ly8gQ2FsbCBvbiBtYWluIHRocmVhZAorICAgIFJlZjxBWElzb2xhdGVkT2JqZWN0PiBjcmVhdGVT
dWJ0cmVlKEFYQ29yZU9iamVjdCYsIEFYSUQgcGFyZW50SUQsIGJvb2wgYXR0YWNoV3JhcHBlciwg
VmVjdG9yPE5vZGVDaGFuZ2U+Jik7CisgICAgLy8gUXVldWVzIGFsbCBwZW5kaW5nIGFkZGl0aW9u
cyB0byB0aGUgdHJlZSBhcyB0aGUgcmVzdWx0IG9mIGEgc3VidHJlZSBnZW5lcmF0aW9uLgorICAg
IHZvaWQgYXBwZW5kTm9kZUNoYW5nZXMoY29uc3QgVmVjdG9yPE5vZGVDaGFuZ2U+Jik7CisKICAg
ICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07CiAKICAgICAvLyBP
bmx5IGFjY2VzcyBvbiBBWCB0aHJlYWQgcmVxdWVzdGluZyBkYXRhLgogICAgIEhhc2hNYXA8QVhJ
RCwgUmVmPEFYSXNvbGF0ZWRPYmplY3Q+PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CiAKICAgICAv
LyBXcml0dGVuIHRvIGJ5IG1haW4gdGhyZWFkIHVuZGVyIGxvY2ssIGFjY2Vzc2VkIGFuZCBhcHBs
aWVkIGJ5IEFYIHRocmVhZC4KLSAgICBWZWN0b3I8Tm9kZUNoYW5nZT4gbV9wZW5kaW5nQXBwZW5k
czsKLSAgICBWZWN0b3I8QVhJRD4gbV9wZW5kaW5nUmVtb3ZhbHM7CisgICAgVmVjdG9yPE5vZGVD
aGFuZ2U+IG1fcGVuZGluZ0FwcGVuZHM7IC8vIE5vZGVzIHRvIGJlIGFkZGVkIHRvIHRoZSB0cmVl
IGFuZCBwbGF0Zm9ybS13cmFwcGVkLgorICAgIFZlY3RvcjxBWElEPiBtX3BlbmRpbmdOb2RlUmVt
b3ZhbHM7IC8vIE5vZGVzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgdHJlZS4KKyAgICBWZWN0b3I8
QVhJRD4gbV9wZW5kaW5nU3VidHJlZVJlbW92YWxzOyAvLyBOb2RlcyB3aG9zZSBzdWJ0cmVlcyBh
cmUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLgogICAgIEFYSUQgbV9wZW5kaW5nRm9jdXNl
ZE5vZGVJRCB7IEludmFsaWRBWElEIH07CiAgICAgTG9jayBtX2NoYW5nZUxvZ0xvY2s7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>