<?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>256526</bug_id>
          
          <creation_ts>2023-05-09 09:07:09 -0700</creation_ts>
          <short_desc>AX: Avoid hitting the main thread during the construction of the isolated tree due to AXPrimaryScreenHeight.</short_desc>
          <delta_ts>2023-05-10 04:16:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>1954045</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-05-09 09:07:09 -0700</bug_when>
    <thetext>This is one of the factors contributing to irresponsiveness during page load of large documents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954046</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-05-09 09:07:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/109100219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954050</commentid>
    <comment_count>2</comment_count>
      <attachid>466293</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-05-09 09:13:45 -0700</bug_when>
    <thetext>Created attachment 466293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954062</commentid>
    <comment_count>3</comment_count>
      <attachid>466293</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-05-09 10:24:29 -0700</bug_when>
    <thetext>Comment on attachment 466293
Patch

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

&gt; COMMIT_MESSAGE:7
&gt; +To accomplish not higging the main thread upon primary scrren height requests, the following changes were necessary:

higging -&gt; hitting
scrren -&gt; screen

&gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:84
&gt; +    return screenRectForPrimaryScreen();

will this be expensive to call on initialization?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954063</commentid>
    <comment_count>4</comment_count>
      <attachid>466293</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2023-05-09 10:24:39 -0700</bug_when>
    <thetext>Comment on attachment 466293
Patch

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

&gt; COMMIT_MESSAGE:7
&gt; +To accomplish not higging the main thread upon primary scrren height requests, the following changes were necessary:

typo: higging, hitting

&gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:308
&gt; +    if (object.isScrollView() || object.isWebArea()) {
&gt; +        // For the ScrollView and WebArea objects, cache the TitleAttributeValue and DescriptionAttributeValue eagerly to avoid hitting the main thread in getOrRetrievePropertyValue during the construction of the isolated tree.
&gt; +        setProperty(AXPropertyName::TitleAttributeValue, object.titleAttributeValue().isolatedCopy());
&gt; +        setProperty(AXPropertyName::DescriptionAttributeValue, object.descriptionAttributeValue().isolatedCopy());

I believe one or both of these results in calls to textUnderElement, right? Since the point of this patch to facilitate fast startup, is it possible that these functions will recursively call textUnderElement all the way to the leaves?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954114</commentid>
    <comment_count>5</comment_count>
      <attachid>466298</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-05-09 13:06:02 -0700</bug_when>
    <thetext>Created attachment 466298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954116</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-05-09 13:12:26 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #3)
&gt; Comment on attachment 466293 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=466293&amp;action=review
&gt; 
&gt; &gt; COMMIT_MESSAGE:7
&gt; &gt; +To accomplish not higging the main thread upon primary scrren height requests, the following changes were necessary:
&gt; 
&gt; higging -&gt; hitting
&gt; scrren -&gt; screen

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/AccessibilityObjectMac.mm:84
&gt; &gt; +    return screenRectForPrimaryScreen();
&gt; 
&gt; will this be expensive to call on initialization?

In this particular line, it is not initialization, this is the live object on demand. But we do call it on construction of the AXGeometryManager object and it is not expensive. the problem was that it has to be called on the main thread, not that it was expensive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954117</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-05-09 13:14:22 -0700</bug_when>
    <thetext>(In reply to Tyler Wilcock from comment #4)
&gt; Comment on attachment 466293 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=466293&amp;action=review
&gt; 
&gt; &gt; COMMIT_MESSAGE:7
&gt; &gt; +To accomplish not higging the main thread upon primary scrren height requests, the following changes were necessary:
&gt; 
&gt; typo: higging, hitting

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:308
&gt; &gt; +    if (object.isScrollView() || object.isWebArea()) {
&gt; &gt; +        // For the ScrollView and WebArea objects, cache the TitleAttributeValue and DescriptionAttributeValue eagerly to avoid hitting the main thread in getOrRetrievePropertyValue during the construction of the isolated tree.
&gt; &gt; +        setProperty(AXPropertyName::TitleAttributeValue, object.titleAttributeValue().isolatedCopy());
&gt; &gt; +        setProperty(AXPropertyName::DescriptionAttributeValue, object.descriptionAttributeValue().isolatedCopy());
&gt; 
&gt; I believe one or both of these results in calls to textUnderElement, right?
&gt; Since the point of this patch to facilitate fast startup, is it possible
&gt; that these functions will recursively call textUnderElement all the way to
&gt; the leaves?

That doesn&apos;t happen for ScrollView or WebArea objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954120</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-05-09 13:17:55 -0700</bug_when>
    <thetext>(In reply to Andres Gonzalez from comment #7)
&gt; (In reply to Tyler Wilcock from comment #4)
&gt; &gt; Comment on attachment 466293 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=466293&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; COMMIT_MESSAGE:7
&gt; &gt; &gt; +To accomplish not higging the main thread upon primary scrren height requests, the following changes were necessary:
&gt; &gt; 
&gt; &gt; typo: higging, hitting
&gt; 
&gt; Fixed.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/isolatedtree/AXIsolatedObject.cpp:308
&gt; &gt; &gt; +    if (object.isScrollView() || object.isWebArea()) {
&gt; &gt; &gt; +        // For the ScrollView and WebArea objects, cache the TitleAttributeValue and DescriptionAttributeValue eagerly to avoid hitting the main thread in getOrRetrievePropertyValue during the construction of the isolated tree.
&gt; &gt; &gt; +        setProperty(AXPropertyName::TitleAttributeValue, object.titleAttributeValue().isolatedCopy());
&gt; &gt; &gt; +        setProperty(AXPropertyName::DescriptionAttributeValue, object.descriptionAttributeValue().isolatedCopy());
&gt; &gt; 
&gt; &gt; I believe one or both of these results in calls to textUnderElement, right?
&gt; &gt; Since the point of this patch to facilitate fast startup, is it possible
&gt; &gt; that these functions will recursively call textUnderElement all the way to
&gt; &gt; the leaves?
&gt; 
&gt; That doesn&apos;t happen for ScrollView or WebArea objects.

I.e., textUnderElement is not called as a result of title or description AttributeValue for either of these object types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954303</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-05-10 04:16:19 -0700</bug_when>
    <thetext>Committed 263896@main (5fae8467d69f): &lt;https://commits.webkit.org/263896@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 466298.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466293</attachid>
            <date>2023-05-09 09:13:45 -0700</date>
            <delta_ts>2023-05-09 13:06:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-256526-20230509121344.patch</filename>
            <type>text/plain</type>
            <size>22578</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSBkYTg3OTZjNTI0NGVhNjcxZjc4YTg4MDEzMWFlYmUwZWE2OWJjOGZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBUdWUsIDIgTWF5IDIwMjMgMDk6MDg6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB
WDogQXZvaWQgaGl0dGluZyB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24g
b2YKIHRoZSBpc29sYXRlZCB0cmVlIGR1ZSB0byBBWFByaW1hcnlTY3JlZW5IZWlnaHQuCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NTI2IDxyZGFyOi8vcHJvYmxl
bS8xMDkxMDAyMTk+CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClRvIGFjY29tcGxpc2gg
bm90IGhpZ2dpbmcgdGhlIG1haW4gdGhyZWFkIHVwb24gcHJpbWFyeSBzY3JyZW4gaGVpZ2h0IHJl
cXVlc3RzLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBuZWNlc3Nhcnk6Ci0gQWRkZWQgdGhl
IHByaW1hcnlTY3JlZW5IZWlnaHQoKSBtZXRob2QgdG8gdGhlIEFYQ29yZU9iamVjdCBpbnRlcmZh
Y2UgYW5kIGltcGxlbWVudGF0aW9uIGZvciBib3RoIGxpdmUgYW5kIGlzb2xhdGVkIG9iamVjdHMu
Ci0gVGhlIGltcGxlbWVudGF0aW9uIGZvciB0aGUgaXNvbGF0ZWQgb2JqZWN0cyByZWx5IG9uIHRo
ZSBBWEdlb21ldHJ5TWFuYWdlciBjYWNoaW5nIHRoZSB2YWx1ZS4KLSBBWEdlb21ldHJ5TWFuYWdl
ciBjYWNoZXMgdGhlIHByaW1hcnkgc2NyZWVuIGhlaWdodCBvbiBjb25zdHJ1Y3Rpb24gYW5kIHJl
dHVybnMgdGhlIGNhY2hlZCB2YWx1ZSB3aGVuIHJlcXVlc3RlZC4KLSBUaGUgQVhHZW9tZXRyeU1h
bmFnZXIgaXMgbm93IGEgc2hhcmVkIHBvaW50ZXIgaW5zdGVhZCBvZiBhIHVuaXF1ZV9wdHIgc28g
dGhhdCBib3RoIHRoZSBBWE9iamVjdGNhY2hlIGFuZCB0aGUgQVhJc29sYXRlZFRyZWUgY2FuIGhv
bGQgcmVmZXJlbmNlcyB0byBpdC4KLSBBWElzb2xhdGVkVHJlZSBjb25zdHJ1Y3Rpb24gbWV0aG9k
cyBub3cgdGFrZSBhbiBBWE9iamVjdGNhY2hlIGJ5IHJlZmVyZW5jZSBhbmQga2VlcCBhIHJlZmVy
ZW5jZSB0byB0aGUgQVhHZW9tZXRyeU1hbmFnZXIgdG8gdXNlIG9mZiB0aGUgbWFpbiB0aHJlYWQu
Ci0gVGhlIEFYR2VvbWV0cnlNYW5hZ2VyIGlzIG5vdyBhIFRocmVhZFNhZmVSZWZDb3VudGVkIG9i
amVjdC4KCkluIGFkZGl0aW9uLCB0aGUgaXNvbGF0ZWQgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhl
IFNjcm9sbFZpZXcgYW5kIHRoZSBXZWJBcmVhIG5vdyBlYWdlcmx5IGNhY2hlIHRoZSB0aXRsZSBh
bmQgZGVzY3JpcHRpb24gcHJvcGVydGllcywgb3RoZXJ3aXNlIGNhY2hpbmcgdGhlbSBsYXppbHkg
Y2F1c2VzIGEgaGl0IHRvIHRoZSBtYWluIHRocmVhZCBkdXJpbmcgaXNvbGF0ZWQgdHJlZSBjb25z
dHJ1Y3Rpb24uCi0tLQogLi4uL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwICAg
ICAgIHwgMjQgKysrKysrKysrKysrKysKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9t
ZXRyeU1hbmFnZXIuaCB8IDE5ICsrKysrKysrLS0tCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwICAgfCAxMSArKystLS0tCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMiArLQogLi4uL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oICAgICAgIHwgIDMgKysKIC4uLi9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmggICAgICAgICAgICB8ICA0ICsrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmNwcCAgICAgICAgIHwgIDkgKysrKy0KIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5oICAgICAgICAgICB8ICAzICsrCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmNwcCAgICAgICAgICAgfCAzMyArKysrKysrKysrLS0tLS0tLS0tCiAuLi4vaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmggICAgICAgICAgICAgfCAxMCArKystLS0KIC4uLi9pc29sYXRl
ZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gICB8ICA1ICsrKwogLi4uL21hYy9BY2Nl
c3NpYmlsaXR5T2JqZWN0TWFjLm1tICAgICAgICAgICAgIHwgIDYgKysrKwogLi4uL21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAgIHwgMTUgKystLS0tLS0tCiAxMyBmaWxl
cyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCmluZGV4IGU4
MDdkYzFkMTM2NS4uMjk3ZTY1OWYxOGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmNwcApAQCAtMzEsMTEgKzMxLDI3IEBACiAjaW5j
bHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIAorI2lmIFBMQVRGT1JN
KE1BQykKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQVhHZW9tZXRyeU1hbmFnZXI6OkFYR2VvbWV0cnlNYW5hZ2VyKEFYT2JqZWN0
Q2FjaGUmIG93bmluZ0NhY2hlKQogICAgIDogbV9jYWNoZShvd25pbmdDYWNoZSkKICAgICAsIG1f
dXBkYXRlT2JqZWN0UmVnaW9uc1RpbWVyKCp0aGlzLCAmQVhHZW9tZXRyeU1hbmFnZXI6OnVwZGF0
ZU9iamVjdFJlZ2lvbnNUaW1lckZpcmVkKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fcHJp
bWFyeVNjcmVlblJlY3Qoc2NyZWVuUmVjdEZvclByaW1hcnlTY3JlZW4oKSkKKyNlbmRpZgorewor
fQorCitBWEdlb21ldHJ5TWFuYWdlcjo6QVhHZW9tZXRyeU1hbmFnZXIoKQorICAgIDogbV9jYWNo
ZShudWxscHRyKQorICAgICwgbV91cGRhdGVPYmplY3RSZWdpb25zVGltZXIoKnRoaXMsICZBWEdl
b21ldHJ5TWFuYWdlcjo6dXBkYXRlT2JqZWN0UmVnaW9uc1RpbWVyRmlyZWQpCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgICwgbV9wcmltYXJ5U2NyZWVuUmVjdChzY3JlZW5SZWN0Rm9yUHJpbWFyeVNj
cmVlbigpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTEwMyw1ICsxMTksMTMgQEAgdm9pZCBBWEdlb21l
dHJ5TWFuYWdlcjo6c2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKQogICAgICAgICBwYWdlLT5zY2hl
ZHVsZVJlbmRlcmluZ1VwZGF0ZShSZW5kZXJpbmdVcGRhdGVTdGVwOjpBY2Nlc3NpYmlsaXR5UmVn
aW9uVXBkYXRlKTsKIH0KIAorI2lmIFBMQVRGT1JNKE1BQykKK0Zsb2F0UmVjdCBBWEdlb21ldHJ5
TWFuYWdlcjo6cHJpbWFyeVNjcmVlblJlY3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaW1h
cnlTY3JlZW5SZWN0OworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogI2Vu
ZGlmIC8vIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYR2VvbWV0cnlNYW5hZ2VyLmgKaW5kZXggMmRkMDM3YTFl
NzQ0Li5iMjhkNjc4MDFiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhHZW9tZXRyeU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYR2VvbWV0cnlNYW5hZ2VyLmgKQEAgLTI4LDE5ICsyOCwyMSBAQAogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIkludFJlY3RIYXNoLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBWE9iamVjdENhY2hlOwog
Ci1jbGFzcyBBWEdlb21ldHJ5TWFuYWdlciB7CitjbGFzcyBBWEdlb21ldHJ5TWFuYWdlciA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBWEdlb21ldHJ5TWFuYWdlcj4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEFYR2VvbWV0cnlNYW5hZ2VyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBWEdlb21ldHJ5TWFuYWdlcihBWE9iamVj
dENhY2hlJik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxBWEdlb21ldHJ5TWFuYWdlcj4g
Y3JlYXRlKEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQorICAgIEFYR2VvbWV0cnlNYW5hZ2VyKCk7Cisg
ICAgc3RhdGljIFJlZjxBWEdlb21ldHJ5TWFuYWdlcj4gY3JlYXRlKEFYT2JqZWN0Q2FjaGUmIGNh
Y2hlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8QVhHZW9tZXRyeU1hbmFnZXI+
KGNhY2hlKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhHZW9tZXRyeU1hbmFnZXIo
Y2FjaGUpKTsKICAgICB9CiAKICAgICB2b2lkIHdpbGxVcGRhdGVPYmplY3RSZWdpb25zKCk7CkBA
IC01MiwxNiArNTQsMjUgQEAgcHVibGljOgogCiAgICAgdm9pZCByZW1vdmUoQVhJRCBheElEKSB7
IG1fcGFpbnRSZWN0cy5yZW1vdmUoYXhJRCk7IH0KIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBG
bG9hdFJlY3QgcHJpbWFyeVNjcmVlblJlY3QoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlT2JqZWN0UmVnaW9uc1RpbWVyRmlyZWQoKSB7IHNjaGVkdWxlUmVuZGVy
aW5nVXBkYXRlKCk7IH0KICAgICB2b2lkIHNjaGVkdWxlUmVuZGVyaW5nVXBkYXRlKCk7CiAKICAg
ICAvLyBUaGUgY2FjaGUgdGhhdCBvd25zIHRoaXMgaW5zdGFuY2UuCi0gICAgQ2hlY2tlZFJlZjxB
WE9iamVjdENhY2hlPiBtX2NhY2hlOworICAgIFdlYWtQdHI8QVhPYmplY3RDYWNoZT4gbV9jYWNo
ZTsKICAgICAvLyBCb3VuZHMgY29tcHV0ZWQgYnkgUGFpbnRQaGFzZTo6QWNjZXNzaWJpbGl0eS4K
ICAgICBIYXNoTWFwPEFYSUQsIEludFJlY3Q+IG1fcGFpbnRSZWN0czsKICAgICBUaW1lciBtX3Vw
ZGF0ZU9iamVjdFJlZ2lvbnNUaW1lcjsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBGbG9hdFJl
Y3QgbV9wcmltYXJ5U2NyZWVuUmVjdDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCiAjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDY4
OTY2MDY1ZWI1OS4uNDU5ODE3ZTNhZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTIzMSw2ICsyMzEsNyBAQCBBWE9iamVjdENhY2hl
OjpBWE9iamVjdENhY2hlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAsIG1fcGVyZm9ybUNhY2hl
VXBkYXRlVGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpwZXJmb3JtQ2FjaGVVcGRhdGVUaW1l
ckZpcmVkKQogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAgICAgLCBt
X2J1aWxkSXNvbGF0ZWRUcmVlVGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpidWlsZElzb2xh
dGVkVHJlZSkKKyAgICAsIG1fZ2VvbWV0cnlNYW5hZ2VyKEFYR2VvbWV0cnlNYW5hZ2VyOjpjcmVh
dGUoKnRoaXMpKQogI2VuZGlmCiB7CiAgICAgQVhUUkFDRShtYWtlU3RyaW5nKCJBWE9iamVjdENh
Y2hlOjpBWE9iamVjdENhY2hlIDB4Il9zLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+
KHRoaXMpKSkpOwpAQCAtMjQ5LDEwICsyNTAsNiBAQCBBWE9iamVjdENhY2hlOjpBWE9iamVjdENh
Y2hlKERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgbG9hZGluZ1Byb2dyZXNzID0gMTsKICAg
ICBtX2xvYWRpbmdQcm9ncmVzcyA9IGxvYWRpbmdQcm9ncmVzczsKIAotI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCi0gICAgbV9nZW9tZXRyeU1hbmFnZXIgPSBBWEdlb21l
dHJ5TWFuYWdlcjo6Y3JlYXRlKCp0aGlzKTsKLSNlbmRpZgotCiAgICAgQVhUcmVlU3RvcmU6OmFk
ZChtX2lkLCBXZWFrUHRyIHsgdGhpcyB9KTsKIH0KIApAQCAtODQ4LDExICs4NDUsMTEgQEAgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZUlzb2xhdGVkVHJl
ZSgpCiAgICAgLy8gVGhlbiB3ZSBzY2hlZHVsZSBidWlsZGluZyB0aGUgZW50aXJlIGlzb2xhdGVk
IHRyZWUgb24gYSBUaW1lci4KICAgICAvLyBGb3IgdGVzdCBjbGllbnRzLCBMYXlvdXRUZXN0cyBv
ciBYQ1Rlc3RzLCBidWlsZCB0aGUgd2hvbGUgaXNvbGF0ZWQgdHJlZS4KICAgICBpZiAoIWlzVGVz
dENsaWVudCgpKSB7Ci0gICAgICAgIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlRW1wdHko
dGhpcyk7CisgICAgICAgIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlRW1wdHkoKnRoaXMp
OwogICAgICAgICBpZiAoIW1fYnVpbGRJc29sYXRlZFRyZWVUaW1lci5pc0FjdGl2ZSgpKQogICAg
ICAgICAgICAgbV9idWlsZElzb2xhdGVkVHJlZVRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogICAg
IH0gZWxzZQotICAgICAgICB0cmVlID0gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZSh0aGlzKTsKKyAg
ICAgICAgdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoKnRoaXMpOwogICAgIHNldElzb2xh
dGVkVHJlZVJvb3QodHJlZS0+cm9vdE5vZGUoKS5nZXQoKSk7CiAgICAgLy8gU2NoZWR1bGUgYSBw
YWludCB0byBjYWNoZSB0aGUgcmVjdHMgZm9yIHRoZSBvYmplY3RzIGluIHRoaXMgbmV3IGlzb2xh
dGVkIHRyZWUuCiAgICAgc2NoZWR1bGVPYmplY3RSZWdpb25zVXBkYXRlKHRydWUgLyogc2NoZWR1
bGVJbW1lZGlhdGVseSAqLyk7CkBAIC04NjksNyArODY2LDcgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpidWlsZElzb2xhdGVkVHJlZSgpCiAgICAgaWYgKCFtX3BhZ2VJRCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byB0cmVlID0gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZSh0aGlzKTsKKyAgICBh
dXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCp0aGlzKTsKICAgICBzZXRJc29sYXRl
ZFRyZWVSb290KHRyZWUtPnJvb3ROb2RlKCkuZ2V0KCkpOwogCiAgICAgcG9zdFBsYXRmb3JtTm90
aWZpY2F0aW9uKHRyZWUtPnJvb3ROb2RlKCkuZ2V0KCksIEFYTm90aWZpY2F0aW9uOjpBWExvYWRD
b21wbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CmluZGV4IGNiOGUwZTVjZjcyZC4uNjg4ZTIwNDRhYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNjI5LDcgKzYyOSw3IEBAIHByaXZhdGU6
CiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICBUaW1lciBtX2J1
aWxkSXNvbGF0ZWRUcmVlVGltZXI7CiAgICAgYm9vbCBtX2RlZmVycmVkUmVnZW5lcmF0ZUlzb2xh
dGVkVHJlZSB7IGZhbHNlIH07Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFYR2VvbWV0cnlNYW5hZ2Vy
PiBtX2dlb21ldHJ5TWFuYWdlcjsKKyAgICBSZWY8QVhHZW9tZXRyeU1hbmFnZXI+IG1fZ2VvbWV0
cnlNYW5hZ2VyOwogI2VuZGlmCiAgICAgYm9vbCBtX2lzU3luY2hyb25pemluZ1NlbGVjdGlvbiB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3BlcmZvcm1pbmdEZWZlcnJlZENhY2hlVXBkYXRlIHsgZmFs
c2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKaW5kZXggOWVlMTRlM2MxMDg1Li4wNWE5MGVlMGQ2N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0yMjAs
NiArMjIwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSBvdmVycmlk
ZSB7IH0KICAgICBGbG9hdFJlY3QgdW5vYnNjdXJlZENvbnRlbnRSZWN0KCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBjb25zdCBvdmVycmlkZTsKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgRmxvYXRSZWN0IHByaW1hcnlTY3JlZW5SZWN0KCkgY29uc3Qgb3Zl
cnJpZGU7CisjZW5kaWYKICAgICBGbG9hdFJlY3QgY29udmVydEZyYW1lVG9TcGFjZShjb25zdCBG
bG9hdFJlY3QmLCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlKSBjb25zdCBvdmVycmlkZTsK
ICAgICBIYXNoTWFwPFN0cmluZywgQVhFZGl0aW5nU3R5bGVWYWx1ZVZhcmlhbnQ+IHJlc29sdmVk
RWRpdGluZ1N0eWxlcygpIGNvbnN0IG92ZXJyaWRlOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aAppbmRleCA2MDU5NTk3ZDk5ZGIuLjBmMjlhNjFjOWNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNl
LmgKQEAgLTExODgsNyArMTE4OCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFJlY3QgcmVsYXRpdmUg
dG8gdGhlIHZpZXdwb3J0LgogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlbGF0aXZlRnJhbWUoKSBj
b25zdCA9IDA7Ci0KKyNpZiBQTEFURk9STShNQUMpCisgICAgdmlydHVhbCBGbG9hdFJlY3QgcHJp
bWFyeVNjcmVlblJlY3QoKSBjb25zdCA9IDA7CisjZW5kaWYKICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRTaXpl
IHNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBJbnRQb2ludCBjbGlja1BvaW50KCkgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcAppbmRleCAwZWVlZDZkNmJkZTUuLmI1ZTM3MmRk
NmEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
ZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogI2luY2x1ZGUgIkFYSXNvbGF0
ZWRPYmplY3QuaCIKIAorI2luY2x1ZGUgIkFYR2VvbWV0cnlNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
QVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KQEAgLTE2OSw3ICsxNzAsNyBAQCB2b2lkIEFYSXNvbGF0ZWRPYmplY3Q6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKGNvbnN0IFJlZjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiYgYXhPYgog
ICAgIHNldFByb3BlcnR5KEFYUHJvcGVydHlOYW1lOjpCcmFpbGxlUm9sZURlc2NyaXB0aW9uLCBv
YmplY3QuYnJhaWxsZVJvbGVEZXNjcmlwdGlvbigpLmlzb2xhdGVkQ29weSgpKTsKICAgICBzZXRQ
cm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6QnJhaWxsZUxhYmVsLCBvYmplY3QuYnJhaWxsZUxhYmVs
KCkuaXNvbGF0ZWRDb3B5KCkpOwogCi0gICAgaWYgKHN0ZDo6b3B0aW9uYWwgZnJhbWUgPSBheE9i
amVjdENhY2hlKCktPnBhaW50UmVjdEZvcklEKG9iamVjdC5vYmplY3RJRCgpKSkKKyAgICBpZiAo
c3RkOjpvcHRpb25hbCBmcmFtZSA9IHRyZWUoKS0+Z2VvbWV0cnlNYW5hZ2VyKCktPnBhaW50UmVj
dEZvcklEKG9iamVjdC5vYmplY3RJRCgpKSkKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0
eU5hbWU6OlJlbGF0aXZlRnJhbWUsIFdURk1vdmUoKmZyYW1lKSk7CiAgICAgZWxzZSBpZiAoIW9i
amVjdC5yZW5kZXJlcigpICYmIG9iamVjdC5ub2RlKCkgJiYgaXM8QWNjZXNzaWJpbGl0eU5vZGVP
YmplY3Q+KG9iamVjdCkpIHsKICAgICAgICAgLy8gVGhlIGZyYW1lIG9mIG5vZGUtb25seSBBWCBv
YmplY3RzIGlzIG1hZGUgdXAgb2YgdGhlaXIgY2hpbGRyZW4uCkBAIC0zMDEsNiArMzAyLDEyIEBA
IHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAgICAgICAgIHNldE1hdGhzY3JpcHRzKEFYUHJvcGVy
dHlOYW1lOjpNYXRoUG9zdHNjcmlwdHMsIG9iamVjdCk7CiAgICAgfQogCisgICAgaWYgKG9iamVj
dC5pc1Njcm9sbFZpZXcoKSB8fCBvYmplY3QuaXNXZWJBcmVhKCkpIHsKKyAgICAgICAgLy8gRm9y
IHRoZSBTY3JvbGxWaWV3IGFuZCBXZWJBcmVhIG9iamVjdHMsIGNhY2hlIHRoZSBUaXRsZUF0dHJp
YnV0ZVZhbHVlIGFuZCBEZXNjcmlwdGlvbkF0dHJpYnV0ZVZhbHVlIGVhZ2VybHkgdG8gYXZvaWQg
aGl0dGluZyB0aGUgbWFpbiB0aHJlYWQgaW4gZ2V0T3JSZXRyaWV2ZVByb3BlcnR5VmFsdWUgZHVy
aW5nIHRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIGlzb2xhdGVkIHRyZWUuCisgICAgICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpUaXRsZUF0dHJpYnV0ZVZhbHVlLCBvYmplY3QudGl0bGVB
dHRyaWJ1dGVWYWx1ZSgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgc2V0UHJvcGVydHkoQVhQ
cm9wZXJ0eU5hbWU6OkRlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUsIG9iamVjdC5kZXNjcmlwdGlv
bkF0dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgIH0KKwogICAgIGlmIChpc1Jv
b3QgPT0gSXNSb290OjpZZXMpIHsKICAgICAgICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6
OlNlc3Npb25JRCwgb2JqZWN0LnNlc3Npb25JRCgpLmlzb2xhdGVkQ29weSgpKTsKICAgICAgICAg
c2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkRvY3VtZW50VVJJLCBvYmplY3QuZG9jdW1lbnRV
UkkoKS5pc29sYXRlZENvcHkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKaW5kZXggMjQyNjYw
OTE0MmIzLi4wZDhhMGYxMjYyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTE4Nyw2
ICsxODcsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNFeHBhbmRlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6SXNFeHBhbmRlZCk7
IH0KICAgICBGbG9hdFBvaW50IHNjcmVlblJlbGF0aXZlUG9zaXRpb24oKSBjb25zdCBmaW5hbDsK
ICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBGbG9hdFJlY3QgcHJpbWFyeVNjcmVlblJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKKyNlbmRpZgogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHNuYXBw
ZWRJbnRSZWN0KExheW91dFJlY3QocmVsYXRpdmVGcmFtZSgpKSkuc2l6ZSgpOyB9CiAgICAgRmxv
YXRSZWN0IHJlbGF0aXZlRnJhbWVGcm9tQ2hpbGRyZW4oKSBjb25zdDsKICAgICBib29sIHN1cHBv
cnRzRGF0ZXRpbWVBdHRyaWJ1dGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBib29sQXR0cmli
dXRlVmFsdWUoQVhQcm9wZXJ0eU5hbWU6OlN1cHBvcnRzRGF0ZXRpbWVBdHRyaWJ1dGUpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkVHJlZS5jcHAKaW5kZXggZWVkZmM3YjNlN2FhLi44ZTU0NjRjYTRjMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTQzLDEwICs0MywxMSBAQCBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgQVhJc29sYXRlZFRyZWU6OnRyZWVQYWdl
Q2FjaGUoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLUFYSXNvbGF0ZWRUcmVlOjpBWElzb2xhdGVk
VHJlZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQotICAgIDogQVhUcmVlU3RvcmUoYXhP
YmplY3RDYWNoZS0+dHJlZUlEKCkpCi0gICAgLCBtX2F4T2JqZWN0Q2FjaGUoYXhPYmplY3RDYWNo
ZSkKLSAgICAsIG1fdXNlZE9uQVhUaHJlYWQoYXhPYmplY3RDYWNoZS0+dXNlZE9uQVhUaHJlYWQo
KSkKK0FYSXNvbGF0ZWRUcmVlOjpBWElzb2xhdGVkVHJlZShBWE9iamVjdENhY2hlJiBheE9iamVj
dENhY2hlKQorICAgIDogQVhUcmVlU3RvcmUoYXhPYmplY3RDYWNoZS50cmVlSUQoKSkKKyAgICAs
IG1fYXhPYmplY3RDYWNoZSgmYXhPYmplY3RDYWNoZSkKKyAgICAsIG1fZ2VvbWV0cnlNYW5hZ2Vy
KGF4T2JqZWN0Q2FjaGUubV9nZW9tZXRyeU1hbmFnZXIpCisgICAgLCBtX3VzZWRPbkFYVGhyZWFk
KGF4T2JqZWN0Q2FjaGUudXNlZE9uQVhUaHJlYWQoKSkKIHsKICAgICBBWFRSQUNFKCJBWElzb2xh
dGVkVHJlZTo6QVhJc29sYXRlZFRyZWUiX3MpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CkBAIC02NiwxNSArNjcsMTUgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6cXVldWVGb3JEZXN0cnVj
dGlvbigpCiAgICAgbV9xdWV1ZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CiB9CiAKLVJlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZUVtcHR5KEFYT2JqZWN0Q2FjaGUqIGF4
T2JqZWN0Q2FjaGUpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVF
bXB0eShBWE9iamVjdENhY2hlJiBheE9iamVjdENhY2hlKQogewogICAgIEFYVFJBQ0UoIkFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVFbXB0eSJfcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBBU1NFUlQoYXhPYmplY3RDYWNoZSAmJiBheE9iamVjdENhY2hlLT5wYWdlSUQoKSk7Cisg
ICAgQVNTRVJUKGF4T2JqZWN0Q2FjaGUucGFnZUlEKCkpOwogCiAgICAgYXV0byB0cmVlID0gYWRv
cHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZShheE9iamVjdENhY2hlKSk7CiAKLSAgICBhdXRvKiBh
eFJvb3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShheE9iamVjdENhY2hlLT5kb2N1bWVu
dCgpLnZpZXcoKSk7CisgICAgYXV0byogYXhSb290ID0gYXhPYmplY3RDYWNoZS5nZXRPckNyZWF0
ZShheE9iamVjdENhY2hlLmRvY3VtZW50KCkudmlldygpKTsKICAgICBpZiAoYXhSb290KSB7CiAg
ICAgICAgIHRyZWUtPm1fdW5yZXNvbHZlZFBlbmRpbmdBcHBlbmRzLnNldChheFJvb3QtPm9iamVj
dElEKCksIEF0dGFjaFdyYXBwZXI6Ok9uTWFpblRocmVhZCk7CiAgICAgICAgIHRyZWUtPmNvbGxl
Y3ROb2RlQ2hhbmdlc0ZvckNoaWxkcmVuTWF0Y2hpbmcoKmF4Um9vdCwgW10gKGNvbnN0IGF1dG8m
IG9iamVjdCkgewpAQCAtODMsNyArODQsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0
ZWRUcmVlOjpjcmVhdGVFbXB0eShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQogICAgICAg
ICB0cmVlLT5xdWV1ZVJlbW92YWxzQW5kVW5yZXNvbHZlZENoYW5nZXMoeyB9KTsKICAgICB9CiAK
LSAgICB0cmVlLT51cGRhdGVMb2FkaW5nUHJvZ3Jlc3MoYXhPYmplY3RDYWNoZS0+bG9hZGluZ1By
b2dyZXNzKCkpOworICAgIHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhheE9iamVjdENhY2hl
LmxvYWRpbmdQcm9ncmVzcygpKTsKIAogICAgIC8vIE5vdyB0aGF0IHRoZSB0cmVlIGlzIHJlYWR5
IHRvIHRha2UgY2xpZW50IHJlcXVlc3RzLCBhZGQgaXQgdG8gdGhlIHRyZWUgbWFwcyBzbyB0aGF0
IGl0IGNhbiBiZSBmb3VuZC4KICAgICBzdG9yZVRyZWUoYXhPYmplY3RDYWNoZSwgdHJlZSk7CkBA
IC05MSwxNSArOTIsMTUgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3Jl
YXRlRW1wdHkoQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKICAgICByZXR1cm4gdHJlZTsK
IH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0
Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVl
OjpjcmVhdGUoQVhPYmplY3RDYWNoZSYgYXhPYmplY3RDYWNoZSkKIHsKICAgICBBWFRSQUNFKCJB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlIl9zKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChheE9iamVjdENhY2hlICYmIGF4T2JqZWN0Q2FjaGUtPnBhZ2VJRCgpKTsKKyAg
ICBBU1NFUlQoYXhPYmplY3RDYWNoZS5wYWdlSUQoKSk7CiAKICAgICBhdXRvIHRyZWUgPSBhZG9w
dFJlZigqbmV3IEFYSXNvbGF0ZWRUcmVlKGF4T2JqZWN0Q2FjaGUpKTsKIAotICAgIGF1dG8mIGRv
Y3VtZW50ID0gYXhPYmplY3RDYWNoZS0+ZG9jdW1lbnQoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9
IGF4T2JqZWN0Q2FjaGUuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50LnZpZXcoKS0+bGF5
b3V0Q29udGV4dCgpLmlzSW5SZW5kZXJUcmVlTGF5b3V0KCkgJiYgIWRvY3VtZW50LmluUmVuZGVy
VHJlZVVwZGF0ZSgpICYmICFkb2N1bWVudC5pblN0eWxlUmVjYWxjKCkpCiAgICAgICAgIGRvY3Vt
ZW50LnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCkBAIC0xMDgsMTQg
KzEwOSwxNCBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoQVhP
YmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSkKIAogICAgIC8vIEdlbmVyYXRlIHRoZSBub2RlcyBv
ZiB0aGUgdHJlZSBhbmQgc2V0IGl0cyByb290IGFuZCBmb2N1c2VkIG9iamVjdHMuCiAgICAgLy8g
Rm9yIHRoaXMsIHdlIG5lZWQgdGhlIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0cyBvZiB0aGUgQVhP
YmplY3QgdHJlZS4KLSAgICBhdXRvKiBheFJvb3QgPSBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0
ZShkb2N1bWVudC52aWV3KCkpOworICAgIGF1dG8qIGF4Um9vdCA9IGF4T2JqZWN0Q2FjaGUuZ2V0
T3JDcmVhdGUoZG9jdW1lbnQudmlldygpKTsKICAgICBpZiAoYXhSb290KQogICAgICAgICB0cmVl
LT5nZW5lcmF0ZVN1YnRyZWUoKmF4Um9vdCk7Ci0gICAgYXV0byogYXhGb2N1cyA9IGF4T2JqZWN0
Q2FjaGUtPmZvY3VzZWRPYmplY3RGb3JQYWdlKGRvY3VtZW50LnBhZ2UoKSk7CisgICAgYXV0byog
YXhGb2N1cyA9IGF4T2JqZWN0Q2FjaGUuZm9jdXNlZE9iamVjdEZvclBhZ2UoZG9jdW1lbnQucGFn
ZSgpKTsKICAgICBpZiAoYXhGb2N1cykKICAgICAgICAgdHJlZS0+c2V0Rm9jdXNlZE5vZGVJRChh
eEZvY3VzLT5vYmplY3RJRCgpKTsKIAotICAgIHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhh
eE9iamVjdENhY2hlLT5sb2FkaW5nUHJvZ3Jlc3MoKSk7CisgICAgdHJlZS0+dXBkYXRlTG9hZGlu
Z1Byb2dyZXNzKGF4T2JqZWN0Q2FjaGUubG9hZGluZ1Byb2dyZXNzKCkpOwogCiAgICAgLy8gTm93
IHRoYXQgdGhlIHRyZWUgaXMgcmVhZHkgdG8gdGFrZSBjbGllbnQgcmVxdWVzdHMsIGFkZCBpdCB0
byB0aGUgdHJlZSBtYXBzIHNvIHRoYXQgaXQgY2FuIGJlIGZvdW5kLgogICAgIHN0b3JlVHJlZShh
eE9iamVjdENhY2hlLCB0cmVlKTsKQEAgLTEyMywxMSArMTI0LDExIEBAIFJlZjxBWElzb2xhdGVk
VHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hl
KQogICAgIHJldHVybiB0cmVlOwogfQogCi12b2lkIEFYSXNvbGF0ZWRUcmVlOjpzdG9yZVRyZWUo
QVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSwgY29uc3QgUmVmPEFYSXNvbGF0ZWRUcmVlPiYg
dHJlZSkKK3ZvaWQgQVhJc29sYXRlZFRyZWU6OnN0b3JlVHJlZShBWE9iamVjdENhY2hlJiBheE9i
amVjdENhY2hlLCBjb25zdCBSZWY8QVhJc29sYXRlZFRyZWU+JiB0cmVlKQogewogICAgIEFYVHJl
ZVN0b3JlOjpzZXQodHJlZS0+dHJlZUlEKCksIHRyZWUucHRyKCkpOwogICAgIExvY2tlciBsb2Nr
ZXIgeyBzX3N0b3JlTG9jayB9OwotICAgIHRyZWVQYWdlQ2FjaGUoKS5zZXQoKmF4T2JqZWN0Q2Fj
aGUtPnBhZ2VJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CisgICAgdHJlZVBhZ2VDYWNoZSgpLnNldCgq
YXhPYmplY3RDYWNoZS5wYWdlSUQoKSwgdHJlZS5jb3B5UmVmKCkpOwogfQogCiB2b2lkIEFYSXNv
bGF0ZWRUcmVlOjpyZW1vdmVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5oCmluZGV4IGNiNDI4Y2M5N2ZiOC4uMzYwNjA3MDE3ZTk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKQEAgLTI1Myw5ICsyNTMsOSBAQCBjbGFzcyBBWElzb2xhdGVkVHJlZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZEFuZENhbk1ha2VUaHJlYWRTYWZlV2Vha1B0cjxB
WAogICAgIGZyaWVuZCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgQVhJc29sYXRlZFRyZWUmKTsKICAgICBmcmllbmQgdm9pZCBzdHJlYW1Jc29sYXRlZFN1YnRy
ZWVPbk1haW5UaHJlYWQoVGV4dFN0cmVhbSYsIGNvbnN0IEFYSXNvbGF0ZWRUcmVlJiwgQVhJRCwg
Y29uc3QgT3B0aW9uU2V0PEFYU3RyZWFtT3B0aW9ucz4mKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoQVhPYmplY3RDYWNoZSopOworICAgIHN0YXRpYyBS
ZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZShBWE9iamVjdENhY2hlJik7CiAgICAgLy8gQ3JlYXRl
cyBhIHRyZWUgY29uc2lzdGluZyBvZiBvbmx5IHRoZSBTY3JvbGx2aWV3IGFuZCB0aGUgV2ViQXJl
YSBvYmplY3RzLiBUaGlzIHRyZWUgaXMgdXNlZCBhcyBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlciB3
aGlsZSB0aGUgd2hvbGUgdHJlZSBpcyBiZWluZyBidWlsdC4KLSAgICBzdGF0aWMgUmVmPEFYSXNv
bGF0ZWRUcmVlPiBjcmVhdGVFbXB0eShBWE9iamVjdENhY2hlKik7CisgICAgc3RhdGljIFJlZjxB
WElzb2xhdGVkVHJlZT4gY3JlYXRlRW1wdHkoQVhPYmplY3RDYWNoZSYpOwogICAgIHZpcnR1YWwg
fkFYSXNvbGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0aWMgdm9pZCByZW1vdmVUcmVlRm9yUGFnZUlE
KFBhZ2VJZGVudGlmaWVyKTsKQEAgLTI2Myw2ICsyNjMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRChzdGQ6Om9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPik7CiAgICAgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBh
Z2VJRChQYWdlSWRlbnRpZmllcik7CiAgICAgQVhPYmplY3RDYWNoZSogYXhPYmplY3RDYWNoZSgp
IGNvbnN0OworICAgIGNvbnN0IFJlZjxBWEdlb21ldHJ5TWFuYWdlcj4mIGdlb21ldHJ5TWFuYWdl
cigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbWV0cnlNYW5hZ2VyOyB9CiAKICAgICBSZWZQdHI8QVhJ
c29sYXRlZE9iamVjdD4gcm9vdE5vZGUoKTsKICAgICBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4g
Zm9jdXNlZE5vZGUoKTsKQEAgLTMxNSw4ICszMTYsOCBAQCBwdWJsaWM6CiAgICAgQVhJRCB0cmVl
SUQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKIHByaXZhdGU6Ci0gICAgQVhJc29sYXRlZFRy
ZWUoQVhPYmplY3RDYWNoZSopOwotICAgIHN0YXRpYyB2b2lkIHN0b3JlVHJlZShBWE9iamVjdENh
Y2hlKiwgY29uc3QgUmVmPEFYSXNvbGF0ZWRUcmVlPiYpOworICAgIEFYSXNvbGF0ZWRUcmVlKEFY
T2JqZWN0Q2FjaGUmKTsKKyAgICBzdGF0aWMgdm9pZCBzdG9yZVRyZWUoQVhPYmplY3RDYWNoZSYs
IGNvbnN0IFJlZjxBWElzb2xhdGVkVHJlZT4mKTsKIAogICAgIC8vIFF1ZXVlIHRoaXMgaXNvbGF0
ZWQgdHJlZSB1cCB0byBkZXN0cm95IGl0c2VsZiBvbiB0aGUgc2Vjb25kYXJ5IHRocmVhZC4KICAg
ICAvLyBXZSBjYW4ndCBkZXN0cm95IHRoZSB0cmVlIG9uIHRoZSBtYWluLXRocmVhZCAoYnkgcmVt
b3ZpbmcgYWxsIGBSZWZgcyB0byBpdCkKQEAgLTMzOCw2ICszMzksNyBAQCBwcml2YXRlOgogCiAg
ICAgdW5zaWduZWQgbV9tYXhUcmVlRGVwdGggeyAwIH07CiAgICAgV2Vha1B0cjxBWE9iamVjdENh
Y2hlPiBtX2F4T2JqZWN0Q2FjaGU7CisgICAgUmVmPEFYR2VvbWV0cnlNYW5hZ2VyPiBtX2dlb21l
dHJ5TWFuYWdlcjsKICAgICBib29sIG1fdXNlZE9uQVhUaHJlYWQgeyB0cnVlIH07CiAKICAgICAv
LyBTdG9yZXMgdGhlIHBhcmVudCBJRCBhbmQgY2hpbGRyZW4gSURTIGZvciBhIGdpdmVuIElzb2xh
dGVkT2JqZWN0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQppbmRleCA2
YjBhMjExZjJlZjcuLmFlMWQ2MWNmNTYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRP
YmplY3RNYWMubW0KQEAgLTgyLDYgKzgyLDExIEBAIFJlbW90ZUFYT2JqZWN0UmVmIEFYSXNvbGF0
ZWRPYmplY3Q6OnJlbW90ZVBhcmVudE9iamVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEFYSXNv
bGF0ZWRPYmplY3Q+KHNjcm9sbFZpZXcpID8gZG93bmNhc3Q8QVhJc29sYXRlZE9iamVjdD4oc2Ny
b2xsVmlldyktPm1fcmVtb3RlUGFyZW50LmdldCgpIDogbmlsOwogfQogCitGbG9hdFJlY3QgQVhJ
c29sYXRlZE9iamVjdDo6cHJpbWFyeVNjcmVlblJlY3QoKSBjb25zdAoreworICAgIHJldHVybiB0
cmVlKCktPmdlb21ldHJ5TWFuYWdlcigpLT5wcmltYXJ5U2NyZWVuUmVjdCgpOworfQorCiBGbG9h
dFJlY3QgQVhJc29sYXRlZE9iamVjdDo6Y29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3Qg
RmxvYXRSZWN0JiByZWN0LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlIHNwYWNlKSBjb25z
dAogewogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJl
YWQ8RmxvYXRSZWN0PihbJnJlY3QsICZzcGFjZSwgdGhpc10gKCkgLT4gRmxvYXRSZWN0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmls
aXR5T2JqZWN0TWFjLm1tCmluZGV4IGMyMWM4ZjAxZmU4NS4uZDY0NzYxYjI1OWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RNYWMubW0KQEAgLTQ1LDYgKzQ1LDcgQEAKIAogI2lmIEVOQUJMRShBQ0NFU1NJQklM
SVRZKSAmJiBQTEFURk9STShNQUMpCiAKKyNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1w
b3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIgogI2ltcG9ydCAiV2lkZ2V0
LmgiCiAKQEAgLTc4LDYgKzc5LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAorRmxvYXRSZWN0IEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnByaW1hcnlTY3JlZW5SZWN0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gc2NyZWVuUmVjdEZvclByaW1hcnlTY3JlZW4oKTsKK30KKwogRmxvYXRSZWN0IEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmNvbnZlcnRSZWN0VG9QbGF0Zm9ybVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgQWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZSBzcGFjZSkgY29uc3QKIHsKICAgICAv
LyBXZWJLaXQxIGNvZGUgcGF0aC4uLiBwbGF0Zm9ybVdpZGdldCgpIGV4aXN0cy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggM2QzZjllZDAyMTVhLi5iNmM0ZjFm
ZDc3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0xMzYx
LDE2ICsxMzYxLDYgQEAgLSAoTlNCZXppZXJQYXRoICopcGF0aAogICAgIHJldHVybiBbc2VsZiBi
ZXppZXJQYXRoRnJvbVBhdGg6dHJhbnNmb3JtZWRQYXRoXTsKIH0KIAotLSAoTlNOdW1iZXIgKilw
cmltYXJ5U2NyZWVuSGVpZ2h0Ci17Ci0gICAgLy8gVGhlIHJlY3QgZm9yIHByaW1hcnkgc2NyZWVu
IHNob3VsZCBub3QgY2hhbmdlIGluIG5vcm1hbCB1c2UuIFNvIGNhY2hlIGl0Ci0gICAgLy8gaGVy
ZSB0byBhdm9pZCBoaXR0aW5nIHRoZSBtYWluIHRocmVhZCByZXBlYXRlZGx5LgotICAgIHN0YXRp
YyBGbG9hdFJlY3Qgc2NyZWVuUmVjdCA9IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9t
TWFpblRocmVhZDxGbG9hdFJlY3Q+KFtdICgpIC0+IEZsb2F0UmVjdCB7Ci0gICAgICAgIHJldHVy
biBzY3JlZW5SZWN0Rm9yUHJpbWFyeVNjcmVlbigpOwotICAgIH0pOwotICAgIHJldHVybiBbTlNO
dW1iZXIgbnVtYmVyV2l0aEZsb2F0OnNjcmVlblJlY3QuaGVpZ2h0KCldOwotfQotCiAtIChzaXpl
X3QpY2hpbGRyZW5WZWN0b3JTaXplCiB7CiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0
LT5jaGlsZHJlbigpLnNpemUoKTsKQEAgLTE3NTksOCArMTc0OSw5IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
U2l6ZTpOU01ha2VTaXplKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldOwogICAgIH0KIAot
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVBy
aW1hcnlTY3JlZW5IZWlnaHRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW3NlbGYgcHJpbWFy
eVNjcmVlbkhlaWdodF07CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlQcmltYXJ5U2NyZWVuSGVpZ2h0QXR0cmlidXRlXSkKKyAgICAgICAgcmV0
dXJuIEAoYmFja2luZ09iamVjdC0+cHJpbWFyeVNjcmVlblJlY3QoKS5oZWlnaHQoKSk7CisKICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlQb3Np
dGlvbkF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiBbc2VsZiBwb3NpdGlvbl07CiAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmli
dXRlXSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>466298</attachid>
            <date>2023-05-09 13:06:02 -0700</date>
            <delta_ts>2023-05-10 04:16:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-256526-20230509160601.patch</filename>
            <type>text/plain</type>
            <size>22577</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSAxYjk1YTQzZjZjNDFiYzcwYWZkYzM5OTAwYmZjMDg3NjI2ODZiNWI5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBUdWUsIDIgTWF5IDIwMjMgMDk6MDg6NTAgLTA0MDAKU3ViamVjdDogW1BBVENIXSBB
WDogQXZvaWQgaGl0dGluZyB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24g
b2YKIHRoZSBpc29sYXRlZCB0cmVlIGR1ZSB0byBBWFByaW1hcnlTY3JlZW5IZWlnaHQuCiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NTI2IDxyZGFyOi8vcHJvYmxl
bS8xMDkxMDAyMTk+CgpSZXZpZXdlZCBieSBUeWxlciBXaWxjb2NrLgoKVG8gYWNjb21wbGlzaCBu
b3QgaGl0dGluZyB0aGUgbWFpbiB0aHJlYWQgdXBvbiBwcmltYXJ5IHNjcmVlbiBoZWlnaHQgcmVx
dWVzdHMsIHRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeToKLSBBZGRlZCB0aGUg
cHJpbWFyeVNjcmVlbkhlaWdodCgpIG1ldGhvZCB0byB0aGUgQVhDb3JlT2JqZWN0IGludGVyZmFj
ZSBhbmQgaW1wbGVtZW50YXRpb24gZm9yIGJvdGggbGl2ZSBhbmQgaXNvbGF0ZWQgb2JqZWN0cy4K
LSBUaGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBpc29sYXRlZCBvYmplY3RzIHJlbHkgb24gdGhl
IEFYR2VvbWV0cnlNYW5hZ2VyIGNhY2hpbmcgdGhlIHZhbHVlLgotIEFYR2VvbWV0cnlNYW5hZ2Vy
IGNhY2hlcyB0aGUgcHJpbWFyeSBzY3JlZW4gaGVpZ2h0IG9uIGNvbnN0cnVjdGlvbiBhbmQgcmV0
dXJucyB0aGUgY2FjaGVkIHZhbHVlIHdoZW4gcmVxdWVzdGVkLgotIFRoZSBBWEdlb21ldHJ5TWFu
YWdlciBpcyBub3cgYSBzaGFyZWQgcG9pbnRlciBpbnN0ZWFkIG9mIGEgdW5pcXVlX3B0ciBzbyB0
aGF0IGJvdGggdGhlIEFYT2JqZWN0Y2FjaGUgYW5kIHRoZSBBWElzb2xhdGVkVHJlZSBjYW4gaG9s
ZCByZWZlcmVuY2VzIHRvIGl0LgotIEFYSXNvbGF0ZWRUcmVlIGNvbnN0cnVjdGlvbiBtZXRob2Rz
IG5vdyB0YWtlIGFuIEFYT2JqZWN0Y2FjaGUgYnkgcmVmZXJlbmNlIGFuZCBrZWVwIGEgcmVmZXJl
bmNlIHRvIHRoZSBBWEdlb21ldHJ5TWFuYWdlciB0byB1c2Ugb2ZmIHRoZSBtYWluIHRocmVhZC4K
LSBUaGUgQVhHZW9tZXRyeU1hbmFnZXIgaXMgbm93IGEgVGhyZWFkU2FmZVJlZkNvdW50ZWQgb2Jq
ZWN0LgoKSW4gYWRkaXRpb24sIHRoZSBpc29sYXRlZCBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUg
U2Nyb2xsVmlldyBhbmQgdGhlIFdlYkFyZWEgbm93IGVhZ2VybHkgY2FjaGUgdGhlIHRpdGxlIGFu
ZCBkZXNjcmlwdGlvbiBwcm9wZXJ0aWVzLCBvdGhlcndpc2UgY2FjaGluZyB0aGVtIGxhemlseSBj
YXVzZXMgYSBoaXQgdG8gdGhlIG1haW4gdGhyZWFkIGR1cmluZyBpc29sYXRlZCB0cmVlIGNvbnN0
cnVjdGlvbi4KLS0tCiAuLi4vYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAgICAg
ICAgfCAyNCArKysrKysrKysrKysrKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWEdlb21l
dHJ5TWFuYWdlci5oIHwgMTkgKysrKysrKystLS0KIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAgICB8IDExICsrKy0tLS0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAyICstCiAuLi4vYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmggICAgICAgfCAgMyArKwogLi4uL0FjY2Vzc2liaWxpdHlPYmplY3RJbnRl
cmZhY2UuaCAgICAgICAgICAgIHwgIDQgKystCiAuLi4vaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuY3BwICAgICAgICAgfCAgOSArKysrLQogLi4uL2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
T2JqZWN0LmggICAgICAgICAgIHwgIDMgKysKIC4uLi9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwICAgICAgICAgICB8IDMzICsrKysrKysrKystLS0tLS0tLS0KIC4uLi9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8IDEwICsrKy0tLQogLi4uL2lzb2xhdGVk
dHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSAgIHwgIDUgKysrCiAuLi4vbWFjL0FjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW0gICAgICAgICAgICAgfCAgNiArKysrCiAuLi4vbWFjL1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCAxNSArKy0tLS0tLS0KIDEzIGZpbGVz
IGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWEdlb21ldHJ5TWFuYWdlci5jcHAKaW5kZXggZTgw
N2RjMWQxMzY1Li4yOTdlNjU5ZjE4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuY3BwCkBAIC0zMSwxMSArMzEsMjcgQEAKICNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogCisjaWYgUExBVEZPUk0o
TUFDKQorI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBBWEdlb21ldHJ5TWFuYWdlcjo6QVhHZW9tZXRyeU1hbmFnZXIoQVhPYmplY3RD
YWNoZSYgb3duaW5nQ2FjaGUpCiAgICAgOiBtX2NhY2hlKG93bmluZ0NhY2hlKQogICAgICwgbV91
cGRhdGVPYmplY3RSZWdpb25zVGltZXIoKnRoaXMsICZBWEdlb21ldHJ5TWFuYWdlcjo6dXBkYXRl
T2JqZWN0UmVnaW9uc1RpbWVyRmlyZWQpCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9wcmlt
YXJ5U2NyZWVuUmVjdChzY3JlZW5SZWN0Rm9yUHJpbWFyeVNjcmVlbigpKQorI2VuZGlmCit7Cit9
CisKK0FYR2VvbWV0cnlNYW5hZ2VyOjpBWEdlb21ldHJ5TWFuYWdlcigpCisgICAgOiBtX2NhY2hl
KG51bGxwdHIpCisgICAgLCBtX3VwZGF0ZU9iamVjdFJlZ2lvbnNUaW1lcigqdGhpcywgJkFYR2Vv
bWV0cnlNYW5hZ2VyOjp1cGRhdGVPYmplY3RSZWdpb25zVGltZXJGaXJlZCkKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgLCBtX3ByaW1hcnlTY3JlZW5SZWN0KHNjcmVlblJlY3RGb3JQcmltYXJ5U2Ny
ZWVuKCkpCisjZW5kaWYKIHsKIH0KIApAQCAtMTAzLDUgKzExOSwxMyBAQCB2b2lkIEFYR2VvbWV0
cnlNYW5hZ2VyOjpzY2hlZHVsZVJlbmRlcmluZ1VwZGF0ZSgpCiAgICAgICAgIHBhZ2UtPnNjaGVk
dWxlUmVuZGVyaW5nVXBkYXRlKFJlbmRlcmluZ1VwZGF0ZVN0ZXA6OkFjY2Vzc2liaWxpdHlSZWdp
b25VcGRhdGUpOwogfQogCisjaWYgUExBVEZPUk0oTUFDKQorRmxvYXRSZWN0IEFYR2VvbWV0cnlN
YW5hZ2VyOjpwcmltYXJ5U2NyZWVuUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpbWFy
eVNjcmVlblJlY3Q7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCiAjZW5k
aWYgLy8gRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhHZW9tZXRyeU1hbmFnZXIuaAppbmRleCAyZGQwMzdhMWU3
NDQuLmIyOGQ2NzgwMWIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWEdlb21ldHJ5TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhHZW9tZXRyeU1hbmFnZXIuaApAQCAtMjgsMTkgKzI4LDIxIEBACiAjaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0SW50
ZXJmYWNlLmgiCiAjaW5jbHVkZSAiSW50UmVjdEhhc2guaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CiAK
LWNsYXNzIEFYR2VvbWV0cnlNYW5hZ2VyIHsKK2NsYXNzIEFYR2VvbWV0cnlNYW5hZ2VyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFYR2VvbWV0cnlNYW5hZ2VyPiB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQVhHZW9tZXRyeU1hbmFnZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIGV4cGxpY2l0IEFYR2VvbWV0cnlNYW5hZ2VyKEFYT2JqZWN0
Q2FjaGUmKTsKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPEFYR2VvbWV0cnlNYW5hZ2VyPiBj
cmVhdGUoQVhPYmplY3RDYWNoZSYgY2FjaGUpCisgICAgQVhHZW9tZXRyeU1hbmFnZXIoKTsKKyAg
ICBzdGF0aWMgUmVmPEFYR2VvbWV0cnlNYW5hZ2VyPiBjcmVhdGUoQVhPYmplY3RDYWNoZSYgY2Fj
aGUpCiAgICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxBWEdlb21ldHJ5TWFuYWdlcj4o
Y2FjaGUpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBWEdlb21ldHJ5TWFuYWdlcihj
YWNoZSkpOwogICAgIH0KIAogICAgIHZvaWQgd2lsbFVwZGF0ZU9iamVjdFJlZ2lvbnMoKTsKQEAg
LTUyLDE2ICs1NCwyNSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlbW92ZShBWElEIGF4SUQpIHsg
bV9wYWludFJlY3RzLnJlbW92ZShheElEKTsgfQogCisjaWYgUExBVEZPUk0oTUFDKQorICAgIEZs
b2F0UmVjdCBwcmltYXJ5U2NyZWVuUmVjdCgpIGNvbnN0OworI2VuZGlmCisKIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVPYmplY3RSZWdpb25zVGltZXJGaXJlZCgpIHsgc2NoZWR1bGVSZW5kZXJp
bmdVcGRhdGUoKTsgfQogICAgIHZvaWQgc2NoZWR1bGVSZW5kZXJpbmdVcGRhdGUoKTsKIAogICAg
IC8vIFRoZSBjYWNoZSB0aGF0IG93bnMgdGhpcyBpbnN0YW5jZS4KLSAgICBDaGVja2VkUmVmPEFY
T2JqZWN0Q2FjaGU+IG1fY2FjaGU7CisgICAgV2Vha1B0cjxBWE9iamVjdENhY2hlPiBtX2NhY2hl
OwogICAgIC8vIEJvdW5kcyBjb21wdXRlZCBieSBQYWludFBoYXNlOjpBY2Nlc3NpYmlsaXR5Lgog
ICAgIEhhc2hNYXA8QVhJRCwgSW50UmVjdD4gbV9wYWludFJlY3RzOwogICAgIFRpbWVyIG1fdXBk
YXRlT2JqZWN0UmVnaW9uc1RpbWVyOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIEZsb2F0UmVj
dCBtX3ByaW1hcnlTY3JlZW5SZWN0OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKICNlbmRpZiAvLyBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggNjg5
NjYwNjVlYjU5Li40NTk4MTdlM2FmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMjMxLDYgKzIzMSw3IEBAIEFYT2JqZWN0Q2FjaGU6
OkFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICwgbV9wZXJmb3JtQ2FjaGVV
cGRhdGVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OnBlcmZvcm1DYWNoZVVwZGF0ZVRpbWVy
RmlyZWQpCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKICAgICAsIG1f
YnVpbGRJc29sYXRlZFRyZWVUaW1lcigqdGhpcywgJkFYT2JqZWN0Q2FjaGU6OmJ1aWxkSXNvbGF0
ZWRUcmVlKQorICAgICwgbV9nZW9tZXRyeU1hbmFnZXIoQVhHZW9tZXRyeU1hbmFnZXI6OmNyZWF0
ZSgqdGhpcykpCiAjZW5kaWYKIHsKICAgICBBWFRSQUNFKG1ha2VTdHJpbmcoIkFYT2JqZWN0Q2Fj
aGU6OkFYT2JqZWN0Q2FjaGUgMHgiX3MsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
dGhpcykpKSk7CkBAIC0yNDksMTAgKzI1MCw2IEBAIEFYT2JqZWN0Q2FjaGU6OkFYT2JqZWN0Q2Fj
aGUoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgICAgICBsb2FkaW5nUHJvZ3Jlc3MgPSAxOwogICAg
IG1fbG9hZGluZ1Byb2dyZXNzID0gbG9hZGluZ1Byb2dyZXNzOwogCi0jaWYgRU5BQkxFKEFDQ0VT
U0lCSUxJVFlfSVNPTEFURURfVFJFRSkKLSAgICBtX2dlb21ldHJ5TWFuYWdlciA9IEFYR2VvbWV0
cnlNYW5hZ2VyOjpjcmVhdGUoKnRoaXMpOwotI2VuZGlmCi0KICAgICBBWFRyZWVTdG9yZTo6YWRk
KG1faWQsIFdlYWtQdHIgeyB0aGlzIH0pOwogfQogCkBAIC04NDgsMTEgKzg0NSwxMSBAQCBSZWZQ
dHI8QVhJc29sYXRlZFRyZWU+IEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlSXNvbGF0ZWRUcmVl
KCkKICAgICAvLyBUaGVuIHdlIHNjaGVkdWxlIGJ1aWxkaW5nIHRoZSBlbnRpcmUgaXNvbGF0ZWQg
dHJlZSBvbiBhIFRpbWVyLgogICAgIC8vIEZvciB0ZXN0IGNsaWVudHMsIExheW91dFRlc3RzIG9y
IFhDVGVzdHMsIGJ1aWxkIHRoZSB3aG9sZSBpc29sYXRlZCB0cmVlLgogICAgIGlmICghaXNUZXN0
Q2xpZW50KCkpIHsKLSAgICAgICAgdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVFbXB0eSh0
aGlzKTsKKyAgICAgICAgdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVFbXB0eSgqdGhpcyk7
CiAgICAgICAgIGlmICghbV9idWlsZElzb2xhdGVkVHJlZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAg
ICAgICAgICBtX2J1aWxkSXNvbGF0ZWRUcmVlVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CiAgICAg
fSBlbHNlCi0gICAgICAgIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKHRoaXMpOworICAg
ICAgICB0cmVlID0gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZSgqdGhpcyk7CiAgICAgc2V0SXNvbGF0
ZWRUcmVlUm9vdCh0cmVlLT5yb290Tm9kZSgpLmdldCgpKTsKICAgICAvLyBTY2hlZHVsZSBhIHBh
aW50IHRvIGNhY2hlIHRoZSByZWN0cyBmb3IgdGhlIG9iamVjdHMgaW4gdGhpcyBuZXcgaXNvbGF0
ZWQgdHJlZS4KICAgICBzY2hlZHVsZU9iamVjdFJlZ2lvbnNVcGRhdGUodHJ1ZSAvKiBzY2hlZHVs
ZUltbWVkaWF0ZWx5ICovKTsKQEAgLTg2OSw3ICs4NjYsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OmJ1aWxkSXNvbGF0ZWRUcmVlKCkKICAgICBpZiAoIW1fcGFnZUlEKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHRyZWUgPSBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKHRoaXMpOworICAgIGF1
dG8gdHJlZSA9IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoKnRoaXMpOwogICAgIHNldElzb2xhdGVk
VHJlZVJvb3QodHJlZS0+cm9vdE5vZGUoKS5nZXQoKSk7CiAKICAgICBwb3N0UGxhdGZvcm1Ob3Rp
ZmljYXRpb24odHJlZS0+cm9vdE5vZGUoKS5nZXQoKSwgQVhOb3RpZmljYXRpb246OkFYTG9hZENv
bXBsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
aW5kZXggY2I4ZTBlNWNmNzJkLi42ODhlMjA0NGFiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC02MjksNyArNjI5LDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVFKQogICAgIFRpbWVyIG1fYnVp
bGRJc29sYXRlZFRyZWVUaW1lcjsKICAgICBib29sIG1fZGVmZXJyZWRSZWdlbmVyYXRlSXNvbGF0
ZWRUcmVlIHsgZmFsc2UgfTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QVhHZW9tZXRyeU1hbmFnZXI+
IG1fZ2VvbWV0cnlNYW5hZ2VyOworICAgIFJlZjxBWEdlb21ldHJ5TWFuYWdlcj4gbV9nZW9tZXRy
eU1hbmFnZXI7CiAjZW5kaWYKICAgICBib29sIG1faXNTeW5jaHJvbml6aW5nU2VsZWN0aW9uIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcGVyZm9ybWluZ0RlZmVycmVkQ2FjaGVVcGRhdGUgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlP
YmplY3QuaAppbmRleCA5ZWUxNGUzYzEwODUuLjA1YTkwZWUwZDY3YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTIyMCw2
ICsyMjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0V4cGFuZGVkKGJvb2wpIG92ZXJyaWRl
IHsgfQogICAgIEZsb2F0UmVjdCB1bm9ic2N1cmVkQ29udGVudFJlY3QoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNvbnN0IG92ZXJyaWRlOworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICBGbG9hdFJlY3QgcHJpbWFyeVNjcmVlblJlY3QoKSBjb25zdCBvdmVy
cmlkZTsKKyNlbmRpZgogICAgIEZsb2F0UmVjdCBjb252ZXJ0RnJhbWVUb1NwYWNlKGNvbnN0IEZs
b2F0UmVjdCYsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2UpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIEhhc2hNYXA8U3RyaW5nLCBBWEVkaXRpbmdTdHlsZVZhbHVlVmFyaWFudD4gcmVzb2x2ZWRF
ZGl0aW5nU3R5bGVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5o
CmluZGV4IDYwNTk1OTdkOTlkYi4uMGYyOWE2MWM5Y2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2Uu
aApAQCAtMTE4OCw3ICsxMTg4LDkgQEAgcHVibGljOgogCiAgICAgLy8gUmVjdCByZWxhdGl2ZSB0
byB0aGUgdmlld3BvcnQuCiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVsYXRpdmVGcmFtZSgpIGNv
bnN0ID0gMDsKLQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICB2aXJ0dWFsIEZsb2F0UmVjdCBwcmlt
YXJ5U2NyZWVuUmVjdCgpIGNvbnN0ID0gMDsKKyNlbmRpZgogICAgIHZpcnR1YWwgRmxvYXRSZWN0
IHVub2JzY3VyZWRDb250ZW50UmVjdCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFNpemUg
c2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDBlZWVkNmQ2YmRlNS4uYjVlMzcyZGQ2
YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2lm
IEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAjaW5jbHVkZSAiQVhJc29sYXRl
ZE9iamVjdC5oIgogCisjaW5jbHVkZSAiQVhHZW9tZXRyeU1hbmFnZXIuaCIKICNpbmNsdWRlICJB
WElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYTG9nZ2VyLmgiCiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgpAQCAtMTY5LDcgKzE3MCw3IEBAIHZvaWQgQVhJc29sYXRlZE9iamVjdDo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vzc2liaWxpdHlPYmplY3Q+JiBheE9iCiAg
ICAgc2V0UHJvcGVydHkoQVhQcm9wZXJ0eU5hbWU6OkJyYWlsbGVSb2xlRGVzY3JpcHRpb24sIG9i
amVjdC5icmFpbGxlUm9sZURlc2NyaXB0aW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpCcmFpbGxlTGFiZWwsIG9iamVjdC5icmFpbGxlTGFiZWwo
KS5pc29sYXRlZENvcHkoKSk7CiAKLSAgICBpZiAoc3RkOjpvcHRpb25hbCBmcmFtZSA9IGF4T2Jq
ZWN0Q2FjaGUoKS0+cGFpbnRSZWN0Rm9ySUQob2JqZWN0Lm9iamVjdElEKCkpKQorICAgIGlmIChz
dGQ6Om9wdGlvbmFsIGZyYW1lID0gdHJlZSgpLT5nZW9tZXRyeU1hbmFnZXIoKS0+cGFpbnRSZWN0
Rm9ySUQob2JqZWN0Lm9iamVjdElEKCkpKQogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5
TmFtZTo6UmVsYXRpdmVGcmFtZSwgV1RGTW92ZSgqZnJhbWUpKTsKICAgICBlbHNlIGlmICghb2Jq
ZWN0LnJlbmRlcmVyKCkgJiYgb2JqZWN0Lm5vZGUoKSAmJiBpczxBY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdD4ob2JqZWN0KSkgewogICAgICAgICAvLyBUaGUgZnJhbWUgb2Ygbm9kZS1vbmx5IEFYIG9i
amVjdHMgaXMgbWFkZSB1cCBvZiB0aGVpciBjaGlsZHJlbi4KQEAgLTMwMSw2ICszMDIsMTIgQEAg
dm9pZCBBWElzb2xhdGVkT2JqZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNj
ZXNzaWJpbGl0eU9iamVjdD4mIGF4T2IKICAgICAgICAgc2V0TWF0aHNjcmlwdHMoQVhQcm9wZXJ0
eU5hbWU6Ok1hdGhQb3N0c2NyaXB0cywgb2JqZWN0KTsKICAgICB9CiAKKyAgICBpZiAob2JqZWN0
LmlzU2Nyb2xsVmlldygpIHx8IG9iamVjdC5pc1dlYkFyZWEoKSkgeworICAgICAgICAvLyBGb3Ig
dGhlIFNjcm9sbFZpZXcgYW5kIFdlYkFyZWEgb2JqZWN0cywgY2FjaGUgdGhlIFRpdGxlQXR0cmli
dXRlVmFsdWUgYW5kIERlc2NyaXB0aW9uQXR0cmlidXRlVmFsdWUgZWFnZXJseSB0byBhdm9pZCBo
aXR0aW5nIHRoZSBtYWluIHRocmVhZCBpbiBnZXRPclJldHJpZXZlUHJvcGVydHlWYWx1ZSBkdXJp
bmcgdGhlIGNvbnN0cnVjdGlvbiBvZiB0aGUgaXNvbGF0ZWQgdHJlZS4KKyAgICAgICAgc2V0UHJv
cGVydHkoQVhQcm9wZXJ0eU5hbWU6OlRpdGxlQXR0cmlidXRlVmFsdWUsIG9iamVjdC50aXRsZUF0
dHJpYnV0ZVZhbHVlKCkuaXNvbGF0ZWRDb3B5KCkpOworICAgICAgICBzZXRQcm9wZXJ0eShBWFBy
b3BlcnR5TmFtZTo6RGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSwgb2JqZWN0LmRlc2NyaXB0aW9u
QXR0cmlidXRlVmFsdWUoKS5pc29sYXRlZENvcHkoKSk7CisgICAgfQorCiAgICAgaWYgKGlzUm9v
dCA9PSBJc1Jvb3Q6OlllcykgewogICAgICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6
U2Vzc2lvbklELCBvYmplY3Quc2Vzc2lvbklEKCkuaXNvbGF0ZWRDb3B5KCkpOwogICAgICAgICBz
ZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6RG9jdW1lbnRVUkksIG9iamVjdC5kb2N1bWVudFVS
SSgpLmlzb2xhdGVkQ29weSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAppbmRleCAyNDI2NjA5
MTQyYjMuLjBkOGEwZjEyNjJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaApAQCAtMTg3LDYg
KzE4Nyw5IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gYm9vbEF0dHJpYnV0ZVZhbHVlKEFYUHJvcGVydHlOYW1lOjpJc0V4cGFuZGVkKTsg
fQogICAgIEZsb2F0UG9pbnQgc2NyZWVuUmVsYXRpdmVQb3NpdGlvbigpIGNvbnN0IGZpbmFsOwog
ICAgIEZsb2F0UmVjdCByZWxhdGl2ZUZyYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIEZsb2F0UmVjdCBwcmltYXJ5U2NyZWVuUmVjdCgpIGNvbnN0IG92ZXJyaWRl
OworI2VuZGlmCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gc25hcHBl
ZEludFJlY3QoTGF5b3V0UmVjdChyZWxhdGl2ZUZyYW1lKCkpKS5zaXplKCk7IH0KICAgICBGbG9h
dFJlY3QgcmVsYXRpdmVGcmFtZUZyb21DaGlsZHJlbigpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9y
dHNEYXRldGltZUF0dHJpYnV0ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGJvb2xBdHRyaWJ1
dGVWYWx1ZShBWFByb3BlcnR5TmFtZTo6U3VwcG9ydHNEYXRldGltZUF0dHJpYnV0ZSk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCBlZWRmYzdiM2U3YWEuLjhlNTQ2NGNhNGMxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcApAQCAtNDMsMTAgKzQzLDExIEBAIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiBBWElzb2xhdGVkVHJlZTo6dHJlZVBhZ2VD
YWNoZSgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotQVhJc29sYXRlZFRyZWU6OkFYSXNvbGF0ZWRU
cmVlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCi0gICAgOiBBWFRyZWVTdG9yZShheE9i
amVjdENhY2hlLT50cmVlSUQoKSkKLSAgICAsIG1fYXhPYmplY3RDYWNoZShheE9iamVjdENhY2hl
KQotICAgICwgbV91c2VkT25BWFRocmVhZChheE9iamVjdENhY2hlLT51c2VkT25BWFRocmVhZCgp
KQorQVhJc29sYXRlZFRyZWU6OkFYSXNvbGF0ZWRUcmVlKEFYT2JqZWN0Q2FjaGUmIGF4T2JqZWN0
Q2FjaGUpCisgICAgOiBBWFRyZWVTdG9yZShheE9iamVjdENhY2hlLnRyZWVJRCgpKQorICAgICwg
bV9heE9iamVjdENhY2hlKCZheE9iamVjdENhY2hlKQorICAgICwgbV9nZW9tZXRyeU1hbmFnZXIo
YXhPYmplY3RDYWNoZS5tX2dlb21ldHJ5TWFuYWdlcikKKyAgICAsIG1fdXNlZE9uQVhUaHJlYWQo
YXhPYmplY3RDYWNoZS51c2VkT25BWFRocmVhZCgpKQogewogICAgIEFYVFJBQ0UoIkFYSXNvbGF0
ZWRUcmVlOjpBWElzb2xhdGVkVHJlZSJfcyk7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
QEAgLTY2LDE1ICs2NywxNSBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjpxdWV1ZUZvckRlc3RydWN0
aW9uKCkKICAgICBtX3F1ZXVlZEZvckRlc3RydWN0aW9uID0gdHJ1ZTsKIH0KIAotUmVmPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlRW1wdHkoQVhPYmplY3RDYWNoZSogYXhP
YmplY3RDYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZUVt
cHR5KEFYT2JqZWN0Q2FjaGUmIGF4T2JqZWN0Q2FjaGUpCiB7CiAgICAgQVhUUkFDRSgiQVhJc29s
YXRlZFRyZWU6OmNyZWF0ZUVtcHR5Il9zKTsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChheE9iamVjdENhY2hlICYmIGF4T2JqZWN0Q2FjaGUtPnBhZ2VJRCgpKTsKKyAg
ICBBU1NFUlQoYXhPYmplY3RDYWNoZS5wYWdlSUQoKSk7CiAKICAgICBhdXRvIHRyZWUgPSBhZG9w
dFJlZigqbmV3IEFYSXNvbGF0ZWRUcmVlKGF4T2JqZWN0Q2FjaGUpKTsKIAotICAgIGF1dG8qIGF4
Um9vdCA9IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKGF4T2JqZWN0Q2FjaGUtPmRvY3VtZW50
KCkudmlldygpKTsKKyAgICBhdXRvKiBheFJvb3QgPSBheE9iamVjdENhY2hlLmdldE9yQ3JlYXRl
KGF4T2JqZWN0Q2FjaGUuZG9jdW1lbnQoKS52aWV3KCkpOwogICAgIGlmIChheFJvb3QpIHsKICAg
ICAgICAgdHJlZS0+bV91bnJlc29sdmVkUGVuZGluZ0FwcGVuZHMuc2V0KGF4Um9vdC0+b2JqZWN0
SUQoKSwgQXR0YWNoV3JhcHBlcjo6T25NYWluVGhyZWFkKTsKICAgICAgICAgdHJlZS0+Y29sbGVj
dE5vZGVDaGFuZ2VzRm9yQ2hpbGRyZW5NYXRjaGluZygqYXhSb290LCBbXSAoY29uc3QgYXV0byYg
b2JqZWN0KSB7CkBAIC04Myw3ICs4NCw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRl
ZFRyZWU6OmNyZWF0ZUVtcHR5KEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUpCiAgICAgICAg
IHRyZWUtPnF1ZXVlUmVtb3ZhbHNBbmRVbnJlc29sdmVkQ2hhbmdlcyh7IH0pOwogICAgIH0KIAot
ICAgIHRyZWUtPnVwZGF0ZUxvYWRpbmdQcm9ncmVzcyhheE9iamVjdENhY2hlLT5sb2FkaW5nUHJv
Z3Jlc3MoKSk7CisgICAgdHJlZS0+dXBkYXRlTG9hZGluZ1Byb2dyZXNzKGF4T2JqZWN0Q2FjaGUu
bG9hZGluZ1Byb2dyZXNzKCkpOwogCiAgICAgLy8gTm93IHRoYXQgdGhlIHRyZWUgaXMgcmVhZHkg
dG8gdGFrZSBjbGllbnQgcmVxdWVzdHMsIGFkZCBpdCB0byB0aGUgdHJlZSBtYXBzIHNvIHRoYXQg
aXQgY2FuIGJlIGZvdW5kLgogICAgIHN0b3JlVHJlZShheE9iamVjdENhY2hlLCB0cmVlKTsKQEAg
LTkxLDE1ICs5MiwxNSBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVFbXB0eShBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKQogICAgIHJldHVybiB0cmVlOwog
fQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGUoQVhPYmplY3RD
YWNoZSogYXhPYmplY3RDYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6
OmNyZWF0ZShBWE9iamVjdENhY2hlJiBheE9iamVjdENhY2hlKQogewogICAgIEFYVFJBQ0UoIkFY
SXNvbGF0ZWRUcmVlOjpjcmVhdGUiX3MpOwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgQVNTRVJUKGF4T2JqZWN0Q2FjaGUgJiYgYXhPYmplY3RDYWNoZS0+cGFnZUlEKCkpOworICAg
IEFTU0VSVChheE9iamVjdENhY2hlLnBhZ2VJRCgpKTsKIAogICAgIGF1dG8gdHJlZSA9IGFkb3B0
UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoYXhPYmplY3RDYWNoZSkpOwogCi0gICAgYXV0byYgZG9j
dW1lbnQgPSBheE9iamVjdENhY2hlLT5kb2N1bWVudCgpOworICAgIGF1dG8mIGRvY3VtZW50ID0g
YXhPYmplY3RDYWNoZS5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQudmlldygpLT5sYXlv
dXRDb250ZXh0KCkuaXNJblJlbmRlclRyZWVMYXlvdXQoKSAmJiAhZG9jdW1lbnQuaW5SZW5kZXJU
cmVlVXBkYXRlKCkgJiYgIWRvY3VtZW50LmluU3R5bGVSZWNhbGMoKSkKICAgICAgICAgZG9jdW1l
bnQudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKQEAgLTEwOCwxNCAr
MTA5LDE0IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZShBWE9i
amVjdENhY2hlKiBheE9iamVjdENhY2hlKQogCiAgICAgLy8gR2VuZXJhdGUgdGhlIG5vZGVzIG9m
IHRoZSB0cmVlIGFuZCBzZXQgaXRzIHJvb3QgYW5kIGZvY3VzZWQgb2JqZWN0cy4KICAgICAvLyBG
b3IgdGhpcywgd2UgbmVlZCB0aGUgcm9vdCBhbmQgZm9jdXNlZCBvYmplY3RzIG9mIHRoZSBBWE9i
amVjdCB0cmVlLgotICAgIGF1dG8qIGF4Um9vdCA9IGF4T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRl
KGRvY3VtZW50LnZpZXcoKSk7CisgICAgYXV0byogYXhSb290ID0gYXhPYmplY3RDYWNoZS5nZXRP
ckNyZWF0ZShkb2N1bWVudC52aWV3KCkpOwogICAgIGlmIChheFJvb3QpCiAgICAgICAgIHRyZWUt
PmdlbmVyYXRlU3VidHJlZSgqYXhSb290KTsKLSAgICBhdXRvKiBheEZvY3VzID0gYXhPYmplY3RD
YWNoZS0+Zm9jdXNlZE9iamVjdEZvclBhZ2UoZG9jdW1lbnQucGFnZSgpKTsKKyAgICBhdXRvKiBh
eEZvY3VzID0gYXhPYmplY3RDYWNoZS5mb2N1c2VkT2JqZWN0Rm9yUGFnZShkb2N1bWVudC5wYWdl
KCkpOwogICAgIGlmIChheEZvY3VzKQogICAgICAgICB0cmVlLT5zZXRGb2N1c2VkTm9kZUlEKGF4
Rm9jdXMtPm9iamVjdElEKCkpOwogCi0gICAgdHJlZS0+dXBkYXRlTG9hZGluZ1Byb2dyZXNzKGF4
T2JqZWN0Q2FjaGUtPmxvYWRpbmdQcm9ncmVzcygpKTsKKyAgICB0cmVlLT51cGRhdGVMb2FkaW5n
UHJvZ3Jlc3MoYXhPYmplY3RDYWNoZS5sb2FkaW5nUHJvZ3Jlc3MoKSk7CiAKICAgICAvLyBOb3cg
dGhhdCB0aGUgdHJlZSBpcyByZWFkeSB0byB0YWtlIGNsaWVudCByZXF1ZXN0cywgYWRkIGl0IHRv
IHRoZSB0cmVlIG1hcHMgc28gdGhhdCBpdCBjYW4gYmUgZm91bmQuCiAgICAgc3RvcmVUcmVlKGF4
T2JqZWN0Q2FjaGUsIHRyZWUpOwpAQCAtMTIzLDExICsxMjQsMTEgQEAgUmVmPEFYSXNvbGF0ZWRU
cmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUp
CiAgICAgcmV0dXJuIHRyZWU7CiB9CiAKLXZvaWQgQVhJc29sYXRlZFRyZWU6OnN0b3JlVHJlZShB
WE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlLCBjb25zdCBSZWY8QVhJc29sYXRlZFRyZWU+JiB0
cmVlKQordm9pZCBBWElzb2xhdGVkVHJlZTo6c3RvcmVUcmVlKEFYT2JqZWN0Q2FjaGUmIGF4T2Jq
ZWN0Q2FjaGUsIGNvbnN0IFJlZjxBWElzb2xhdGVkVHJlZT4mIHRyZWUpCiB7CiAgICAgQVhUcmVl
U3RvcmU6OnNldCh0cmVlLT50cmVlSUQoKSwgdHJlZS5wdHIoKSk7CiAgICAgTG9ja2VyIGxvY2tl
ciB7IHNfc3RvcmVMb2NrIH07Ci0gICAgdHJlZVBhZ2VDYWNoZSgpLnNldCgqYXhPYmplY3RDYWNo
ZS0+cGFnZUlEKCksIHRyZWUuY29weVJlZigpKTsKKyAgICB0cmVlUGFnZUNhY2hlKCkuc2V0KCph
eE9iamVjdENhY2hlLnBhZ2VJRCgpLCB0cmVlLmNvcHlSZWYoKSk7CiB9CiAKIHZvaWQgQVhJc29s
YXRlZFRyZWU6OnJlbW92ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29s
YXRlZFRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKaW5kZXggY2I0MjhjYzk3ZmI4Li4zNjA2MDcwMTdlOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRU
cmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuaApAQCAtMjUzLDkgKzI1Myw5IEBAIGNsYXNzIEFYSXNvbGF0ZWRUcmVlIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkQW5kQ2FuTWFrZVRocmVhZFNhZmVXZWFrUHRyPEFY
CiAgICAgZnJpZW5kIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBBWElzb2xhdGVkVHJlZSYpOwogICAgIGZyaWVuZCB2b2lkIHN0cmVhbUlzb2xhdGVkU3VidHJl
ZU9uTWFpblRocmVhZChUZXh0U3RyZWFtJiwgY29uc3QgQVhJc29sYXRlZFRyZWUmLCBBWElELCBj
b25zdCBPcHRpb25TZXQ8QVhTdHJlYW1PcHRpb25zPiYpOwogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZShBWE9iamVjdENhY2hlKik7CisgICAgc3RhdGljIFJl
ZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlKEFYT2JqZWN0Q2FjaGUmKTsKICAgICAvLyBDcmVhdGVz
IGEgdHJlZSBjb25zaXN0aW5nIG9mIG9ubHkgdGhlIFNjcm9sbHZpZXcgYW5kIHRoZSBXZWJBcmVh
IG9iamVjdHMuIFRoaXMgdHJlZSBpcyB1c2VkIGFzIGEgdGVtcG9yYXJ5IHBsYWNlaG9sZGVyIHdo
aWxlIHRoZSB3aG9sZSB0cmVlIGlzIGJlaW5nIGJ1aWx0LgotICAgIHN0YXRpYyBSZWY8QVhJc29s
YXRlZFRyZWU+IGNyZWF0ZUVtcHR5KEFYT2JqZWN0Q2FjaGUqKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVFbXB0eShBWE9iamVjdENhY2hlJik7CiAgICAgdmlydHVhbCB+
QVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbW92ZVRyZWVGb3JQYWdlSUQo
UGFnZUlkZW50aWZpZXIpOwpAQCAtMjYzLDYgKzI2Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHN0ZDo6b3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+KTsKICAgICBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFn
ZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkg
Y29uc3Q7CisgICAgY29uc3QgUmVmPEFYR2VvbWV0cnlNYW5hZ2VyPiYgZ2VvbWV0cnlNYW5hZ2Vy
KCkgY29uc3QgeyByZXR1cm4gbV9nZW9tZXRyeU1hbmFnZXI7IH0KIAogICAgIFJlZlB0cjxBWElz
b2xhdGVkT2JqZWN0PiByb290Tm9kZSgpOwogICAgIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBm
b2N1c2VkTm9kZSgpOwpAQCAtMzE1LDggKzMxNiw4IEBAIHB1YmxpYzoKICAgICBBWElEIHRyZWVJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KIAogcHJpdmF0ZToKLSAgICBBWElzb2xhdGVkVHJl
ZShBWE9iamVjdENhY2hlKik7Ci0gICAgc3RhdGljIHZvaWQgc3RvcmVUcmVlKEFYT2JqZWN0Q2Fj
aGUqLCBjb25zdCBSZWY8QVhJc29sYXRlZFRyZWU+Jik7CisgICAgQVhJc29sYXRlZFRyZWUoQVhP
YmplY3RDYWNoZSYpOworICAgIHN0YXRpYyB2b2lkIHN0b3JlVHJlZShBWE9iamVjdENhY2hlJiwg
Y29uc3QgUmVmPEFYSXNvbGF0ZWRUcmVlPiYpOwogCiAgICAgLy8gUXVldWUgdGhpcyBpc29sYXRl
ZCB0cmVlIHVwIHRvIGRlc3Ryb3kgaXRzZWxmIG9uIHRoZSBzZWNvbmRhcnkgdGhyZWFkLgogICAg
IC8vIFdlIGNhbid0IGRlc3Ryb3kgdGhlIHRyZWUgb24gdGhlIG1haW4tdGhyZWFkIChieSByZW1v
dmluZyBhbGwgYFJlZmBzIHRvIGl0KQpAQCAtMzM4LDYgKzMzOSw3IEBAIHByaXZhdGU6CiAKICAg
ICB1bnNpZ25lZCBtX21heFRyZWVEZXB0aCB7IDAgfTsKICAgICBXZWFrUHRyPEFYT2JqZWN0Q2Fj
aGU+IG1fYXhPYmplY3RDYWNoZTsKKyAgICBSZWY8QVhHZW9tZXRyeU1hbmFnZXI+IG1fZ2VvbWV0
cnlNYW5hZ2VyOwogICAgIGJvb2wgbV91c2VkT25BWFRocmVhZCB7IHRydWUgfTsKIAogICAgIC8v
IFN0b3JlcyB0aGUgcGFyZW50IElEIGFuZCBjaGlsZHJlbiBJRFMgZm9yIGEgZ2l2ZW4gSXNvbGF0
ZWRPYmplY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tCmluZGV4IDZi
MGEyMTFmMmVmNy4uYWUxZDYxY2Y1NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9tYWMvQVhJc29sYXRlZE9i
amVjdE1hYy5tbQpAQCAtODIsNiArODIsMTEgQEAgUmVtb3RlQVhPYmplY3RSZWYgQVhJc29sYXRl
ZE9iamVjdDo6cmVtb3RlUGFyZW50T2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gaXM8QVhJc29s
YXRlZE9iamVjdD4oc2Nyb2xsVmlldykgPyBkb3duY2FzdDxBWElzb2xhdGVkT2JqZWN0PihzY3Jv
bGxWaWV3KS0+bV9yZW1vdGVQYXJlbnQuZ2V0KCkgOiBuaWw7CiB9CiAKK0Zsb2F0UmVjdCBBWElz
b2xhdGVkT2JqZWN0OjpwcmltYXJ5U2NyZWVuUmVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRy
ZWUoKS0+Z2VvbWV0cnlNYW5hZ2VyKCktPnByaW1hcnlTY3JlZW5SZWN0KCk7Cit9CisKIEZsb2F0
UmVjdCBBWElzb2xhdGVkT2JqZWN0Ojpjb252ZXJ0UmVjdFRvUGxhdGZvcm1TcGFjZShjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIEFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2Ugc3BhY2UpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlVmFsdWVGcm9tTWFpblRocmVh
ZDxGbG9hdFJlY3Q+KFsmcmVjdCwgJnNwYWNlLCB0aGlzXSAoKSAtPiBGbG9hdFJlY3QgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9i
amVjdE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RNYWMubW0KaW5kZXggYzIxYzhmMDFmZTg1Li5kNjQ3NjFiMjU5YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdE1hYy5tbQpAQCAtNDUsNiArNDUsNyBAQAogCiAjaWYgRU5BQkxFKEFDQ0VTU0lCSUxJ
VFkpICYmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbXBv
cnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCiAjaW1wb3J0ICJXaWRnZXQu
aCIKIApAQCAtNzgsNiArNzksMTEgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCitGbG9hdFJlY3QgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6cHJpbWFyeVNjcmVlblJlY3QoKSBjb25zdAoreworICAgIHJldHVy
biBzY3JlZW5SZWN0Rm9yUHJpbWFyeVNjcmVlbigpOworfQorCiBGbG9hdFJlY3QgQWNjZXNzaWJp
bGl0eU9iamVjdDo6Y29udmVydFJlY3RUb1BsYXRmb3JtU3BhY2UoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBBY2Nlc3NpYmlsaXR5Q29udmVyc2lvblNwYWNlIHNwYWNlKSBjb25zdAogewogICAgIC8v
IFdlYktpdDEgY29kZSBwYXRoLi4uIHBsYXRmb3JtV2lkZ2V0KCkgZXhpc3RzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCAzZDNmOWVkMDIxNWEuLmI2YzRmMWZk
NzdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTEzNjEs
MTYgKzEzNjEsNiBAQCAtIChOU0JlemllclBhdGggKilwYXRoCiAgICAgcmV0dXJuIFtzZWxmIGJl
emllclBhdGhGcm9tUGF0aDp0cmFuc2Zvcm1lZFBhdGhdOwogfQogCi0tIChOU051bWJlciAqKXBy
aW1hcnlTY3JlZW5IZWlnaHQKLXsKLSAgICAvLyBUaGUgcmVjdCBmb3IgcHJpbWFyeSBzY3JlZW4g
c2hvdWxkIG5vdCBjaGFuZ2UgaW4gbm9ybWFsIHVzZS4gU28gY2FjaGUgaXQKLSAgICAvLyBoZXJl
IHRvIGF2b2lkIGhpdHRpbmcgdGhlIG1haW4gdGhyZWFkIHJlcGVhdGVkbHkuCi0gICAgc3RhdGlj
IEZsb2F0UmVjdCBzY3JlZW5SZWN0ID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21N
YWluVGhyZWFkPEZsb2F0UmVjdD4oW10gKCkgLT4gRmxvYXRSZWN0IHsKLSAgICAgICAgcmV0dXJu
IHNjcmVlblJlY3RGb3JQcmltYXJ5U2NyZWVuKCk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoRmxvYXQ6c2NyZWVuUmVjdC5oZWlnaHQoKV07Ci19Ci0KIC0gKHNpemVf
dCljaGlsZHJlblZlY3RvclNpemUKIHsKICAgICByZXR1cm4gc2VsZi5heEJhY2tpbmdPYmplY3Qt
PmNoaWxkcmVuKCkuc2l6ZSgpOwpAQCAtMTc1OSw4ICsxNzQ5LDkgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhT
aXplOk5TTWFrZVNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV07CiAgICAgfQogCi0g
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5UHJp
bWFyeVNjcmVlbkhlaWdodEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbc2VsZiBwcmltYXJ5
U2NyZWVuSGVpZ2h0XTsKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVByaW1hcnlTY3JlZW5IZWlnaHRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1
cm4gQChiYWNraW5nT2JqZWN0LT5wcmltYXJ5U2NyZWVuUmVjdCgpLmhlaWdodCgpKTsKKwogICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVBvc2l0
aW9uQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHBvc2l0aW9uXTsKICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1
dGVdKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>