<?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>15394</bug_id>
          
          <creation_ts>2007-10-06 00:55:22 -0700</creation_ts>
          <short_desc>notifyAttributeChanged should be removed (or at least reduced in usage)</short_desc>
          <delta_ts>2008-02-03 15:21:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>16090</blocked>
    
    <blocked>17166</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>oliver</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>57916</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-06 00:55:22 -0700</bug_when>
    <thetext>notifyAttributeChanged should be removed (or at least reduced in usage)

Currently modifying any attribute on an SVGStyledElement will cause that element to relayout.  This is bad.  Very bad.

This is due to the evil &quot;notifyAttributeChanged&quot; function which indiscriminately calls renderer()-&gt;setNeedsLayout() w/o first checking what attribute might be changed (or allowing other parsing machinery to see if the resulting new value is actually different from the previous one.

notifyAttributeChanged (i&apos;m told) may need to exist to support SVG &quot;tear off&quot; javascript bindings. I&apos;m not 100% convinced of that.  Regardless, notifyAttributeChanged can be removed from attributeChanged and the appropriate places in the code currently depending on the nAC call cleaned up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69255</commentid>
    <comment_count>1</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-02-03 08:43:57 -0800</bug_when>
    <thetext>Die notifyAttributeChange, long live attributeChanged!

Using a novel approach for handling SVG DOM dynamic updates, I found a way to eliminate the notifyAttributeChange sledgehammer. SVG Animated properties know it&apos;s corresponding attribute (SVGNames::foobarAttr) already, so it&apos;s easy to call element-&gt;attributeChanged(..myCorrespondingAttribute) from the JS bindings. I don&apos;t want to go into detail how non-animated properties are handled - just want to outline the general idea.

All SVG elements need a proper svgAttributeChanged / childrenChanged implementation now - instead of implementing nAC() - which blindly updated. Gives an amazing performance boost when running layout tests or trying heavy web apps like Lively Kernel.

Uploading insanely big patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69256</commentid>
    <comment_count>2</comment_count>
      <attachid>18884</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-02-03 08:59:43 -0800</bug_when>
    <thetext>Created attachment 18884
Initial patch

Initial patch, no regressions, just performance boost. Contains a lot search/replace changes, like s/.localName()// in the ANIMATED_* property definitions, affecting all files in svg/*.

Have fun reviewing ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69274</commentid>
    <comment_count>3</comment_count>
      <attachid>18884</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-03 14:43:40 -0800</bug_when>
    <thetext>Comment on attachment 18884
Initial patch

This is a fantastic patch.  We discussed a bunch of little stuff over IRC, and you said you were going to upload a new one.  Really really great work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69275</commentid>
    <comment_count>4</comment_count>
      <attachid>18889</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-02-03 14:54:17 -0800</bug_when>
    <thetext>Created attachment 18889
Updated patch

Hopefully fixed all issues Eric mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69277</commentid>
    <comment_count>5</comment_count>
      <attachid>18889</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-02-03 15:08:26 -0800</bug_when>
    <thetext>Comment on attachment 18889
Updated patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69278</commentid>
    <comment_count>6</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-02-03 15:21:09 -0800</bug_when>
    <thetext>Landed in r29951.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18884</attachid>
            <date>2008-02-03 08:59:43 -0800</date>
            <delta_ts>2008-02-03 14:54:17 -0800</delta_ts>
            <desc>Initial patch</desc>
            <filename>SVGPerformanceBoost.diff</filename>
            <type>text/plain</type>
            <size>245315</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTk0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjc4IEBACisyMDA4LTAyLTAzICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzk0
CisKKyAgICAgICAgRHJhbWF0aWNhbGx5IGltcHJvdmUgZHluYW1pYyB1cGRhdGUgcGVyZm9ybWFu
Y2UgaW4gRE9NIC8gU1ZHIERPTS4KKworICAgICAgICBUaGUgbm90aWZ5QXR0cmlidXRlQ2hhbmdl
KCkgc2xlZGdlaGFtbWVyIGlzIGdvbmUgbm93LiBJdCB3YXMgaW1wbGVtZW50ZWQgb24gcXVpdGUg
YSBsb3Qgb2YKKyAgICAgICAgU1ZHKkVsZW1lbnQgY2xhc3NlcyBhbmQgYmxpbmRseSByZWFjdGVk
IG9uIGFueSBwcm9wZXJ0eSBjaGFuZ2UgY2F1c2VkIGJ5IERPTSAvIFNWRyBET00KKyAgICAgICAg
YnkgcmVidWlsZGluZyBzdHlsZS9yZW5kZXJlciBldGMuIHdpdGhvdXQgYWN0dWFsbHkgY2hlY2tp
bmcgd2hhdCBjaGFuZ2VkLiBTVkcgdXNlZCBhIGhhY2sKKyAgICAgICAgZm9yIHllYXJzIHRoYXQg
YXR0cmlidXRlQ2hhbmdlZCgpIGNhbGxlZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSAtIHdoaWNo
IHJlc3VsdHMgaW4gcG9vcgorICAgICAgICBzY3JpcHRpbmcgcGVyZm9ybWFuY2UgYW5kL29yIGR5
bmFtaWMgY3JlYXRpb24vbW9kaWZpY2lhdGlvbiBvZiBlbGVtZW50cyB1c2luZyBTVkcgRE9NLgor
CisgICAgICAgIFByb3Blcmx5IGltcGxlbWVudCBjaGlsZHJlbkNoYW5nZWQgLyBhdHRyaWJ1dGVD
aGFuZ2VkIGluIFNWRyB3aXRoIHNvbWUgZGVyaXZhdGlvbiBmcm9tIHRoZSBIVE1MIGNvZGUuCisg
ICAgICAgIE91ciBTVkcqIGVsZW1lbnQgY2xhc3NlcyBpbXBsZW1lbnQgInN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIiBpbnN0ZWFkIG9mCisgICAgICAgICJhdHRyaWJ1
dGVDaGFuZ2VkKEF0dHJpYnV0ZSouLi4pIiB0byBiZSBhYmxlIHRvIHVuaWZ5IERPTSAvIFNWRyBE
T00gdXBkYXRlcy4gU1ZHIERPTSBjbGFzc2VzCisgICAgICAgIGFyZSBhd2FyZSBvZiB0aGUgYXR0
cmlidXRlIG5hbWUgdGhleSBiZWxvbmcgdG8uIFNvIHdoZW4gdXNpbmcgInJlY3RFbGVtZW50LnRy
YW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkuc2V0Um90YXRlKDQ1KSIKKyAgICAgICAgU1ZHIERP
TSB1cGRhdGVzIHRoZSA8cmVjdD4gZWxlbWVudCBieSBjYWxsaW5nIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAg
IFNWR1JlY3RFbGVtZW50LiBTbyB3ZSdyZSBub3cgYWJsZSB0byBoYW5kbGUgZmFzdCBkeW5hbWlj
IHVwZGF0ZXMgaW4gYSB1bmlmaWVkIHdheSAtIGxlYWRpbmcgdG8gbGVzcyBidWdzLgorCisgICAg
ICAgIE5vIHJlZ3Jlc3Npb25zLCBqdXN0IHBlcmZvcm1hbmNlIGJvb3N0LgorICAgICAgICBPbmx5
IHVwZGF0ZWQgYWxsIGVsZW1lbnRzIG5lY2Vzc2FyeSB0byBsZXQgdXMgcGFzcyBsYXlvdXQgdGVz
dHMgdy9vIHJlZ3Jlc3Npb25zLiBOZWVkIHRvIGNyYXdsIHRocm91Z2gKKyAgICAgICAgYWxsIFNW
RypFbGVtZW50IGNsYXNzZXMgYW5kIGltcGxlbWVudCBzdmdBdHRyaWJ1dGVDaGFuZ2VkIC8gY2hp
bGRyZW5DaGFuZ2VkIGFueXdoZXJlIG5lZWRlZCBpbiBhIGZvbGxvdy11cCBwYXRjaC4KKworICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUE9EVHlwZVdyYXBwZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yUmVhZFdyaXRlOjpjb21taXRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkT25seTo6Y29t
bWl0Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9y
Rm9yTGlzdDo6SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDo6b3BlcmF0b3IgUE9EVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q6
OmNvbW1pdENoYW5nZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnTGlzdEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BhdGhTZWdMaXN0OjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NWR1BhdGhTZWdMaXN0Ojppbml0aWFsaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTU1ZHUGF0aFNlZ0xpc3Q6Omluc2VydEl0ZW1CZWZvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNTVkdQYXRoU2VnTGlzdDo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTVkdQYXRoU2VnTGlzdDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NW
R1BhdGhTZWdMaXN0OjphcHBlbmRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR1Bv
aW50TGlzdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BvaW50TGlzdDo6Y2xl
YXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQb2ludExpc3Q6OmluaXRpYWxpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTVkdQb2ludExpc3Q6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTVkdQb2ludExpc3Q6Omluc2VydEl0ZW1CZWZvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNTVkdQb2ludExpc3Q6OnJlcGxhY2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUG9p
bnRMaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUG9pbnRMaXN0Ojph
cHBlbmRJdGVtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR1RyYW5zZm9ybUxpc3RDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdUcmFuc2Zvcm1MaXN0OjpjbGVhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NWR1RyYW5zZm9ybUxpc3Q6OmluaXRpYWxpemUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNTVkdUcmFuc2Zvcm1MaXN0OjpnZXRJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTU1ZHVHJhbnNmb3JtTGlzdDo6aW5zZXJ0SXRlbUJlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1NWR1RyYW5zZm9ybUxpc3Q6OnJlcGxhY2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTU1ZHVHJhbnNmb3JtTGlzdDo6cmVtb3ZlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpKU1NW
R1RyYW5zZm9ybUxpc3Q6OmFwcGVuZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHR3JhZGllbnRTdG9wOjpzZXRT
dHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0dyYWRpZW50U3RvcC5oOgorICAg
ICAgICAqIHN2Zy9TVkdBRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBRWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogc3ZnL1NWR0FFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0FuZ2xlLmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHQW5nbGUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuZ2xlOjphc3NvY2lhdGVkQXR0cmlidXRlTmFtZSk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkVGVtcGxhdGU6OlNWR0FuaW1hdGVkVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRUZW1wbGF0ZTo6d3JhcHBlckNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVGVtcGxhdGU6OmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlv
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uRWxlbWVudDo6cGFy
c2VCZWdpbk9yRW5kVmFsdWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNhbnZhc1Jlc291cmNl
KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmlzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xp
cFBhdGhFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgICog
c3ZnL1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW5zZXJ0
ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlwc2VFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dDo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgICog
c3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVy
Z2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6
CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxl
bmNlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRml0
VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRml0VG9WaWV3
Qm94Lmg6CisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAg
ICAgKiBzdmcvU1ZHR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR0VsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVu
dEVsZW1lbnQ6OlNWR0dyYWRpZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFk
aWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R3JhZGllbnRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
R3JhZGllbnRFbGVtZW50OjpidWlsZFN0b3BzKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0ltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdMYW5nU3BhY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHTGFuZ1NwYWNlLmg6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlzdDo6U1ZHTGVuZ3RoTGlzdCk6Cisg
ICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xpc3QuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xpc3Q6OlNWR0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlz
dDo6YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUE9ETGlz
dDo6U1ZHUE9ETGlzdCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdO
dW1iZXJMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR051bWJlckxpc3Q6OlNWR051bWJl
ckxpc3QpOgorICAgICAgICAqIHN2Zy9TVkdOdW1iZXJMaXN0Lmg6CisgICAgICAgICogc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpwYXRo
U2VnTGlzdCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1BhdGhTZWcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWc6OmFzc29jaWF0ZWRB
dHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0aFNlZ0xpc3Q6OlNWR1BhdGhTZWdMaXN0KToKKyAgICAgICAgKiBz
dmcvU1ZHUGF0aFNlZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRlcm5FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdQb2ludExpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9pbnRMaXN0OjpTVkdQb2lu
dExpc3QpOgorICAgICAgICAqIHN2Zy9TVkdQb2ludExpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OlNWR1Bv
bHlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50Ojpwb2ludHMpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUG9seWdv
bkVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQb2x5Z29uRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdQb2x5bGlu
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA6Cisg
ICAgICAgICogc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKToKKyAgICAg
ICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSZWN0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3Rv
cEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0
b3BFbGVtZW50OjpjcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NWR1N0b3BFbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3RyaW5nTGlzdDo6U1ZHU3RyaW5nTGlzdCk6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xp
c3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGFibGUuY3BwOgorICAgICAgICAqIHN2Zy9TVkdT
dHlsYWJsZS5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50Ojpub3RpZnlSZXNvdXJjZVBhcmVudElmRXhpc3Rh
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdT
dHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRl
KToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVp
cmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0ZW5z
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdUZXN0cy5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcDoKKyAg
ICAgICAgKFNWR1RyYW5zZm9ybUxpc3Q6OlNWR1RyYW5zZm9ybUxpc3QpOgorICAgICAgICAqIHN2
Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6aXNLbm93bkF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHVVJJ
UmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6aXNLbm93
bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5oOgorICAgICAgICAq
IHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmJ1aWxk
UGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxl
bWVudDo6U1ZHVmlld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6
OnZpZXdUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVmlld1NwZWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6OlNW
R1ZpZXdTcGVjKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDoKKyAgICAgICAgKiBzdmcv
U1ZHWm9vbUFuZFBhbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjppc0tu
b3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHWm9vbUFuZFBhbi5oOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZTo6aW52YWxp
ZGF0ZUNsaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2U6OmFkZENsaWVudCk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlTWFza2VyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvY2cvU1ZHUGFp
bnRTZXJ2ZXJHcmFkaWVudENnLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2VydmVy
R3JhZGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZTo6aW1hZ2VDaGFuZ2Vk
KToKKwogMjAwOC0wMi0wMiAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IGZvciBidWcgNTQ2OCwgc3VwcG9ydCBDU1MzIDpvbmx5LWNoaWxkIGFuZCA6b25seS1v
Zi10eXBlIHNlbGVjdG9ycy4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBl
V3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQT0RUeXBl
V3JhcHBlci5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQ
T0RUeXBlV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcsNyArNDcs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBvcGVyYXRvciBQT0RUeXBlKCkgPSAwOwogCiAgICAg
Ly8gU2V0dGVyIHdyYXBwZXIKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdlKEtKUzo6RXhl
Y1N0YXRlKiwgUE9EVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoUE9E
VHlwZSwgU1ZHRWxlbWVudCopID0gMDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBPRFR5cGUs
IHR5cGVuYW1lIFBPRFR5cGVDcmVhdG9yPgpAQCAtNzMsMTIgKzczLDE1IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKSB7IHJldHVybiAobV9jcmVhdG9yLmdldCgpLT4q
bV9nZXR0ZXIpKCk7IH0KIAogICAgIC8vIFNldHRlciB3cmFwcGVyCi0gICAgdmlydHVhbCB2b2lk
IGNvbW1pdENoYW5nZShLSlM6OkV4ZWNTdGF0ZSogZXhlYywgUE9EVHlwZSB0eXBlKQorICAgIHZp
cnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoUE9EVHlwZSB0eXBlLCBTVkdFbGVtZW50KiBjb250ZXh0
KQogICAgIHsKICAgICAgICAgaWYgKCFtX3NldHRlcikKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAobV9jcmVhdG9yLmdldCgpLT4qbV9zZXR0ZXIpKHR5cGUpOworCisgICAgICAgIGlm
IChjb250ZXh0KQorICAgICAgICAgICAgY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChtX2Ny
ZWF0b3ItPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTEwMiw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBvcGVyYXRvciBQT0RUeXBlKCkg
eyByZXR1cm4gbV9wb2RUeXBlOyB9CiAKICAgICAvLyBTZXR0ZXIgd3JhcHBlcgotICAgIHZpcnR1
YWwgdm9pZCBjb21taXRDaGFuZ2UoS0pTOjpFeGVjU3RhdGUqLCBQT0RUeXBlIHR5cGUpCisgICAg
dmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShQT0RUeXBlIHR5cGUsIFNWR0VsZW1lbnQqKQogICAg
IHsKICAgICAgICAgbV9wb2RUeXBlID0gdHlwZTsKICAgICB9CkBAIC0xMTUsMTYgKzExOCw0NiBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgogY2xhc3MgU1ZHUE9ETGlzdEl0ZW07CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFBPRFR5cGU+Ci1jbGFzcyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRv
ckZvckxpc3QgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkV3JpdGU8UE9E
VHlwZSwgU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4gPgorY2xhc3MgSlNTVkdQT0RUeXBlV3JhcHBl
ckNyZWF0b3JGb3JMaXN0IDogcHVibGljIEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9EVHlwZT4KIHsK
IHB1YmxpYzoKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3QoU1ZHUE9ETGlz
dEl0ZW08UE9EVHlwZT4qIGNyZWF0b3IpCi0gICAgICAgIDogSlNTVkdQT0RUeXBlV3JhcHBlckNy
ZWF0b3JSZWFkV3JpdGU8UE9EVHlwZSwgU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4gPihjcmVhdG9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1BPRExpc3RJdGVtPFBPRFR5cGU+Ojp2YWx1
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPjo6c2V0
VmFsdWUpCi0gICAgeyB9CisgICAgdHlwZWRlZiBQT0RUeXBlIChTVkdQT0RMaXN0SXRlbTxQT0RU
eXBlPjo6KkdldHRlck1ldGhvZCkoKSBjb25zdDsgCisgICAgdHlwZWRlZiB2b2lkIChTVkdQT0RM
aXN0SXRlbTxQT0RUeXBlPjo6KlNldHRlck1ldGhvZCkoUE9EVHlwZSk7CisKKyAgICBKU1NWR1BP
RFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3QoU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4qIGNyZWF0
b3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgIDogbV9jcmVh
dG9yKGNyZWF0b3IpCisgICAgICAgICwgbV9nZXR0ZXIoJlNWR1BPRExpc3RJdGVtPFBPRFR5cGU+
Ojp2YWx1ZSkKKyAgICAgICAgLCBtX3NldHRlcigmU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT46OnNl
dFZhbHVlKQorICAgICAgICAsIG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFt
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NyZWF0b3IpOworICAgICAgICBBU1NFUlQobV9n
ZXR0ZXIpOworICAgICAgICBBU1NFUlQobV9zZXR0ZXIpOworICAgIH0KIAogICAgIHZpcnR1YWwg
fkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdCgpIHsgfQorCisgICAgLy8gR2V0dGVy
IHdyYXBwZXIKKyAgICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKSB7IHJldHVybiAobV9jcmVh
dG9yLmdldCgpLT4qbV9nZXR0ZXIpKCk7IH0KKworICAgIC8vIFNldHRlciB3cmFwcGVyCisgICAg
dmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShQT0RUeXBlIHR5cGUsIFNWR0VsZW1lbnQqIGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIW1fc2V0dGVyKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIChtX2NyZWF0b3IuZ2V0KCktPiptX3NldHRlcikodHlwZSk7CisKKyAgICAgICAg
aWYgKGNvbnRleHQpCisgICAgICAgICAgICBjb250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKG1f
YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICAvLyBVcGRh
dGUgY2FsbGJhY2tzCisgICAgUmVmUHRyPFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+ID4gbV9jcmVh
dG9yOworICAgIEdldHRlck1ldGhvZCBtX2dldHRlcjsKKyAgICBTZXR0ZXJNZXRob2QgbV9zZXR0
ZXI7CisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hc3NvY2lhdGVkQXR0cmlidXRlTmFtZTsK
IH07CiAKIC8vIENhY2hpbmcgZmFjaWxpdGllcwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR1BhdGhTZWdMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnTGlzdEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC00Myw3ICs0Myw4IEBAIEpTVmFsdWUqIEpTU1ZHUGF0aFNlZ0xpc3Q6
OmNsZWFyKEV4ZWNTdGEKICAgICBpbXAtPmNsZWFyKGVjKTsKIAogICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7Ci0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKKwor
ICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1
dGVOYW1lKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC01OSw3ICs2MCw3
IEBAIEpTVmFsdWUqIEpTU1ZHUGF0aFNlZ0xpc3Q6OmluaXRpYWxpemUoRXgKICAgICBLSlM6OkpT
VmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0
ZUNoYW5nZSgpOyAgICAKKyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5h
c3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtOTksNyArMTAwLDcgQEAgSlNWYWx1ZSogSlNTVkdQYXRoU2VnTGlzdDo6aW5zZXJ0SXRlbUJl
ZgogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBXVEY6OmdldFB0cihpbXAt
Pmluc2VydEl0ZW1CZWZvcmUobmV3SXRlbSwgaW5kZXgsIGVjKSksIG1fY29udGV4dC5nZXQoKSk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAotICAgIG1fY29udGV4dC0+bm90aWZ5
QXR0cmlidXRlQ2hhbmdlKCk7ICAgIAorICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdl
ZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOyAgICAKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCkBAIC0xMjAsNyArMTIxLDcgQEAgSlNWYWx1ZSogSlNTVkdQYXRoU2VnTGlzdDo6cmVw
bGFjZUl0ZW0oRQogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBXVEY6Omdl
dFB0cihpbXAtPnJlcGxhY2VJdGVtKG5ld0l0ZW0sIGluZGV4LCBlYykpLCBtX2NvbnRleHQuZ2V0
KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5v
dGlmeUF0dHJpYnV0ZUNoYW5nZSgpOyAgICAKKyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtMTQyLDcgKzE0Myw3IEBAIEpTVmFsdWUqIEpTU1ZHUGF0aFNlZ0xpc3Q6
OnJlbW92ZUl0ZW0oRXgKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2Jq
LmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOyAgICAKKyAgICBtX2Nv
bnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgp
KTsgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTU2LDEyICsxNTcsMTAgQEAgSlNW
YWx1ZSogSlNTVkdQYXRoU2VnTGlzdDo6YXBwZW5kSXRlbShFeAogICAgIEtKUzo6SlNWYWx1ZSog
cmVzdWx0ID0gdG9KUyhleGVjLCBXVEY6OmdldFB0cihpbXAtPmFwcGVuZEl0ZW0obmV3SXRlbSwg
ZWMpKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwog
Ci0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsgICAgCisgICAgbV9jb250
ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7
ICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
Ci0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQb2lu
dExpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQ
b2ludExpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNTVkdQb2ludExpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNDMsNyArNDMsNyBAQCBKU1ZhbHVlKiBKU1NWR1BvaW50TGlzdDo6Y2xlYXIoRXhlY1N0YXRl
CiAgICAgaW1wLT5jbGVhcihlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAot
ICAgIG1fY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CisgICAgbV9jb250ZXh0LT5z
dmdBdHRyaWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTU3LDEyICs1NywxMiBAQCBKU1ZhbHVlKiBK
U1NWR1BvaW50TGlzdDo6aW5pdGlhbGl6ZShFeGVjCiAgICAgU1ZHTGlzdDxSZWZQdHI8U1ZHUE9E
TGlzdEl0ZW08RmxvYXRQb2ludD4gPiA+KiBsaXN0SW1wID0gaW1wOwogCiAgICAgU1ZHUE9ETGlz
dEl0ZW08RmxvYXRQb2ludD4qIGxpc3RJdGVtID0gbGlzdEltcC0+aW5pdGlhbGl6ZShuZXcgU1ZH
UE9ETGlzdEl0ZW08RmxvYXRQb2ludD4obmV3SXRlbSksIGVjKS5nZXQoKTsgCi0gICAgSlNTVkdQ
T0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KiBvYmogPSBuZXcgSlNTVkdQ
T0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KGxpc3RJdGVtKTsKKyAgICBK
U1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4qIG9iaiA9IG5ldyBK
U1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4obGlzdEl0ZW0sIGlt
cC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6OkpTVmFsdWUqIHJlc3Vs
dCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwor
ICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1
dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTgyLDcgKzgyLDcgQEAgSlNW
YWx1ZSogSlNTVkdQb2ludExpc3Q6OmdldEl0ZW0oRXhlY1N0YQogICAgIFNWR0xpc3Q8UmVmUHRy
PFNWR1BPRExpc3RJdGVtPEZsb2F0UG9pbnQ+ID4gPiogbGlzdEltcCA9IGltcDsKIAogICAgIFNW
R1BPRExpc3RJdGVtPEZsb2F0UG9pbnQ+KiBsaXN0SXRlbSA9IGxpc3RJbXAtPmdldEl0ZW0oaW5k
ZXgsIGVjKS5nZXQoKTsKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8Rmxv
YXRQb2ludD4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8Rmxv
YXRQb2ludD4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlz
dDxGbG9hdFBvaW50Piogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlz
dDxGbG9hdFBvaW50PihsaXN0SXRlbSwgaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsK
IAogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1fY29udGV4dC5n
ZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKQEAgLTEwNSwxMiArMTA1LDEy
IEBAIEpTVmFsdWUqIEpTU1ZHUG9pbnRMaXN0OjppbnNlcnRJdGVtQmVmb3IKICAgICBTVkdMaXN0
PFJlZlB0cjxTVkdQT0RMaXN0SXRlbTxGbG9hdFBvaW50PiA+ID4qIGxpc3RJbXAgPSBpbXA7CiAK
ICAgICBTVkdQT0RMaXN0SXRlbTxGbG9hdFBvaW50PiogbGlzdEl0ZW0gPSBsaXN0SW1wLT5pbnNl
cnRJdGVtQmVmb3JlKG5ldyBTVkdQT0RMaXN0SXRlbTxGbG9hdFBvaW50PihuZXdJdGVtKSwgaW5k
ZXgsIGVjKS5nZXQoKTsKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8Rmxv
YXRQb2ludD4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8Rmxv
YXRQb2ludD4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlz
dDxGbG9hdFBvaW50Piogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlz
dDxGbG9hdFBvaW50PihsaXN0SXRlbSwgaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsK
IAogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1fY29udGV4dC5n
ZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAotICAgIG1fY29udGV4dC0+
bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CisgICAgbV9jb250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFu
Z2VkKGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQpAQCAtMTMxLDEyICsxMzEsMTIgQEAgSlNWYWx1ZSogSlNTVkdQb2ludExpc3Q6OnJlcGxh
Y2VJdGVtKEV4ZQogICAgIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEZsb2F0UG9pbnQ+
ID4gPiogbGlzdEltcCA9IGltcDsKIAogICAgIFNWR1BPRExpc3RJdGVtPEZsb2F0UG9pbnQ+KiBs
aXN0SXRlbSA9IGxpc3RJbXAtPnJlcGxhY2VJdGVtKG5ldyBTVkdQT0RMaXN0SXRlbTxGbG9hdFBv
aW50PihuZXdJdGVtKSwgaW5kZXgsIGVjKS5nZXQoKTsgCi0gICAgSlNTVkdQT0RUeXBlV3JhcHBl
ckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBl
ckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KGxpc3RJdGVtKTsKKyAgICBKU1NWR1BPRFR5cGVX
cmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVX
cmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4obGlzdEl0ZW0sIGltcC0+YXNzb2NpYXRl
ZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhl
Yywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOworICAgIG1fY29udGV4
dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwog
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBKU1ZhbHVlKiBKU1NW
R1BvaW50TGlzdDo6cmVtb3ZlSXRlbShFeGVjCiAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0
b0pTKGV4ZWMsIG9iaiwgbV9jb250ZXh0LmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOwogCi0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKKyAgICBt
X2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFt
ZSgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNzUsMTIgKzE3NSwxMiBAQCBKU1Zh
bHVlKiBKU1NWR1BvaW50TGlzdDo6YXBwZW5kSXRlbShFeGVjCiAgICAgU1ZHTGlzdDxSZWZQdHI8
U1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4gPiA+KiBsaXN0SW1wID0gaW1wOwogCiAgICAgU1ZH
UE9ETGlzdEl0ZW08RmxvYXRQb2ludD4qIGxpc3RJdGVtID0gbGlzdEltcC0+YXBwZW5kSXRlbShu
ZXcgU1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4obmV3SXRlbSksIGVjKS5nZXQoKTsgCi0gICAg
SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KiBvYmogPSBuZXcg
SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KGxpc3RJdGVtKTsK
KyAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4qIG9iaiA9
IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4obGlzdEl0
ZW0sIGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6OkpTVmFsdWUq
IHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5n
ZSgpOworICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRB
dHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE4OCw1ICsxODgs
MyBAQCBKU1ZhbHVlKiBKU1NWR1BvaW50TGlzdDo6YXBwZW5kSXRlbShFeGVjCiB9CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTU1ZHVHJhbnNmb3JtTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1NWR1RyYW5zZm9ybUxpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAyOTk0
NikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdUcmFuc2Zvcm1MaXN0Q3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKQEAgLTQzLDcgKzQzLDcgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1M
aXN0OjpjbGVhcihFeGVjUwogICAgIGltcC0+Y2xlYXIoZWMpOwogICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOwor
ICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1
dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC01NywxMiArNTcs
MTIgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1MaXN0Ojppbml0aWFsaXplKAogICAgIFNWR0xp
c3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPFNWR1RyYW5zZm9ybT4gPiA+KiBsaXN0SW1wID0gaW1w
OwogCiAgICAgU1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3JtPiogbGlzdEl0ZW0gPSBsaXN0SW1w
LT5pbml0aWFsaXplKG5ldyBTVkdQT0RMaXN0SXRlbTxTVkdUcmFuc2Zvcm0+KG5ld0l0ZW0pLCBl
YykuZ2V0KCk7IAotICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxTVkdUcmFu
c2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PFNWR1Ry
YW5zZm9ybT4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlz
dDxTVkdUcmFuc2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JM
aXN0PFNWR1RyYW5zZm9ybT4obGlzdEl0ZW0sIGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUo
KSk7CiAKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRl
eHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRl
eHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOworICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRl
Q2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1MaXN0Ojpn
ZXRJdGVtKEV4ZQogICAgIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPFNWR1RyYW5zZm9y
bT4gPiA+KiBsaXN0SW1wID0gaW1wOwogCiAgICAgU1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3Jt
PiogbGlzdEl0ZW0gPSBsaXN0SW1wLT5nZXRJdGVtKGluZGV4LCBlYykuZ2V0KCk7Ci0gICAgSlNT
VkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PFNWR1RyYW5zZm9ybT4qIG9iaiA9IG5ldyBK
U1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3JtPihsaXN0SXRlbSk7
CisgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PFNWR1RyYW5zZm9ybT4qIG9i
aiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3JtPihs
aXN0SXRlbSwgaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsKIAogICAgIEtKUzo6SlNW
YWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1fY29udGV4dC5nZXQoKSk7CiAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKQEAgLTEwNSwxMiArMTA1LDEyIEBAIEpTVmFsdWUqIEpT
U1ZHVHJhbnNmb3JtTGlzdDo6aW5zZXJ0SXRlbUIKICAgICBTVkdMaXN0PFJlZlB0cjxTVkdQT0RM
aXN0SXRlbTxTVkdUcmFuc2Zvcm0+ID4gPiogbGlzdEltcCA9IGltcDsKIAogICAgIFNWR1BPRExp
c3RJdGVtPFNWR1RyYW5zZm9ybT4qIGxpc3RJdGVtID0gbGlzdEltcC0+aW5zZXJ0SXRlbUJlZm9y
ZShuZXcgU1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3JtPihuZXdJdGVtKSwgaW5kZXgsIGVjKS5n
ZXQoKTsKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3Jt
Piogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxTVkdUcmFuc2Zv
cm0+KGxpc3RJdGVtKTsKKyAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZH
VHJhbnNmb3JtPiogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxT
VkdUcmFuc2Zvcm0+KGxpc3RJdGVtLCBpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwog
CiAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIG9iaiwgbV9jb250ZXh0Lmdl
dCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCi0gICAgbV9jb250ZXh0LT5u
b3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKKyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBKU1ZhbHVlKiBKU1NWR1RyYW5zZm9ybUxpc3Q6OnJl
cGxhY2VJdGVtCiAgICAgU1ZHTGlzdDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3Jt
PiA+ID4qIGxpc3RJbXAgPSBpbXA7CiAKICAgICBTVkdQT0RMaXN0SXRlbTxTVkdUcmFuc2Zvcm0+
KiBsaXN0SXRlbSA9IGxpc3RJbXAtPnJlcGxhY2VJdGVtKG5ldyBTVkdQT0RMaXN0SXRlbTxTVkdU
cmFuc2Zvcm0+KG5ld0l0ZW0pLCBpbmRleCwgZWMpLmdldCgpOyAKLSAgICBKU1NWR1BPRFR5cGVX
cmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3JtPiogb2JqID0gbmV3IEpTU1ZHUE9EVHlw
ZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxTVkdUcmFuc2Zvcm0+KGxpc3RJdGVtKTsKKyAgICBKU1NW
R1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3JtPiogb2JqID0gbmV3IEpT
U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxTVkdUcmFuc2Zvcm0+KGxpc3RJdGVtLCBp
bXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgS0pTOjpKU1ZhbHVlKiByZXN1
bHQgPSB0b0pTKGV4ZWMsIG9iaiwgbV9jb250ZXh0LmdldCgpKTsKICAgICBzZXRET01FeGNlcHRp
b24oZXhlYywgZWMpOwogCi0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsK
KyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmli
dXRlTmFtZSgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNjEsNyArMTYxLDcgQEAg
SlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1MaXN0OjpyZW1vdmVJdGVtKAogICAgIEtKUzo6SlNWYWx1
ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1fY29udGV4dC5nZXQoKSk7CiAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAotICAgIG1fY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hh
bmdlKCk7CisgICAgbV9jb250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRl
ZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTc1LDEyICsx
NzUsMTIgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1MaXN0OjphcHBlbmRJdGVtKAogICAgIFNW
R0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPFNWR1RyYW5zZm9ybT4gPiA+KiBsaXN0SW1wID0g
aW1wOwogCiAgICAgU1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3JtPiogbGlzdEl0ZW0gPSBsaXN0
SW1wLT5hcHBlbmRJdGVtKG5ldyBTVkdQT0RMaXN0SXRlbTxTVkdUcmFuc2Zvcm0+KG5ld0l0ZW0p
LCBlYykuZ2V0KCk7IAotICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxTVkdU
cmFuc2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PFNW
R1RyYW5zZm9ybT4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9y
TGlzdDxTVkdUcmFuc2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JG
b3JMaXN0PFNWR1RyYW5zZm9ybT4obGlzdEl0ZW0sIGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5h
bWUoKSk7CiAKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2Nv
bnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2Nv
bnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOworICAgIG1fY29udGV4dC0+c3ZnQXR0cmli
dXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTE4OCw1ICsxODgsMyBAQCBKU1ZhbHVlKiBKU1NWR1RyYW5zZm9ybUxp
c3Q6OmFwcGVuZEl0ZW0oCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw3ICsxMDI3LDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBpbXAuc2V0JHNldHRlckZ1bmN0aW9uTmFtZSgiIC4gSlNWYWx1ZVRvTmF0aXZl
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikgLiAiKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZShleGVjLCBpbXAp
O1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZShpbXAsIGNvbnRleHQoKSk7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFzc05hbWUqIGlt
cCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwpA
QCAtMTAzNSw2ICsxMDM1LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBlYyIpIGlmIEB7
JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4
ZWMsIGVjKTtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElzU1ZHVHlwZU5lZWRpbmdDb250ZXh0UGFy
YW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChjb250ZXh0KCkpXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICAgICAgY29udGV4dCgpLT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcGwoKS0+YXNzb2NpYXRl
ZEF0dHJpYnV0ZU5hbWUoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBi
cmVhaztcbiIpOwpAQCAtMTA0MiwxMiArMTA0Nyw2IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7ICMgZW5kIHN3aXRjaAotCi0gICAg
ICAgICAgICAgICAgaWYgKElzU1ZHVHlwZU5lZWRpbmdDb250ZXh0UGFyYW1ldGVyKCRpbXBsQ2xh
c3NOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoY29udGV4dCgpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBjb250ZXh0KCktPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpO1xuIik7Ci0gICAg
ICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOyAjIGVuZCBmdW5jdGlvbgogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xMjQ3LDkg
KzEyNDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlvbihleGVjLCBl
Yyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAKICAgICAgICAgaWYg
KCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJ3
cmFwcGVyLT5jb21taXRDaGFuZ2UoZXhlYywgaW1wKTtcbiIpOwotICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYgKGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKSlcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIGNhc3RlZFRo
aXNPYmotPmNvbnRleHQoKS0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIndyYXBwZXItPmNvbW1pdENoYW5nZShp
bXAsIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKSk7XG4iKTsKICAgICAgICAgfQogCiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7
CkBAIC0xMjU4LDkgKzEyNTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9u
Q2FsbCgpCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAK
ICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRDaGFuZ2UoZXhlYywgaW1wKTtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYgKGNhc3RlZFRoaXNPYmotPmNv
bnRleHQoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
ICAgIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKS0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7XG4i
KTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIndyYXBwZXItPmNv
bW1pdENoYW5nZShpbXAsIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKSk7XG4iKTsKICAgICAgICAg
fQogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInJldHVybiByZXN1bHQ7
XG4iKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNw
cAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFkaWVu
dFN0b3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiUmVuZGVyU1ZHR3JhZGllbnRT
dG9wLmgiCiAKICNpbmNsdWRlICJTVkdHcmFkaWVudEVsZW1lbnQuaCIKQEAgLTQ2LDEyICs0NSwx
MyBAQCBSZW5kZXJTVkdHcmFkaWVudFN0b3A6On5SZW5kZXJTVkdHcmFkaWVuCiB2b2lkIFJlbmRl
clNWR0dyYWRpZW50U3RvcDo6c2V0U3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIFJl
bmRlck9iamVjdDo6c2V0U3R5bGUoc3R5bGUpOwotICAgIFNWR0dyYWRpZW50RWxlbWVudCogZ3Jh
ZGllbnQgPSBncmFkaWVudEVsZW1lbnQoKTsKKwogICAgIC8vIDxzdG9wPiBlbGVtZW50cyBzaG91
bGQgb25seSBiZSBhbGxvd2VkIHRvIG1ha2UgcmVuZGVyZXJzIHVuZGVyIGdyYWRpZW50IGVsZW1l
bnRzCiAgICAgLy8gYnV0IEkgY2FuIGltYWdpbmUgYSBmZXcgY2FzZXMgd2UgbWlnaHQgbm90IGJl
IGNhdGNoaW5nLCBzbyBsZXQncyBub3QgY3Jhc2ggaWYgb3VyIHBhcmVudCBpc24ndCBhIGdyYWRp
ZW50LgotICAgIEFTU0VSVChncmFkaWVudCk7Ci0gICAgaWYgKGdyYWRpZW50KQotICAgICAgICBn
cmFkaWVudC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CisgICAgaWYgKFNWR0dyYWRpZW50RWxl
bWVudCogZ3JhZGllbnQgPSBncmFkaWVudEVsZW1lbnQoKSkgeworICAgICAgICBpZiAoU1ZHUmVz
b3VyY2UqIHJlc291cmNlID0gZ3JhZGllbnQtPmNhbnZhc1Jlc291cmNlKCkpCisgICAgICAgICAg
ICByZXNvdXJjZS0+aW52YWxpZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJTVkdHcmFk
aWVudFN0b3A6OmxheW91dCgpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFk
aWVudFN0b3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdHcmFk
aWVudFN0b3AuaAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdHcmFkaWVudFN0b3AuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2RlZmlu
ZSBSZW5kZXJTVkdHcmFkaWVudFN0b3BfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMiw3ICszMSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQ7CiAgICAg
Y2xhc3MgU1ZHU3RvcEVsZW1lbnQ7CiAgICAgCi0gICAgLy8gVGhpcyBjbGFzcyBleGlzdHMgbW9z
dGx5IHNvIHdlIGNhbiBoZXJlIGFib3V0IGdyYWRpZW50IHN0b3Agc3R5bGUgY2hhbmdlcworICAg
IC8vIFRoaXMgY2xhc3MgZXhpc3RzIG1vc3RseSBzbyB3ZSBjYW4gaGVhciBhYm91dCBncmFkaWVu
dCBzdG9wIHN0eWxlIGNoYW5nZXMKICAgICBjbGFzcyBSZW5kZXJTVkdHcmFkaWVudFN0b3AgOiBw
dWJsaWMgUmVuZGVyT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlbmRlclNWR0dyYWRp
ZW50U3RvcChTVkdTdG9wRWxlbWVudCopOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAkocmV2aXNpb24g
Mjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAg
ICAgICAgICAgICAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAKQEAgLTY1LDcg
KzY1LDcgQEAgU3RyaW5nIFNWR0FFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdl
dEF0dHJpYnV0ZShYTGlua05hbWVzOjp0aXRsZUF0dHIpOwogfQogCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdBRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgVGFyZ2V0
LCB0YXJnZXQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLmxvY2FsTmFtZSgpLCBtX3RhcmdldCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0FFbGVtZW50LCBTdHJpbmcsIFN0cmluZywg
c3RyaW5nLCBUYXJnZXQsIHRhcmdldCwgU1ZHTmFtZXM6OnRhcmdldEF0dHIsIG1fdGFyZ2V0KQog
CiB2b2lkIFNWR0FFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
IGF0dHIpCiB7CkBAIC0xMjMsMTIgKzEyMywxMSBAQCB2b2lkIFNWR0FFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIFN0cmluZyB0YXJnZXQgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRhcmdldEF0
dHIpOwotICAgICAgICBTdHJpbmcgeGxpbmt0YXJnZXQgPSBnZXRBdHRyaWJ1dGUoWExpbmtOYW1l
czo6c2hvd0F0dHIpOworICAgICAgICBTdHJpbmcgdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAg
ICAgICAgIGlmIChlICYmIGUtPmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbikKICAgICAgICAgICAg
IHRhcmdldCA9ICJfYmxhbmsiOwogICAgICAgICBlbHNlIGlmICh0YXJnZXQuaXNFbXB0eSgpKSAv
LyBpZiB0YXJnZXQgaXMgZW1wdHksIGRlZmF1bHQgdG8gIl9zZWxmIiBvciB1c2UgeGxpbms6dGFy
Z2V0IGlmIHNldAotICAgICAgICAgICAgdGFyZ2V0ID0gKHhsaW5rdGFyZ2V0ID09ICJuZXciKSA/
ICJfYmxhbmsiIDogIl9zZWxmIjsKKyAgICAgICAgICAgIHRhcmdldCA9IChnZXRBdHRyaWJ1dGUo
WExpbmtOYW1lczo6c2hvd0F0dHIpID09ICJuZXciKSA/ICJfYmxhbmsiIDogIl9zZWxmIjsKIAog
ICAgICAgICBTdHJpbmcgdXJsID0gcGFyc2VVUkwoaHJlZigpKTsKICAgICAgICAgaWYgKCFldnQt
PmRlZmF1bHRQcmV2ZW50ZWQoKSkKQEAgLTE4OCw1ICsxODcsNCBAQCBib29sIFNWR0FFbGVtZW50
OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotLy8g
dmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdBRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgJKHJl
dmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHQUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAg
ICAgICAgICAgIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KIApAQCAtMjMsOCAr
MjMsOCBAQAogCiAjaWZuZGVmIFNWR0FFbGVtZW50X2gKICNkZWZpbmUgU1ZHQUVsZW1lbnRfaAot
I2lmIEVOQUJMRShTVkcpCiAKKyNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNsdWRl
ICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oIgpAQCAtNzUsNSArNzUsMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFNWR0FF
bGVtZW50X2gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5nbGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcAkocmV2aXNpb24gMjk5
NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTE3Myw1ICsx
NzMsMyBAQCBkb3VibGUgU1ZHQW5nbGU6OnNob3J0ZXN0QXJjQmlzZWN0b3IoZG91CiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdBbmdsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHJldmlz
aW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQs
OCArMjQsOCBAQAogI2RlZmluZSBTVkdBbmdsZV9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTY1LDYgKzY1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAvLyBSZXR1cm5zIHRoZSBhbmdsZSB0aGF0IGRpdmlkZXMgdGhlIHNob3J0ZXN0IGFyYyBi
ZXR3ZWVuIHRoZSB0d28gYW5nbGVzLgogICAgICAgICBzdGF0aWMgZG91YmxlIHNob3J0ZXN0QXJj
QmlzZWN0b3IoZG91YmxlIGFuZ2xlMSwgZG91YmxlIGFuZ2xlMik7CiAKKyAgICAgICAgLy8gVGhy
b3VnaG91dCBTVkcgMS4xICdTVkdBbmdsZScgaXMgb25seSB1c2VkIGZvciAnU1ZHTWFya2VyRWxl
bWVudCcgKG9yaWVudC1hbmdsZSkKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2Np
YXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBTVkdOYW1lczo6b3JpZW50QXR0cjsg
fQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgU1ZHQW5nbGVUeXBlIG1fdW5pdFR5cGU7CiAgICAg
ICAgIGZsb2F0IG1fdmFsdWU7CkBAIC03OCw1ICs4MSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHQW5nbGVfaAotCi0vLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCShyZXZpc2lvbiAyOTk0
NikKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
IAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMTEgKzI0
LDEzIEBACiAjZGVmaW5lIFNWR0FuaW1hdGVkVGVtcGxhdGVfaAogCiAjaWYgRU5BQkxFKFNWRykK
LQogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgi
CisjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNs
YXNzIEZsb2F0UmVjdDsKICAgICBjbGFzcyBTVkdBbmdsZTsKICAgICBjbGFzcyBTVkdFbGVtZW50
OwogICAgIGNsYXNzIFNWR0xlbmd0aDsKQEAgLTM3LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIGNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgY2xhc3MgU1ZHVHJh
bnNmb3JtTGlzdDsKICAgICBjbGFzcyBTdHJpbmc7Ci0gICAgY2xhc3MgRmxvYXRSZWN0OworICAg
IGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKICAgICBzdHJ1Y3QgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBl
cktleSB7ICAgICAgICAgICAgCiAgICAgICAgIC8vIEVtcHR5IHZhbHVlCkBAIC0xMDMsNyArMTA1
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCYXJlVHlw
ZT4KICAgICBjbGFzcyBTVkdBbmltYXRlZFRlbXBsYXRlIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZH
QW5pbWF0ZWRUZW1wbGF0ZTxCYXJlVHlwZT4gPgogICAgIHsKLSAgICBwdWJsaWM6ICAgICAgICAK
KyAgICBwdWJsaWM6CisgICAgICAgIFNWR0FuaW1hdGVkVGVtcGxhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICAgICAgICAgIDogbV9hc3NvY2lhdGVkQXR0cmlidXRl
TmFtZShhdHRyaWJ1dGVOYW1lKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB2aXJ0
dWFsIH5TVkdBbmltYXRlZFRlbXBsYXRlKCkgeyBmb3JnZXRXcmFwcGVyKHRoaXMpOyB9CiAKICAg
ICAgICAgdmlydHVhbCBCYXJlVHlwZSBiYXNlVmFsKCkgY29uc3QgPSAwOwpAQCAtMTExLDEzICsx
MTgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgQmFyZVR5cGUg
YW5pbVZhbCgpIGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoQmFy
ZVR5cGUgbmV3QW5pbVZhbCkgPSAwOwotICAgICAgICAKKwogICAgICAgICB0eXBlZGVmIEhhc2hN
YXA8U1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSwgU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxCYXJlVHlw
ZT4qLCBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5SGFzaCwgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBl
cktleUhhc2hUcmFpdHMgPiBFbGVtZW50VG9XcmFwcGVyTWFwOwogICAgICAgICB0eXBlZGVmIHR5
cGVuYW1lIEVsZW1lbnRUb1dyYXBwZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIEVsZW1lbnRUb1dyYXBw
ZXJNYXBJdGVyYXRvcjsKLSAgICAgICAgCi0gICAgICAgIHN0YXRpYyBFbGVtZW50VG9XcmFwcGVy
TWFwKiB3cmFwcGVyQ2FjaGUoKSB7Ci0gICAgICAgICAgICBzdGF0aWMgRWxlbWVudFRvV3JhcHBl
ck1hcCogc1dyYXBwZXJDYWNoZSA9IG5ldyBFbGVtZW50VG9XcmFwcGVyTWFwOyAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgIHJldHVybiBzV3JhcHBlckNhY2hlOworCisgICAgICAgIHN0YXRp
YyBFbGVtZW50VG9XcmFwcGVyTWFwKiB3cmFwcGVyQ2FjaGUoKQorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCogc193cmFwcGVyQ2FjaGUgPSBuZXcgRWxl
bWVudFRvV3JhcHBlck1hcDsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gc193
cmFwcGVyQ2FjaGU7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyB2b2lkIGZv
cmdldFdyYXBwZXIoU1ZHQW5pbWF0ZWRUZW1wbGF0ZTxCYXJlVHlwZT4qIHdyYXBwZXIpCkBAIC0x
MzIsMTQgKzE0MCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBh
c3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXNzb2NpYXRlZEF0dHJp
YnV0ZU5hbWU7IH0KKworICAgIHByaXZhdGU6CisJICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9h
c3NvY2lhdGVkQXR0cmlidXRlTmFtZTsKICAgICB9OwotICAgIAorCiAgICAgdGVtcGxhdGUgPGNs
YXNzIFR5cGUsIGNsYXNzIFNWR0VsZW1lbnRTdWJDbGFzcz4KLSAgICBUeXBlKiBsb29rdXBPckNy
ZWF0ZVdyYXBwZXIoY29uc3QgU1ZHRWxlbWVudFN1YkNsYXNzKiBlbGVtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIGF0dHJOYW1lKSB7Ci0gICAgICAgIFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXkg
a2V5KGVsZW1lbnQsIGF0dHJOYW1lKTsKKyAgICBUeXBlKiBsb29rdXBPckNyZWF0ZVdyYXBwZXIo
Y29uc3QgU1ZHRWxlbWVudFN1YkNsYXNzKiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBk
b21BdHRyTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBhdHRySWRlbnRpZmllcikgeworICAgICAg
ICBTVkdBbmltYXRlZFR5cGVXcmFwcGVyS2V5IGtleShlbGVtZW50LCBhdHRySWRlbnRpZmllcik7
CiAgICAgICAgIFR5cGUqIHdyYXBwZXIgPSBzdGF0aWNfY2FzdDxUeXBlKj4oVHlwZTo6d3JhcHBl
ckNhY2hlKCktPmdldChrZXkpKTsKICAgICAgICAgaWYgKCF3cmFwcGVyKSB7Ci0gICAgICAgICAg
ICB3cmFwcGVyID0gbmV3IFR5cGUoZWxlbWVudCk7CisgICAgICAgICAgICB3cmFwcGVyID0gbmV3
IFR5cGUoZWxlbWVudCwgZG9tQXR0ck5hbWUpOwogICAgICAgICAgICAgVHlwZTo6d3JhcHBlckNh
Y2hlKCktPnNldChrZXksIHdyYXBwZXIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB3cmFw
cGVyOwpAQCAtMTYyLDUgKzE3NSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHQW5pbWF0ZWRUZW1wbGF0ZV9oCi0KLS8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
OTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjksNyArMTY5LDkgQEAgc3RhdGljIHZvaWQgcGFyc2VLZXlTcGxpbmVzKFZlY3Rv
cjxTVkdBbgogCiB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnBhcnNlQmVnaW5PckVuZFZhbHVl
KGRvdWJsZSYgbnVtYmVyLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJlZlB0cjxTVkdT
dHJpbmdMaXN0PiB2YWx1ZUxpc3QgPSBuZXcgU1ZHU3RyaW5nTGlzdCgpOworICAgIC8vIFRPRE86
IERvbid0IHVzZSB2YWx1ZUxpc3QgaGVyZS4KKyAgICBBdG9taWNTdHJpbmcgZHVtbXk7CisgICAg
UmVmUHRyPFNWR1N0cmluZ0xpc3Q+IHZhbHVlTGlzdCA9IG5ldyBTVkdTdHJpbmdMaXN0KFF1YWxp
ZmllZE5hbWUoZHVtbXksIGR1bW15LCBkdW1teSkpOwogICAgIHZhbHVlTGlzdC0+cGFyc2UodmFs
dWUsICc7Jyk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGdldEN1cnJlbnRUaW1lKCkgY29uc3Q7CiAgICAg
ICAgIGZsb2F0IGdldFNpbXBsZUR1cmF0aW9uKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSogYXR0cik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRQYXJzaW5nKCk7
CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdl
YkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC00Niw5
ICs0Niw5IEBAIFNWR0NpcmNsZUVsZW1lbnQ6On5TVkdDaXJjbGVFbGVtZW50KCkKIHsKIH0KIAot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBt
X2N4KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFt
ZSgpLCBtX2N5KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUiwgciwgU1ZHTmFtZXM6OnJBdHRyLmxvY2Fs
TmFtZSgpLCBtX3IpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIs
IG1fY3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIsIG1fY3kp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDaXJjbGVFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIsIG1fcikKIAogdm9pZCBT
VkdDaXJjbGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpCiB7CkBAIC03MSwxMiArNzEsMjAgQEAgdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYgogICAgIH0KIH0KIAotdm9pZCBTVkdDaXJjbGVFbGVtZW50Ojpub3RpZnlBdHRy
aWJ1dGVDaGFuZ2UoKSBjb25zdAordm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmICghZG9jdW1l
bnQoKS0+cGFyc2luZygpICYmIHJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0KHRydWUpOworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Om5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpOworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyIHx8CisgICAgICAgIGF0dHJOYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIgfHwKKyAg
ICAgICAgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNW
R0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAg
ICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKQorICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAog
UGF0aCBTVkdDaXJjbGVFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKQEAgLTkyLDUgKzEwMCwz
IEBAIGJvb2wgU1ZHQ2lyY2xlRWxlbWVudDo6aGFzUmVsYXRpdmVWYWx1ZXMKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Cisg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0CkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0NpcmNsZUVsZW1lbnRf
aAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5oIgpAQCAtNDAsMTIgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgcHVibGljOgogICAgICAgICBTVkdDaXJjbGVFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdDaXJjbGVFbGVtZW50KCk7
Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIC8vICdTVkdDaXJjbGVFbGVtZW50
JyBmdW5jdGlvbnMKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1
dGVDaGFuZ2UoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICAgICAgdmlydHVhbCBQYXRoIHRv
UGF0aERhdGEoKSBjb25zdDsKIApAQCAtNjUsNSArNjMsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdDaXJjbGVFbGVtZW50X2gKLQot
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTQ2LDcgKzQ2LDcgQEAgU1ZHQ2xpcFBhdGhFbGVtZW50Ojp+U1ZHQ2xp
cFBhdGhFbGVtZW50KAogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdD
bGlwUGF0aEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBDbGlwUGF0aFVu
aXRzLCBjbGlwUGF0aFVuaXRzLCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIubG9jYWxOYW1l
KCksIG1fY2xpcFBhdGhVbml0cykKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0Ns
aXBQYXRoRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIENsaXBQYXRoVW5p
dHMsIGNsaXBQYXRoVW5pdHMsIFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciwgbV9jbGlwUGF0
aFVuaXRzKQogCiB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpAQCAtNjYsNiArNjYsMzEgQEAgdm9pZCBTVkdDbGlw
UGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cgogICAgIH0KIH0KIAordm9pZCBTVkdDbGlwUGF0
aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCit7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOworCisgICAgaWYgKCFtX2NsaXBwZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIgfHwKKyAg
ICAgICAgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IAorICAgICAgICBT
VkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Cisg
ICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkKKyAgICAgICAgbV9jbGlwcGVyLT5pbnZhbGlkYXRlKCk7Cit9CisKK3ZvaWQgU1ZH
Q2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKQoreworICAgIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKTsKKworICAgIGlmICghbV9jbGlwcGVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaXBwZXItPmludmFsaWRhdGUoKTsKK30KKwog
U1ZHUmVzb3VyY2UqIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UoKQogewogICAg
IGlmICghbV9jbGlwcGVyKQpAQCAtODgsNyArMTEzLDcgQEAgU1ZHUmVzb3VyY2UqIFNWR0NsaXBQ
YXRoRWxlbWVudDo6Y2FudmFzUgogICAgICAgICAgICAgcGF0aFN0eWxlLT5kZXJlZihkb2N1bWVu
dCgpLT5yZW5kZXJBcmVuYSgpKTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAobV9jbGlwcGVy
LT5jbGlwRGF0YSgpLmlzRW1wdHkoKSApIHsKKyAgICBpZiAobV9jbGlwcGVyLT5jbGlwRGF0YSgp
LmlzRW1wdHkoKSkgewogICAgICAgICBQYXRoIHBhdGhEYXRhOwogICAgICAgICBwYXRoRGF0YS5h
ZGRSZWN0KEZsb2F0UmVjdCgpKTsKICAgICAgICAgbV9jbGlwcGVyLT5hZGRDbGlwRGF0YShwYXRo
RGF0YSwgUlVMRV9FVkVOT0RELCBiYm94KTsKQEAgLTk3LDE3ICsxMjIsNiBAQCBTVkdSZXNvdXJj
ZSogU1ZHQ2xpcFBhdGhFbGVtZW50OjpjYW52YXNSCiAgICAgcmV0dXJuIG1fY2xpcHBlci5nZXQo
KTsKIH0KIAotdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgp
IGNvbnN0Ci17Ci0gICAgaWYgKCFtX2NsaXBwZXIgfHwgIWF0dGFjaGVkKCkgfHwgZG9jdW1lbnQo
KS0+cGFyc2luZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2NsaXBwZXItPmludmFsaWRh
dGUoKTsKLSAgICBtX2NsaXBwZXItPnJlcGFpbnRDbGllbnRzKCk7Ci19Ci0KIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRo
RWxlbWVudC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwxNSArMjQsMTQgQEAKICNkZWZpbmUgU1ZHQ2xpcFBh
dGhFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdSZXNvdXJjZUNs
aXBwZXIuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5j
bHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewor
bmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHQ2xpcFBhdGhFbGVtZW50IDogcHVi
bGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLApAQCAtNDEsMTYgKzQwLDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgcHVibGljOgogICAgICAgICBTVkdDbGlwUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0NsaXBQYXRoRWxlbWVu
dCgpOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKLSAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJj
ZSogY2FudmFzUmVzb3VyY2UoKTsKKyAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgICAg
ICAvLyAnU1ZHQ2xpcFBhdGhFbGVtZW50JyBmdW5jdGlvbnMKICAgICAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCByZW5k
ZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmly
dHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKTsKIAogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRoaXM7IH0KQEAgLTY3LDUgKzY1LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OlNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdFbGVtZW50KHRhZ05hbWUsIGRvYykKICAgICAs
IG1fdHlwZShTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1VOS05PV04pCi0gICAgLCBtX3Rh
YmxlVmFsdWVzKG5ldyBTVkdOdW1iZXJMaXN0KQorICAgICwgbV90YWJsZVZhbHVlcyhuZXcgU1ZH
TnVtYmVyTGlzdChTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyKSkKICAgICAsIG1fc2xvcGUoMS4w
ZikKICAgICAsIG1faW50ZXJjZXB0KDAuMGYpCiAgICAgLCBtX2FtcGxpdHVkZSgxLjBmKQpAQCAt
NDcsMTMgKzQ3LDEzIEBAIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50Ojp+U1YK
IHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBUeXBlLCB0
eXBlLCBTVkdOYW1lczo6dHlwZUF0dHIubG9jYWxOYW1lKCksIG1fdHlwZSkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBT
VkdOdW1iZXJMaXN0KiwgTnVtYmVyTGlzdCwgbnVtYmVyTGlzdCwgVGFibGVWYWx1ZXMsIHRhYmxl
VmFsdWVzLCBTVkdOYW1lczo6dGFibGVWYWx1ZXNBdHRyLmxvY2FsTmFtZSgpLCBtX3RhYmxlVmFs
dWVzLmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgU2xvcGUsIHNsb3Bl
LCBTVkdOYW1lczo6c2xvcGVBdHRyLmxvY2FsTmFtZSgpLCBtX3Nsb3BlKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZs
b2F0LCBOdW1iZXIsIG51bWJlciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQsIFNWR05hbWVzOjppbnRl
cmNlcHRBdHRyLmxvY2FsTmFtZSgpLCBtX2ludGVyY2VwdCkKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgTnVt
YmVyLCBudW1iZXIsIEFtcGxpdHVkZSwgYW1wbGl0dWRlLCBTVkdOYW1lczo6YW1wbGl0dWRlQXR0
ci5sb2NhbE5hbWUoKSwgbV9hbXBsaXR1ZGUpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVt
YmVyLCBFeHBvbmVudCwgZXhwb25lbnQsIFNWR05hbWVzOjpleHBvbmVudEF0dHIubG9jYWxOYW1l
KCksIG1fZXhwb25lbnQpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBPZmZzZXQs
IG9mZnNldCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIubG9jYWxOYW1lKCksIG1fb2Zmc2V0KQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBUeXBlLCB0eXBlLCBTVkdOYW1l
czo6dHlwZUF0dHIsIG1fdHlwZSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBTVkdOdW1iZXJMaXN0KiwgTnVtYmVyTGlz
dCwgbnVtYmVyTGlzdCwgVGFibGVWYWx1ZXMsIHRhYmxlVmFsdWVzLCBTVkdOYW1lczo6dGFibGVW
YWx1ZXNBdHRyLCBtX3RhYmxlVmFsdWVzLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZsb2F0LCBOdW1iZXIs
IG51bWJlciwgU2xvcGUsIHNsb3BlLCBTVkdOYW1lczo6c2xvcGVBdHRyLCBtX3Nsb3BlKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgSW50ZXJjZXB0LCBpbnRlcmNlcHQsIFNWR05h
bWVzOjppbnRlcmNlcHRBdHRyLCBtX2ludGVyY2VwdCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgTnVtYmVy
LCBudW1iZXIsIEFtcGxpdHVkZSwgYW1wbGl0dWRlLCBTVkdOYW1lczo6YW1wbGl0dWRlQXR0ciwg
bV9hbXBsaXR1ZGUpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBFeHBvbmVudCwg
ZXhwb25lbnQsIFNWR05hbWVzOjpleHBvbmVudEF0dHIsIG1fZXhwb25lbnQpCitBTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwg
ZmxvYXQsIE51bWJlciwgbnVtYmVyLCBPZmZzZXQsIG9mZnNldCwgU1ZHTmFtZXM6Om9mZnNldEF0
dHIsIG1fb2Zmc2V0KQogCiB2b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJ
KHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAgICAgICAgIC8vICdTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dCcgZnVuY3Rpb25zCiAgICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ0VsZW1lbnQnCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKik7CiAgICAgICAgIAogICAgICAgICBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRy
YW5zZmVyRnVuY3Rpb24oKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDggQEAgU1ZHQ3Vyc29yRWxlbWVudDo6flNWR0N1cnNv
ckVsZW1lbnQoKQogICAgICAgICBtX2NhY2hlZEltYWdlLT5kZXJlZih0aGlzKTsKIH0KIAotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ciwgbV94KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLCBtX3kpCiAKIHZvaWQgU1ZHQ3Vyc29yRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6
Omluc2VydGVkSW50b0RvY3VtZW50KCkKICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkK
ICAgICAgICAgICAgICgqaXQpLT5idWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogCi0gICAgICAgIFNW
R1Jlc291cmNlOjpyZXBhaW50Q2xpZW50cygqY2xpZW50cyk7CisgICAgICAgIFNWR1Jlc291cmNl
OjppbnZhbGlkYXRlQ2xpZW50cygqY2xpZW50cyk7CiAgICAgfQogfQogCkBAIC0yNDQsOCArMjQ0
LDE2IEBAIGJvb2wgU1ZHRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHQKICAgICByZXR1
cm4gRXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudCh0aGlzLCBlLCBlYywgdGVt
cEV2ZW50KTsKIH0KIAordm9pZCBTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0
ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURlY2xzKQoreworICAgIEFTU0VSVChhdHRyKTsKKyAgICBp
ZiAoIWF0dHIpCisgICAgICAgIHJldHVybjsKKworICAgIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0
ZUNoYW5nZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyLT5uYW1lKCkpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKK30KIAotLy8gdmltOnRz
PTQ6bm9ldAorI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAy
OTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsNyAr
MjQsNiBAQAogI2RlZmluZSBTVkdFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlN0eWxl
ZEVsZW1lbnQuaCIKQEAgLTU1LDIxICs1NCwyMSBAQCBjbGFzcyBTVkdBbmltYXRlZFRlbXBsYXRl
IyNVcHBlclByb3BlcnR5CiA6IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRlPEJhcmVUeXBlPiBc
CiB7IFwKIHB1YmxpYzogXAotICAgIFNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHko
Y29uc3QgQ2xhc3NUeXBlKiBlbGVtZW50KTsgXAorICAgIFNWR0FuaW1hdGVkVGVtcGxhdGUjI1Vw
cGVyUHJvcGVydHkoY29uc3QgQ2xhc3NUeXBlKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOyBcCiAg
ICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eSgpIHsgfSBcCiAg
ICAgdmlydHVhbCBCYXJlVHlwZSBiYXNlVmFsKCkgY29uc3Q7IFwKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0QmFzZVZhbChCYXJlVHlwZSBuZXdCYXNlVmFsKTsgXAorICAgIHZpcnR1YWwgdm9pZCBzZXRC
YXNlVmFsKEJhcmVUeXBlKTsgXAogICAgIHZpcnR1YWwgQmFyZVR5cGUgYW5pbVZhbCgpIGNvbnN0
OyBcCi0gICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoQmFyZVR5cGUgbmV3QW5pbVZhbCk7IFwK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbVZhbChCYXJlVHlwZSk7IFwKICAgICBcCiBwcm90ZWN0
ZWQ6IFwKICAgICBDbGFzc1N0b3JhZ2VUeXBlIG1fZWxlbWVudDsgXAogfTsgXAogcHVibGljOiBc
CiAgICAgQmFyZVR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0OyBcCi0gICAgdm9pZCBzZXQjI1Vw
cGVyUHJvcGVydHkoQmFyZVR5cGUgbmV3VmFsdWUpOyBcCisgICAgdm9pZCBzZXQjI1VwcGVyUHJv
cGVydHkoQmFyZVR5cGUpOyBcCiAgICAgQmFyZVR5cGUgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVl
KCkgY29uc3Q7IFwKLSAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKEJhcmVU
eXBlIG5ld1ZhbHVlKTsgXAorICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUo
QmFyZVR5cGUpOyBcCiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclBy
b3BlcnR5PiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0OyBcCiAgICAgdm9pZCBzdGFy
dCMjVXBwZXJQcm9wZXJ0eSgpIGNvbnN0OyBcCiAgICAgdm9pZCBzdG9wIyNVcHBlclByb3BlcnR5
KCk7IFwKQEAgLTc4LDggKzc3LDkgQEAgcHJpdmF0ZTogXAogICAgIFN0b3JhZ2VUeXBlIG1fIyNM
b3dlclByb3BlcnR5OwogCiAjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX0lO
VEVSTkFMKENsYXNzTmFtZSwgQ2xhc3NUeXBlLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExv
d2VyQ2xhc3NOYW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3Rv
cmFnZUdldHRlciwgQ29udGV4dEVsZW1lbnQpIFwKLUNsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1w
bGF0ZSMjVXBwZXJQcm9wZXJ0eTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eShj
b25zdCBDbGFzc1R5cGUqIGVsZW1lbnQpIFwKLTogbV9lbGVtZW50KGNvbnN0X2Nhc3Q8Q2xhc3NU
eXBlKj4oZWxlbWVudCkpIHsgfSBcCitDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1Vw
cGVyUHJvcGVydHk6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHkoY29uc3QgQ2xh
c3NUeXBlKiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBcCis6
IFNWR0FuaW1hdGVkVGVtcGxhdGU8QmFyZVR5cGU+KGF0dHJpYnV0ZU5hbWUpLCBtX2VsZW1lbnQo
Y29uc3RfY2FzdDxDbGFzc1R5cGUqPihlbGVtZW50KSkgeyB9IFwKK1wKIEJhcmVUeXBlIENsYXNz
TmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eTo6YmFzZVZhbCgpIGNvbnN0
IFwKIHsgXAogICAgIHJldHVybiBtX2VsZW1lbnQtPkxvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgp
OyBcCkBAIC0xNTcsMjYgKzE1NywyNyBAQCBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNf
SU5URVJOQUwoCiBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfSU5URVJOQUwoQ2xhc3NO
YW1lLCBSZWZQdHI8Q2xhc3NOYW1lPiwgQmFyZVR5cGUsIFN0b3JhZ2VUeXBlLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KQogCiAjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TX1dJVEhfQ09OVEVYVChDbGFzc05hbWUsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93
ZXJDbGFzc05hbWUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBTdG9y
YWdlR2V0dGVyKSBcCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChDbGFz
c05hbWUsIFNWR0VsZW1lbnQsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFzc05h
bWUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBTdG9yYWdlR2V0dGVy
LCBjb250ZXh0RWxlbWVudCgpKSBcCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRF
Uk5BTChDbGFzc05hbWUsIFNWR0VsZW1lbnQsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93
ZXJDbGFzc05hbWUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLmxvY2Fs
TmFtZSgpLCBTdG9yYWdlR2V0dGVyLCBjb250ZXh0RWxlbWVudCgpKSBcCiBQYXNzUmVmUHRyPENs
YXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eT4gQ2xhc3NOYW1lOjpM
b3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0IFwKIHsgXAogICAgIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHQgPSBjb250ZXh0RWxlbWVudCgpOyBcCiAgICAgQVNTRVJUKGNvbnRleHQpOyBc
Ci0gICAgcmV0dXJuIGxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxDbGFzc05hbWU6OlNWR0FuaW1hdGVk
VGVtcGxhdGUjI1VwcGVyUHJvcGVydHksIFNWR0VsZW1lbnQ+KGNvbnRleHQsIEF0dHJOYW1lKTsg
XAorICAgIHJldHVybiBsb29rdXBPckNyZWF0ZVdyYXBwZXI8Q2xhc3NOYW1lOjpTVkdBbmltYXRl
ZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5LCBTVkdFbGVtZW50Pihjb250ZXh0LCBBdHRyTmFtZSwg
QXR0ck5hbWUubG9jYWxOYW1lKCkpOyBcCiB9CiAKLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xh
c3NOYW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3RvcmFnZUdl
dHRlcikgXAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfSU5URVJOQUwoQ2xhc3NOYW1l
LCBDbGFzc05hbWUsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFzc05hbWUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBTdG9yYWdlR2V0dGVyLCB0aGlz
KSBcCisjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ1VTVE9NX0lE
RU5USUZJRVIoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xhc3NO
YW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgQXR0cklkZW50aWZp
ZXIsIFN0b3JhZ2VHZXR0ZXIpIFwKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX0lOVEVS
TkFMKENsYXNzTmFtZSwgQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2Vy
Q2xhc3NOYW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZS5sb2NhbE5h
bWUoKSwgU3RvcmFnZUdldHRlciwgdGhpcykgXAogUGFzc1JlZlB0cjxDbGFzc05hbWU6OlNWR0Fu
aW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHk+IENsYXNzTmFtZTo6TG93ZXJQcm9wZXJ0eSMj
QW5pbWF0ZWQoKSBjb25zdCBcCiB7IFwKLSAgICByZXR1cm4gbG9va3VwT3JDcmVhdGVXcmFwcGVy
PENsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eSwgQ2xhc3NOYW1l
Pih0aGlzLCBBdHRyTmFtZSk7IFwKKyAgICByZXR1cm4gbG9va3VwT3JDcmVhdGVXcmFwcGVyPENs
YXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eSwgQ2xhc3NOYW1lPih0
aGlzLCBBdHRyTmFtZSwgQXR0cklkZW50aWZpZXIpOyBcCiB9CiAKKyNkZWZpbmUgQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUs
IExvd2VyQ2xhc3NOYW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwg
U3RvcmFnZUdldHRlcikgXAorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DVVNU
T01fSURFTlRJRklFUihDbGFzc05hbWUsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJD
bGFzc05hbWUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBBdHRyTmFt
ZS5sb2NhbE5hbWUoKSwgU3RvcmFnZUdldHRlcikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewotICAg
IGNsYXNzIEVjbWE7CisKICAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOwotICAgIGNs
YXNzIFNWR01hdHJpeDsKLSAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwogICAgIGNsYXNzIFNW
R1NWR0VsZW1lbnQ7CiAKICAgICBjbGFzcyBTVkdFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1l
bnQgewpAQCAtMTk0LDkgKzE5NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZH
U1ZHRWxlbWVudCogb3duZXJTVkdFbGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFNWR0VsZW1lbnQq
IHZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIC8vIEludGVybmFsCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAg
ICAgICAgCisKICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlZExvY2F0
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMjAsNyArMjIwLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0IHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSos
IGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKKwogICAgICAgICB2b2lkIHNlbmRTVkdMb2Fk
RXZlbnRJZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBmYWxzZSk7CiAKICAg
ICAgICAgLy8gRm9yd2FyZGVkIHByb3BlcnRpZXMgKGRlY2xhcmVkL2RlZmluZWQgYW55d2hlcmUg
ZWxzZSBpbiB0aGUgaW5oZXJpdGFuY2Ugc3RydWN0dXJlKQpAQCAtMjQ4LDUgKzI1MCwzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZH
RWxlbWVudF9oCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Cisg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CkBAIC00OCwxMCArNDgsMTAgQEAgU1ZHRWxsaXBzZUVsZW1lbnQ6
On5TVkdFbGxpcHNlRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gs
IFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
Q3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5KQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwgbV9yeCkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCksIG1fcnkp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLCBtX2N4KQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ciwgbV9jeSkKK0FOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIsIG1fcngpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxl
bmd0aCwgUnksIHJ5LCBTVkdOYW1lczo6cnlBdHRyLCBtX3J5KQogCiB2b2lkIFNWR0VsbGlwc2VF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBA
IC03OCwxMiArNzgsMjAgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aQogICAgIH0KIH0KIAotdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hh
bmdlKCkgY29uc3QKK3ZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5w
YXJzaW5nKCkgJiYgcmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlv
dXQodHJ1ZSk7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoYXR0ck5hbWUpOworCisgICAgaWYgKCFyZW5kZXJlcigpKQorICAgICAgICByZXR1
cm47CiAKLSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRl
Q2hhbmdlKCk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmN5QXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cnhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIgfHwKKyAgICAgICAgU1ZHVGVz
dHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0xhbmdTcGFjZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAg
ICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAogUGF0aCBTVkdFbGxp
cHNlRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CkBAIC0xMDEsNSArMTA5LDMgQEAgYm9vbCBT
VkdFbGxpcHNlRWxlbWVudDo6aGFzUmVsYXRpdmVWYWx1ZQogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShy
ZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKQEAgLTI0LDI4ICsyNCwyNSBAQAogI2RlZmluZSBTVkdFbGxpcHNlRWxlbWVudF9oCiAKICNp
ZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5o
IgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9y
bWFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKIAotbmFtZXNwYWNlIFdlYkNv
cmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR0VsbGlwc2VFbGVtZW50
IDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU1ZHRWxsaXBzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0VsbGlwc2VFbGVtZW50KCk7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNW
R1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgICAgICAvLyAnU1ZHRWxsaXBzZUVsZW1lbnQnIGZ1
bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNo
YW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRo
RGF0YSgpIGNvbnN0OwogCkBAIC02Niw1ICs2MywzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCShyZXZpc2lvbiAy
OTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNyBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0y
MSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZiBFTkFCTEUoU1ZH
KQogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKIApAQCAtMzksNyAr
NDAsNyBAQCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjp+U1ZHRXh0ZXJuCiB7CiB9CiAK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBib29sLCBCb29sZWFuLCBib29sZWFuLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIubG9jYWxOYW1lKCksIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBib29sLCBCb29sZWFuLCBib29sZWFuLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdOYW1lczo6ZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
IAogYm9vbCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC01MSw3ICs1MiwxMSBAQCBib29sIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgcmV0dXJuIGF0dHJOYW1lID09IFNWR05h
bWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cjsKK30KKwogfQogCi0vLyB2aW06dHM9
NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcv
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiwxMiArMjIsMTMgQEAKIAogI2lmbmRlZiBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkX2gKICNkZWZpbmUgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworCiAgICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwogCiAgICAgLy8gRklYTUU6IFRoaXMg
aXMgd3JvbmcgZm9yIHNldmVyYWwgcmVhc29uczoKQEAgLTQ1LDggKzQ2LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CiAgICAg
ICAgIHZpcnR1YWwgflNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKIAotICAgICAgICAv
LyAnU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcgZnVuY3Rpb25zCiAgICAgICAgIGJvb2wg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCA9
IDA7CkBAIC01OSw1ICs2MCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxl
bmRFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5k
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAgU1ZHRkVCbGVuZEVs
ZW1lbnQ6On5TVkdGRUJsZW5kRWxlbWVudCgpCiAgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0Owog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUJsZW5kRWxlbWVudCwgU3Ry
aW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIubG9jYWxOYW1l
KCksIG1faW4xKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVCbGVuZEVsZW1l
bnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0ci5s
b2NhbE5hbWUoKSwgbV9pbjIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUJs
ZW5kRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1vZGUsIG1vZGUsIFNW
R05hbWVzOjptb2RlQXR0ci5sb2NhbE5hbWUoKSwgbV9tb2RlKQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIElu
MSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLCBtX2luMSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjIsIGlu
MiwgU1ZHTmFtZXM6OmluMkF0dHIsIG1faW4yKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRkVCbGVuZEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBNb2Rl
LCBtb2RlLCBTVkdOYW1lczo6bW9kZUF0dHIsIG1fbW9kZSkKIAogdm9pZCBTVkdGRUJsZW5kRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXModGFnTmFtZSwgZG9jKQogICAgICwgbV90eXBlKFNWR19GRUNPTE9STUFUUklYX1RZ
UEVfVU5LTk9XTikKLSAgICAsIG1fdmFsdWVzKG5ldyBTVkdOdW1iZXJMaXN0KQorICAgICwgbV92
YWx1ZXMobmV3IFNWR051bWJlckxpc3QoU1ZHTmFtZXM6OnZhbHVlc0F0dHIpKQogICAgICwgbV9m
aWx0ZXJFZmZlY3QoMCkKIHsKIH0KQEAgLTQ0LDkgKzQ0LDkgQEAgU1ZHRkVDb2xvck1hdHJpeEVs
ZW1lbnQ6On5TVkdGRUNvbG9yTWF0cgogICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFN0
cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2FsTmFt
ZSgpLCBtX2luMSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgVHlwZSwgdHlwZSwgU1ZH
TmFtZXM6OnR5cGVBdHRyLmxvY2FsTmFtZSgpLCBtX3R5cGUpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTnVtYmVyTGlzdCosIE51bWJl
ckxpc3QsIG51bWJlckxpc3QsIFZhbHVlcywgdmFsdWVzLCBTVkdOYW1lczo6dmFsdWVzQXR0ci5s
b2NhbE5hbWUoKSwgbV92YWx1ZXMuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBp
bjEsIFNWR05hbWVzOjppbkF0dHIsIG1faW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9u
LCBUeXBlLCB0eXBlLCBTVkdOYW1lczo6dHlwZUF0dHIsIG1fdHlwZSkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOdW1iZXJMaXN0Kiwg
TnVtYmVyTGlzdCwgbnVtYmVyTGlzdCwgVmFsdWVzLCB2YWx1ZXMsIFNWR05hbWVzOjp2YWx1ZXNB
dHRyLCBtX3ZhbHVlcy5nZXQoKSkKIAogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5
NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQ6On5TVkdGRUNvbQogICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFN0cmlu
ZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2FsTmFtZSgp
LCBtX2luMSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6
OmluQXR0ciwgbV9pbjEpCiAKIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMyAr
NDYsMTMgQEAgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojp+U1ZHRkVDb21wb3NpdGVFbAogICAgIGRl
bGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwg
U1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcs
IEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjIpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGludCwgRW51bWVy
YXRpb24sIGVudW1lcmF0aW9uLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgU1ZHTmFtZXM6Om9wZXJh
dG9yQXR0ci5sb2NhbE5hbWUoKSwgbV9fb3BlcmF0b3IpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgSzEs
IGsxLCBTVkdOYW1lczo6azFBdHRyLmxvY2FsTmFtZSgpLCBtX2sxKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1i
ZXIsIEsyLCBrMiwgU1ZHTmFtZXM6OmsyQXR0ci5sb2NhbE5hbWUoKSwgbV9rMikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIE51bWJl
ciwgbnVtYmVyLCBLMywgazMsIFNWR05hbWVzOjprM0F0dHIubG9jYWxOYW1lKCksIG1fazMpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0
LCBOdW1iZXIsIG51bWJlciwgSzQsIGs0LCBTVkdOYW1lczo6azRBdHRyLmxvY2FsTmFtZSgpLCBt
X2s0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50
LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ciwgbV9p
bjEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQs
IFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0ciwgbV9p
bjIpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQs
IGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgU1ZH
TmFtZXM6Om9wZXJhdG9yQXR0ciwgbV9fb3BlcmF0b3IpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgSzEs
IGsxLCBTVkdOYW1lczo6azFBdHRyLCBtX2sxKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEsyLCBrMiwg
U1ZHTmFtZXM6OmsyQXR0ciwgbV9rMikKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBLMywgazMsIFNWR05h
bWVzOjprM0F0dHIsIG1fazMpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgSzQsIGs0LCBTVkdOYW1lczo6
azRBdHRyLCBtX2s0KQogCiB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDkgKzQ5LDkgQEAgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp+U1ZHRkVEaWZmdQog
ICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5n
LCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0
LCBOdW1iZXIsIG51bWJlciwgRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQsIFNWR05h
bWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLmxvY2FsTmFtZSgpLCBtX2RpZmZ1c2VDb25zdGFudCkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwgU1ZH
TmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIubG9jYWxOYW1lKCksIG1fc3VyZmFjZVNjYWxlKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBT
dHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ciwgbV9pbjEp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3Rh
bnQsIFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBtX2RpZmZ1c2VDb25zdGFudCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwg
ZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwgU1ZHTmFt
ZXM6OnN1cmZhY2VTY2FsZUF0dHIsIG1fc3VyZmFjZVNjYWxlKQogQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBu
dW1iZXIsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCwgImtlcm5lbFVuaXRM
ZW5ndGhYIiwgbV9rZXJuZWxVbml0TGVuZ3RoWCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBL
ZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFksICJrZXJuZWxVbml0TGVuZ3RoWSIs
IG1fa2VybmVsVW5pdExlbmd0aFkpCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEs
MTEgQEAgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojp+U1ZHRkVEaXNwbAogICAgIGRlbGV0
ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGlu
MSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFN0cmluZywgU3RyaW5n
LCBzdHJpbmcsIEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjIp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hh
bm5lbFNlbGVjdG9yLCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIubG9jYWxOYW1lKCks
IG1feENoYW5uZWxTZWxlY3RvcikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFlD
aGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVj
dG9yQXR0ci5sb2NhbE5hbWUoKSwgbV95Q2hhbm5lbFNlbGVjdG9yKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBmbG9hdCwgTnVtYmVy
LCBudW1iZXIsIFNjYWxlLCBzY2FsZSwgU1ZHTmFtZXM6OnNjYWxlQXR0ci5sb2NhbE5hbWUoKSwg
bV9zY2FsZSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjpp
bkF0dHIsIG1faW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjIsIGluMiwgU1ZHTmFt
ZXM6OmluMkF0dHIsIG1faW4yKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgWENo
YW5uZWxTZWxlY3RvciwgeENoYW5uZWxTZWxlY3RvciwgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0
b3JBdHRyLCBtX3hDaGFubmVsU2VsZWN0b3IpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0
aW9uLCBZQ2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBTVkdOYW1lczo6eUNoYW5u
ZWxTZWxlY3RvckF0dHIsIG1feUNoYW5uZWxTZWxlY3RvcikKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVt
YmVyLCBTY2FsZSwgc2NhbGUsIFNWR05hbWVzOjpzY2FsZUF0dHIsIG1fc2NhbGUpCiAKIFNWR0No
YW5uZWxTZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0No
YW5uZWwoY29uc3QgU3RyaW5nJiBrZXkpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZsb29k
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBTVkdGRUZsb29kRWxlbWVudDo6flNW
R0ZFRmxvb2RFbGVtZW50KCkKICAgICBkZWxldGUgbV9maWx0ZXJFZmZlY3Q7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRmxvb2RFbGVtZW50LCBTdHJpbmcsIFN0cmlu
Zywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUZsb29kRWxlbWVudCwgU3RyaW5n
LCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIsIG1faW4xKQogCiB2
b2lkIFNWR0ZFRmxvb2RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqIGF0dHIpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6On5TVkdGRUdhdXNzaWFuCiAgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0OwogfQog
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQs
IFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2Fs
TmFtZSgpLCBtX2luMSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVz
OjppbkF0dHIsIG1faW4xKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFN0ZERldmlhdGlvblgsIHN0
ZERldmlhdGlvblgsICJzdGREZXZpYXRpb25YIiwgbV9zdGREZXZpYXRpb25YKQogQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBmbG9hdCwgTnVt
YmVyLCBudW1iZXIsIFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblksICJzdGREZXZpYXRpb25Z
IiwgbV9zdGREZXZpYXRpb25ZKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBTVkdGRUltYWdlRWxlbWVudDo6flNWR0ZFSW1h
Z2VFbGVtZW50KCkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbywg
UHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHTmFtZXM6OnByZXNl
cnZlQXNwZWN0UmF0aW9BdHRyLmxvY2FsTmFtZSgpLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8uZ2V0
KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUltYWdlRWxlbWVudCwgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR05hbWVz
OjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLmdldCgpKQog
CiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqIGF0dHIpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDcsMTcgKzQ3LDE3IEBAIFNWR0ZFTGlnaHRFbGVtZW50Ojp+U1ZHRkVMaWdodEVs
ZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0
RWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBBemltdXRoLCBhemltdXRoLCBTVkdOYW1l
czo6YXppbXV0aEF0dHIubG9jYWxOYW1lKCksIG1fYXppbXV0aCkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEVs
ZXZhdGlvbiwgZWxldmF0aW9uLCBTVkdOYW1lczo6ZWxldmF0aW9uQXR0ci5sb2NhbE5hbWUoKSwg
bV9lbGV2YXRpb24pCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxl
bWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxO
YW1lKCksIG1feCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVt
ZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5h
bWUoKSwgbV95KQotCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxl
bWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBaLCB6LCBTVkdOYW1lczo6ekF0dHIubG9jYWxO
YW1lKCksIG1feikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVt
ZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFBvaW50c0F0WCwgcG9pbnRzQXRYLCBTVkdOYW1l
czo6cG9pbnRzQXRYQXR0ci5sb2NhbE5hbWUoKSwgbV9wb2ludHNBdFgpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVy
LCBQb2ludHNBdFksIHBvaW50c0F0WSwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIubG9jYWxOYW1l
KCksIG1fcG9pbnRzQXRZKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdo
dEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgUG9pbnRzQXRaLCBwb2ludHNBdFosIFNW
R05hbWVzOjpwb2ludHNBdFpBdHRyLmxvY2FsTmFtZSgpLCBtX3BvaW50c0F0WikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBu
dW1iZXIsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQsIFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0ci5sb2NhbE5hbWUoKSwgbV9zcGVjdWxhckV4cG9uZW50KQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIs
IG51bWJlciwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlLCBTVkdOYW1lczo6
bGltaXRpbmdDb25lQW5nbGVBdHRyLmxvY2FsTmFtZSgpLCBtX2xpbWl0aW5nQ29uZUFuZ2xlKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBO
dW1iZXIsIG51bWJlciwgQXppbXV0aCwgYXppbXV0aCwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyLCBt
X2F6aW11dGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVu
dCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBFbGV2YXRpb24sIGVsZXZhdGlvbiwgU1ZHTmFtZXM6
OmVsZXZhdGlvbkF0dHIsIG1fZWxldmF0aW9uKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgWCwgeCwgU1ZHTmFt
ZXM6OnhBdHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0
RWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIsIG1f
eSkKKworQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZs
b2F0LCBOdW1iZXIsIG51bWJlciwgWiwgeiwgU1ZHTmFtZXM6OnpBdHRyLCBtX3opCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIE51bWJlciwg
bnVtYmVyLCBQb2ludHNBdFgsIHBvaW50c0F0WCwgU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIG1f
cG9pbnRzQXRYKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1l
bnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgUG9pbnRzQXRZLCBwb2ludHNBdFksIFNWR05hbWVz
Ojpwb2ludHNBdFlBdHRyLCBtX3BvaW50c0F0WSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFBvaW50c0F0Wiwg
cG9pbnRzQXRaLCBTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwgbV9wb2ludHNBdFopCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIE51bWJlciwg
bnVtYmVyLCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50LCBTVkdOYW1lczo6c3Bl
Y3VsYXJFeHBvbmVudEF0dHIsIG1fc3BlY3VsYXJFeHBvbmVudCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIExp
bWl0aW5nQ29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29u
ZUFuZ2xlQXR0ciwgbV9saW1pdGluZ0NvbmVBbmdsZSkKIAogdm9pZCBTVkdGRUxpZ2h0RWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDcgKzM2LDcgQEAgU1ZHRkVNZXJnZU5vZGVFbGVtZW50Ojp+U1ZHRkVNZXJnZU5vZGVFbAogewog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQs
IFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2Fs
TmFtZSgpLCBtX2luMSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTWVyZ2VO
b2RlRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjpp
bkF0dHIsIG1faW4xKQogCiB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDkgQEAgU1ZHRkVPZmZzZXRF
bGVtZW50Ojp+U1ZHRkVPZmZzZXRFbGVtZW50KAogICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsK
IH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBT
dHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5h
bWUoKSwgbV9pbjEpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRU9mZnNldEVs
ZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgRHgsIGR4LCBTVkdOYW1lczo6ZHhBdHRyLmxv
Y2FsTmFtZSgpLCBtX2R4KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVPZmZz
ZXRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIER5LCBkeSwgU1ZHTmFtZXM6OmR5QXR0
ci5sb2NhbE5hbWUoKSwgbV9keSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZF
T2Zmc2V0RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVz
OjppbkF0dHIsIG1faW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVPZmZz
ZXRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIER4LCBkeCwgU1ZHTmFtZXM6OmR4QXR0
ciwgbV9keCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVu
dCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBEeSwgZHksIFNWR05hbWVzOjpkeUF0dHIsIG1fZHkp
CiAKIHZvaWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEw
IEBAIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6On5TVkdGRVNwZWMKICAgICBkZWxldGUg
bV9maWx0ZXJFZmZlY3Q7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4x
LCBTVkdOYW1lczo6aW5BdHRyLmxvY2FsTmFtZSgpLCBtX2luMSkKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBOdW1iZXIs
IG51bWJlciwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCwgU1ZHTmFtZXM6OnNw
ZWN1bGFyQ29uc3RhbnRBdHRyLmxvY2FsTmFtZSgpLCBtX3NwZWN1bGFyQ29uc3RhbnQpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBm
bG9hdCwgTnVtYmVyLCBudW1iZXIsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQs
IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ci5sb2NhbE5hbWUoKSwgbV9zcGVjdWxhckV4
cG9uZW50KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VT
Y2FsZSwgU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIubG9jYWxOYW1lKCksIG1fc3VyZmFjZVNj
YWxlKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0
dHIsIG1faW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTcGVjdWxhckNvbnN0YW50LCBz
cGVjdWxhckNvbnN0YW50LCBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsIG1fc3BlY3Vs
YXJDb25zdGFudCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgU3BlY3VsYXJFeHBvbmVudCwg
c3BlY3VsYXJFeHBvbmVudCwgU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBtX3NwZWN1
bGFyRXhwb25lbnQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFN1cmZhY2VTY2FsZSwgc3Vy
ZmFjZVNjYWxlLCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgbV9zdXJmYWNlU2NhbGUpCiBB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVu
Z3RoWCwgImtlcm5lbFVuaXRMZW5ndGhYIiwgbV9rZXJuZWxVbml0TGVuZ3RoWCkKIEFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIGZsb2F0
LCBOdW1iZXIsIG51bWJlciwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZLCAi
a2VybmVsVW5pdExlbmd0aFkiLCBtX2tlcm5lbFVuaXRMZW5ndGhZKQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBTVkdGRVRpbGVF
bGVtZW50Ojp+U1ZHRkVUaWxlRWxlbWVudCgpCiAgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0Owog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVRpbGVFbGVtZW50LCBTdHJp
bmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUo
KSwgbV9pbjEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVRpbGVFbGVtZW50
LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ciwgbV9p
bjEpCiAKIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMCBAQCBTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50Ojp+U1ZHRkVUdXJidWxlbmNlCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgQmFzZUZy
ZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYLCAiYmFzZUZyZXF1ZW5jeVgiLCBtX2Jhc2VGcmVxdWVu
Y3lYKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVks
ICJiYXNlRnJlcXVlbmN5WSIsIG1fYmFzZUZyZXF1ZW5jeVkpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIs
IFNlZWQsIHNlZWQsIFNWR05hbWVzOjpzZWVkQXR0ci5sb2NhbE5hbWUoKSwgbV9zZWVkKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgbG9uZywg
SW50ZWdlciwgaW50ZWdlciwgTnVtT2N0YXZlcywgbnVtT2N0YXZlcywgU1ZHTmFtZXM6Om51bU9j
dGF2ZXNBdHRyLmxvY2FsTmFtZSgpLCBtX251bU9jdGF2ZXMpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVt
ZXJhdGlvbiwgU3RpdGNoVGlsZXMsIHN0aXRjaFRpbGVzLCBTVkdOYW1lczo6c3RpdGNoVGlsZXNB
dHRyLmxvY2FsTmFtZSgpLCBtX3N0aXRjaFRpbGVzKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRp
b24sIFR5cGUsIHR5cGUsIFNWR05hbWVzOjp0eXBlQXR0ci5sb2NhbE5hbWUoKSwgbV90eXBlKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgZmxv
YXQsIE51bWJlciwgbnVtYmVyLCBTZWVkLCBzZWVkLCBTVkdOYW1lczo6c2VlZEF0dHIsIG1fc2Vl
ZCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQs
IGxvbmcsIEludGVnZXIsIGludGVnZXIsIE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMsIFNWR05hbWVz
OjpudW1PY3RhdmVzQXR0ciwgbV9udW1PY3RhdmVzKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRp
b24sIFN0aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcywgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwg
bV9zdGl0Y2hUaWxlcykKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBUeXBlLCB0eXBlLCBT
VkdOYW1lczo6dHlwZUF0dHIsIG1fdHlwZSkKIAogdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTIgKzYyLDEyIEBAIFNW
R0ZpbHRlckVsZW1lbnQ6On5TVkdGaWx0ZXJFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51
bWVyYXRpb24sIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywgU1ZHTmFtZXM6OmZpbHRlclVuaXRz
QXR0ci5sb2NhbE5hbWUoKSwgbV9maWx0ZXJVbml0cykKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQ
cmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0
dHIubG9jYWxOYW1lKCksIG1fcHJpbWl0aXZlVW5pdHMpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4
LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFks
IHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
V2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxv
Y2FsTmFtZSgpLCBtX2hlaWdodCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0Zp
bHRlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBGaWx0ZXJVbml0cywg
ZmlsdGVyVW5pdHMsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIG1fZmlsdGVyVW5pdHMpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEVudW1l
cmF0aW9uLCBlbnVtZXJhdGlvbiwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdO
YW1lczo6cHJpbWl0aXZlVW5pdHNBdHRyLCBtX3ByaW1pdGl2ZVVuaXRzKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxl
bmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5
LCBTVkdOYW1lczo6eUF0dHIsIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwg
U1ZHTmFtZXM6OndpZHRoQXR0ciwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwg
aGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgbV9oZWlnaHQpCiBBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBJbnRlZ2VyLCBpbnRlZ2VyLCBG
aWx0ZXJSZXNYLCBmaWx0ZXJSZXNYLCAiZmlsdGVyUmVzWCIsIG1fZmlsdGVyUmVzWCkKIEFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIEludGVnZXIs
IGludGVnZXIsIEZpbHRlclJlc1ksIGZpbHRlclJlc1ksICJmaWx0ZXJSZXNZIiwgbV9maWx0ZXJS
ZXNZKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQsMTEgKzU0LDExIEBAIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6flMK
IHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdO
YW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6
OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2Fs
TmFtZSgpLCBtX2hlaWdodCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgUmVz
dWx0LCByZXN1bHQsIFNWR05hbWVzOjpyZXN1bHRBdHRyLmxvY2FsTmFtZSgpLCBtX3Jlc3VsdCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhB
dHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNW
R05hbWVzOjp5QXR0ciwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIsIG1fd2lkdGgpCitBTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVp
Z2h0QXR0ciwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIFJl
c3VsdCwgcmVzdWx0LCBTVkdOYW1lczo6cmVzdWx0QXR0ciwgbV9yZXN1bHQpCiAKIHZvaWQgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHJl
dmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5BQkxFKFNW
RykKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKIApAQCAtNDQsOCArNDUsOCBAQCBTVkdG
aXRUb1ZpZXdCb3g6On5TVkdGaXRUb1ZpZXdCb3goKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OU19XSVRIX0NPTlRFWFQoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFJl
Y3QsIHJlY3QsIFZpZXdCb3gsIHZpZXdCb3gsIFNWR05hbWVzOjp2aWV3Qm94QXR0ci5sb2NhbE5h
bWUoKSwgbV92aWV3Qm94KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DT05U
RVhUKFNWR0ZpdFRvVmlld0JveCwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNl
cnZlQXNwZWN0UmF0aW8sIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ci5sb2NhbE5h
bWUoKSwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlNfV0lUSF9DT05URVhUKFNWR0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBSZWN0LCBy
ZWN0LCBWaWV3Qm94LCB2aWV3Qm94LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIG1fdmlld0JveCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdGaXRUb1ZpZXdC
b3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBT
VkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIG1fcHJlc2VydmVBc3BlY3RSYXRpby5n
ZXQoKSkKIAogYm9vbCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveChjb25zdCBVQ2hhciom
IGMsIGNvbnN0IFVDaGFyKiBlbmQsIGZsb2F0JiB4LCBmbG9hdCYgeSwgZmxvYXQmIHcsIGZsb2F0
JiBoLCBib29sIHZhbGlkYXRlKQogewpAQCAtMTEwLDggKzExMSwxMiBAQCBib29sIFNWR0ZpdFRv
Vmlld0JveDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKK3sKKyAgICByZXR1cm4gKGF0dHJOYW1lID09IFNWR05hbWVzOjp2aWV3Qm94QXR0
ciB8fAorICAgICAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyKTsKIH0KIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpCit9CiAKLS8vIHZpbTp0cz00Om5v
ZXQKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHJldmlz
aW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDEx
ICsyMiwxMiBAQAogCiAjaWZuZGVmIFNWR0ZpdFRvVmlld0JveF9oCiAjZGVmaW5lIFNWR0ZpdFRv
Vmlld0JveF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBBZmZpbmVU
cmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzsKIApAQCAtNDAsNiAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNm
b3JtIHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVp
Z2h0KSBjb25zdDsKIAogICAgICAgICBib29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSopOworICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgPSAwOwpAQCAtNTMsNSArNTUsMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFNWR0ZpdFRv
Vmlld0JveF9oCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTAgQEAg
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6On5TVkdGb3JlaWduT2JqZQogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFt
ZSgpLCBtX3kpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1l
czo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9o
ZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxl
bWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLCBt
X3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLCBtX3kp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBT
VkdOYW1lczo6aGVpZ2h0QXR0ciwgbV9oZWlnaHQpCiAKIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdHRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHR0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC01Miw2ICs1MiwyOSBAQCB2b2lkIFNWR0dFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNCiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIFNWR0dFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAg
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKKworICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpjbGlwUGF0aFVuaXRzQXR0ciB8fAorICAgICAgICBTVkdU
ZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwgCisgICAgICAgIFNWR0xhbmdTcGFj
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQor
ICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKK30KKwordm9pZCBTVkdH
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAg
ICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Cit9CisKIFJlbmRlck9iamVjdCog
U1ZHR0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqIHN0eWxlKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1h
YmxlQ29udGFpbmVyKHRoaXMpOwpAQCAtNjAsNSArODMsMyBAQCBSZW5kZXJPYmplY3QqIFNWR0dF
bGVtZW50OjpjcmVhdGVSZW5kZXJlCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMTkgKzI0LDE3IEBACiAjZGVm
aW5lIFNWR0dFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5j
bHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0
cy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAg
Y2xhc3MgU1ZHR0VsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiAgICAgcHVi
bGljOgogICAgICAgICBTVkdHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKICAgICAgICAgdmlydHVhbCB+U1ZHR0VsZW1lbnQoKTsKQEAgLTQ0LDYgKzQyLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJl
dHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNl
TWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCkBAIC02Miw1
ICs2MiwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2Vu
ZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Cisg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CkBAIC00NCw3ICs0NCw3IEBAIFNWR0dyYWRpZW50RWxlbWVudDo6
U1ZHR3JhZGllbnRFbGVtZW50KGMKICAgICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQo
KQogICAgICwgbV9zcHJlYWRNZXRob2QoMCkKICAgICAsIG1fZ3JhZGllbnRVbml0cyhTVkdVbml0
VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpCi0gICAgLCBtX2dyYWRpZW50
VHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0KCkpCisgICAgLCBtX2dyYWRpZW50VHJhbnNm
b3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0KFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIp
KQogewogfQogCkBAIC01Miw5ICs1Miw5IEBAIFNWR0dyYWRpZW50RWxlbWVudDo6flNWR0dyYWRp
ZW50RWxlbWVudCgKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHR3Jh
ZGllbnRFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgR3JhZGllbnRVbml0
cywgZ3JhZGllbnRVbml0cywgU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLmxvY2FsTmFtZSgp
LCBtX2dyYWRpZW50VW5pdHMpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdHcmFk
aWVudEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1M
aXN0LCBHcmFkaWVudFRyYW5zZm9ybSwgZ3JhZGllbnRUcmFuc2Zvcm0sIFNWR05hbWVzOjpncmFk
aWVudFRyYW5zZm9ybUF0dHIubG9jYWxOYW1lKCksIG1fZ3JhZGllbnRUcmFuc2Zvcm0uZ2V0KCkp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIGludCwg
RW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZH
TmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIubG9jYWxOYW1lKCksIG1fc3ByZWFkTWV0aG9kKQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsIEVudW1l
cmF0aW9uLCBlbnVtZXJhdGlvbiwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHTmFt
ZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBtX2dyYWRpZW50VW5pdHMpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBUcmFu
c2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBHcmFkaWVudFRyYW5zZm9ybSwgZ3JhZGllbnRUcmFu
c2Zvcm0sIFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIsIG1fZ3JhZGllbnRUcmFuc2Zv
cm0uZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdHcmFkaWVudEVsZW1l
bnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1l
dGhvZCwgU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIsIG1fc3ByZWFkTWV0aG9kKQogCiB2b2lk
IFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
KiBhdHRyKQogewpAQCAtODYsMTMgKzg2LDI4IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHIKICAgICB9CiB9CiAKLXZvaWQgU1ZHR3JhZGllbnRFbGVtZW50Ojpub3Rp
ZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdAordm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYg
KCFtX3Jlc291cmNlIHx8ICFhdHRhY2hlZCgpIHx8IGRvY3VtZW50KCktPnBhcnNpbmcoKSkKKyAg
ICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAg
IGlmICghbV9yZXNvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9yZXNvdXJjZS0+aW52
YWxpZGF0ZSgpOwotICAgIG1fcmVzb3VyY2UtPnJlcGFpbnRDbGllbnRzKCk7CisgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpncmFkaWVudFVuaXRzQXR0ciB8fAorICAgICAgICBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6Z3JhZGllbnRUcmFuc2Zvcm1BdHRyIHx8CisgICAgICAgIGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzcHJlYWRNZXRob2RBdHRyIHx8CisgICAgICAgIFNWR1VSSVJlZmVyZW5j
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZH
U3R5bGVkRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIG1fcmVz
b3VyY2UtPmludmFsaWRhdGUoKTsKK30KKwordm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxk
cmVuQ2hhbmdlZCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCk7
CisKKyAgICBpZiAobV9yZXNvdXJjZSkKKyAgICAgICAgbV9yZXNvdXJjZS0+aW52YWxpZGF0ZSgp
OwogfQogCiBSZW5kZXJPYmplY3QqIFNWR0dyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIo
UmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCkBAIC0xMTYsMzUgKzEzMSw0MyBAQCBW
ZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiBTVkdHcmFkaWVudEVsZW1lCiB7CiAgICAgVmVjdG9yPFNW
R0dyYWRpZW50U3RvcD4gc3RvcHM7CiAKLSAgICAvLyBGSVhNRTogTWFudWFsIHN0eWxlIHJlc29s
dXRpb24gaXMgYSBoYWNrCi0gICAgUmVuZGVyU3R5bGUqIGdyYWRpZW50U3R5bGUgPSAwOwogICAg
IGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsK
LSAgICAgICAgU1ZHRWxlbWVudCogZWxlbWVudCA9IDA7Ci0gICAgICAgIGlmIChuLT5pc1NWR0Vs
ZW1lbnQoKSkKLSAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bik7CisgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSBuLT5pc1NWR0VsZW1lbnQoKSA/IHN0
YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuKSA6IDA7CisKICAgICAgICAgaWYgKGVsZW1lbnQgJiYg
ZWxlbWVudC0+aXNHcmFkaWVudFN0b3AoKSkgewogICAgICAgICAgICAgU1ZHU3RvcEVsZW1lbnQq
IHN0b3AgPSBzdGF0aWNfY2FzdDxTVkdTdG9wRWxlbWVudCo+KGVsZW1lbnQpOwogICAgICAgICAg
ICAgZmxvYXQgc3RvcE9mZnNldCA9IHN0b3AtPm9mZnNldCgpOwogCi0gICAgICAgICAgICBpZiAo
IXN0b3AtPnJlbmRlcmVyKCkgJiYgIWdyYWRpZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgZ3Jh
ZGllbnRTdHlsZSA9IGNvbnN0X2Nhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Kj4odGhpcyktPnN0eWxl
Rm9yUmVuZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgQ29sb3IgY29s
b3I7CisgICAgICAgICAgICBmbG9hdCBvcGFjaXR5OwogCi0gICAgICAgICAgICBSZW5kZXJTdHls
ZSogc3RvcFN0eWxlID0gc3RvcC0+cmVzb2x2ZVN0eWxlKGdyYWRpZW50U3R5bGUpOwotICAgICAg
ICAgICAgQ29sb3IgYyA9IHN0b3BTdHlsZS0+c3ZnU3R5bGUoKS0+c3RvcENvbG9yKCk7Ci0gICAg
ICAgICAgICBmbG9hdCBvcGFjaXR5ID0gc3RvcFN0eWxlLT5zdmdTdHlsZSgpLT5zdG9wT3BhY2l0
eSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdG9wcy5hcHBlbmQobWFrZUdyYWRpZW50
U3RvcChzdG9wT2Zmc2V0LCBtYWtlUkdCQShjLnJlZCgpLCBjLmdyZWVuKCksIGMuYmx1ZSgpLCBp
bnQob3BhY2l0eSAqIDI1NS4pKSkpOwotICAgICAgICAgICAgc3RvcFN0eWxlLT5kZXJlZihkb2N1
bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgICAgIGlmIChzdG9wLT5yZW5kZXJlcigp
KSB7CisgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0b3BTdHlsZSA9IHN0b3AtPnJlbmRl
cmVyKCktPnN0eWxlKCk7CisgICAgICAgICAgICAgICAgY29sb3IgPSBzdG9wU3R5bGUtPnN2Z1N0
eWxlKCktPnN0b3BDb2xvcigpOworICAgICAgICAgICAgICAgIG9wYWNpdHkgPSBzdG9wU3R5bGUt
PnN2Z1N0eWxlKCktPnN0b3BPcGFjaXR5KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIHJlbmRlcmVyIGZvciB0aGlzIHN0b3AgZWxlbWVu
dCwgdGhlbiBhIHBhcmVudCBlbGVtZW50CisgICAgICAgICAgICAgICAgLy8gc2V0IGRpc3BsYXk9
Im5vbmUiIC0gaWUuIDxnIGRpc3BsYXk9Im5vbmUiPjxsaW5lYXJHcmFkaWVudD48c3RvcD4uLgor
ICAgICAgICAgICAgICAgIC8vIFVuZm9ydHVuYXRlbHkgd2UgaGF2ZSB0byBtYW51YWxseSByZWJ1
aWxkIHRoZSBzdG9wIHN0eWxlLiBTZWUgcHNlcnZlcnMtZ3JhZC0xOS1iLnN2ZworICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBncmFkaWVudFN0eWxlID0gY29uc3RfY2FzdDxTVkdHcmFkaWVu
dEVsZW1lbnQqPih0aGlzKS0+c3R5bGVGb3JSZW5kZXJlcihwYXJlbnQoKS0+cmVuZGVyZXIoKSk7
CisgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0b3BTdHlsZSA9IHN0b3AtPnJlc29sdmVT
dHlsZShncmFkaWVudFN0eWxlKTsKKworICAgICAgICAgICAgICAgIGNvbG9yID0gc3RvcFN0eWxl
LT5zdmdTdHlsZSgpLT5zdG9wQ29sb3IoKTsKKyAgICAgICAgICAgICAgICBvcGFjaXR5ID0gc3Rv
cFN0eWxlLT5zdmdTdHlsZSgpLT5zdG9wT3BhY2l0eSgpOworCisgICAgICAgICAgICAgICAgc3Rv
cFN0eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKKworICAgICAgICAgICAg
ICAgIGlmIChncmFkaWVudFN0eWxlKQorICAgICAgICAgICAgICAgICAgICBncmFkaWVudFN0eWxl
LT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgc3RvcHMuYXBwZW5kKG1ha2VHcmFkaWVudFN0b3Aoc3RvcE9mZnNldCwgbWFrZVJH
QkEoY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9yLmJsdWUoKSwgaW50KG9wYWNpdHkg
KiAyNTUuKSkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChncmFkaWVudFN0eWxlKQot
ICAgICAgICBncmFkaWVudFN0eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsK
ICAgICByZXR1cm4gc3RvcHM7CiB9CiAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAy
OTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBA
IC0yNCwxOSArMjQsMTkgQEAKICNkZWZpbmUgU1ZHR3JhZGllbnRFbGVtZW50X2gKIAogI2lmIEVO
QUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdQYWludFNlcnZlckdyYWRpZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgeworCiAgICAgY2xhc3MgU1ZHR3JhZGllbnRFbGVtZW50OwogICAgIGNsYXNzIFNWR1RyYW5z
Zm9ybUxpc3Q7CisKICAgICBjbGFzcyBTVkdHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5
bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJ
UmVmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGVudW0gU1ZHR3JhZGllbnRUeXBlIHsKICAgICAgICAgICAgIFNWR19TUFJFQURNRVRI
T0RfVU5LTk9XTiA9IDAsCkBAIC00OSw4ICs0OSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB+U1ZHR3JhZGllbnRFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7Ci0gICAgICAgIAorICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpOwogICAgICAgICB2aXJ0
dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHls
ZSopOwogCiAgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNlKCk7CkBA
IC03OSw1ICs4MCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA2IEFsZXhh
bmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAKQEAgLTU2LDExICs1NiwxMSBAQCBTVkdJ
bWFnZUVsZW1lbnQ6On5TVkdJbWFnZUVsZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRo
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIu
bG9jYWxOYW1lKCksIG1faGVpZ2h0KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
SW1hZ2VFbGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVBc3BlY3RSYXRp
bywgcHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3Bl
Y3RSYXRpbywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLmxvY2FsTmFtZSgpLCBt
X3ByZXNlcnZlQXNwZWN0UmF0aW8uZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05h
bWVzOjp4QXR0ciwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VF
bGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIs
IG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIG1faGVpZ2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1h
Z2VFbGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKiwgUHJlc2VydmVBc3BlY3RSYXRpbywg
cHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RS
YXRpbywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBtX3ByZXNlcnZlQXNwZWN0
UmF0aW8uZ2V0KCkpCiAKIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUgKmF0dHIpCiB7CkBAIC04OSwyMSArODksMzMgQEAgdm9pZCBTVkdJ
bWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBpZiAoU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChTVkdVUklSZWZlcmVu
Y2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKSB7Ci0gICAgICAgICAgICBpZiAoYXR0ci0+
bmFtZSgpLm1hdGNoZXMoWExpbmtOYW1lczo6aHJlZkF0dHIpICYmIGF0dGFjaGVkKCkpCi0gICAg
ICAgICAgICAgICAgbV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudCgpOworICAgICAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQogICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiAgICAgfQogfQogCi12b2lkIFNWR0lt
YWdlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKK3ZvaWQgU1ZHSW1hZ2VF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogewotICAgIGlmICghZG9jdW1lbnQoKS0+cGFyc2luZygpICYmIHJlbmRlcmVyKCkpCisgICAg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOworCisgICAgaWYgKCFyZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBib29s
IGlzVVJJQXR0cmlidXRlID0gU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjp5MUF0dHIgfHwKKyAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Ongy
QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyIHx8CisgICAgICAgIFNWR1Rlc3Rz
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdMYW5nU3BhY2U6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIGlzVVJJQXR0
cmlidXRlIHx8CisgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91
dCh0cnVlKTsKIAotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpub3RpZnlBdHRy
aWJ1dGVDaGFuZ2UoKTsKKyAgICAgICAgaWYgKGlzVVJJQXR0cmlidXRlKQorICAgICAgICAgICAg
bV9pbWFnZUxvYWRlci51cGRhdGVGcm9tRWxlbWVudCgpOworICAgIH0KIH0KIAogYm9vbCBTVkdJ
bWFnZUVsZW1lbnQ6Omhhc1JlbGF0aXZlVmFsdWVzKCkgY29uc3QKQEAgLTEzMyw1ICsxNDUsMyBA
QCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6YXR0YWNoKCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCShyZXZpc2lv
biAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0y
NCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR0ltYWdlRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZH
KQotCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUg
IlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR0ltYWdlTG9hZGVyLmgiCkBAIC0zMiwyNyAr
MzEsMjQgQEAKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5j
ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAg
Y2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzsKICAgICBjbGFzcyBTVkdMZW5ndGg7Ci0gICAg
Y2xhc3MgU1ZHRG9jdW1lbnQ7CiAKICAgICBjbGFzcyBTVkdJbWFnZUVsZW1lbnQgOiBwdWJsaWMg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1VSSVJlZmVyZW5jZQotICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgU1ZHVVJJUmVmZXJlbmNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0ltYWdlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
SW1hZ2VFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgICAgICAvLyAnU1ZH
SW1hZ2VFbGVtZW50JyBmdW5jdGlvbnMKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
YXR0YWNoKCk7CiAKQEAgLTgzLDUgKzc5LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMYW5n
U3BhY2UuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKQEAgLTc2LDggKzc2LDEyIEBAIGJvb2wgU1ZHTGFuZ1NwYWNlOjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZSgKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgU1ZHTGFuZ1Nw
YWNlOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorewor
ICAgIHJldHVybiAoYXR0ck5hbWUubWF0Y2hlcyhYTUxOYW1lczo6bGFuZ0F0dHIpIHx8CisgICAg
ICAgICAgICBhdHRyTmFtZS5tYXRjaGVzKFhNTE5hbWVzOjpzcGFjZUF0dHIpKTsKIH0KIAotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCit9CiAKLS8vIHZpbTp0cz00Om5vZXQKKyNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9z
dmcvU1ZHTGFuZ1NwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAg
ICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDE5ICsyNCwxOCBAQAogI2RlZmlu
ZSBTVkdMYW5nU3BhY2VfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBNYXBwZWRBdHRyaWJ1
dGU7CisgICAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogICAgIGNsYXNzIFNWR0xhbmdTcGFjZSB7
CiAgICAgcHVibGljOgogICAgICAgICBTVkdMYW5nU3BhY2UoKTsKICAgICAgICAgdmlydHVhbCB+
U1ZHTGFuZ1NwYWNlKCk7CiAKLSAgICAgICAgLy8gJ1NWR0xhbmdTcGFjZScgZnVuY3Rpb25zCiAg
ICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgeG1sbGFuZygpIGNvbnN0OwogICAgICAgICB2b2lk
IHNldFhtbGxhbmcoY29uc3QgQXRvbWljU3RyaW5nJiB4bWxMYW5nKTsKIApAQCAtNDQsNiArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0WG1sc3BhY2UoY29uc3Qg
QXRvbWljU3RyaW5nJiB4bWxTcGFjZSk7CiAKICAgICAgICAgYm9vbCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgYm9vbCBpc0tub3duQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEF0b21pY1N0cmlu
ZyBtX2xhbmc7CkBAIC01NCw1ICs1NCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHTGFuZ1NwYWNlX2gKLQotLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRm
b3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI5LDggKzI5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TVkdMZW5ndGhMaXN0OjpTVkdMZW5ndGhMaXN0KCkKLSAgICA6IFNWR1BPRExpc3Q8
U1ZHTGVuZ3RoPigpCitTVkdMZW5ndGhMaXN0OjpTVkdMZW5ndGhMaXN0KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgOiBTVkdQT0RMaXN0PFNWR0xlbmd0aD4oYXR0cmli
dXRlTmFtZSkKIHsKIH0KIApAQCAtNjIsNSArNjIsMyBAQCB2b2lkIFNWR0xlbmd0aExpc3Q6OnBh
cnNlKGNvbnN0IFN0cmluZyYgCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNv
cmUvc3ZnL1NWR0xlbmd0aExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMTYgKzI0LDE0IEBACiAj
ZGVmaW5lIFNWR0xlbmd0aExpc3RfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNW
R0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0xpc3QuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
LSAgICBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR1BPRExpc3Q8U1ZHTGVuZ3RoPgot
ICAgIHsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBw
dWJsaWMgU1ZHUE9ETGlzdDxTVkdMZW5ndGg+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNWR0xl
bmd0aExpc3QoKTsKKyAgICAgICAgU1ZHTGVuZ3RoTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAgICAgICAgIHZpcnR1YWwgflNWR0xlbmd0aExpc3QoKTsKIAogICAgICAgICB2b2lkIHBhcnNl
KGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFNWR1N0eWxlZEVsZW1lbnQqIGNvbnRleHQsIFNW
R0xlbmd0aE1vZGUgbW9kZSk7CkBAIC00Myw1ICs0MSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZH
TGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94
QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC00OCwxMCArNDgsMTAgQEAgU1ZHTGlu
ZUVsZW1lbnQ6On5TVkdMaW5lRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMSwg
eDEsIFNWR05hbWVzOjp4MUF0dHIubG9jYWxOYW1lKCksIG1feDEpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WTEsIHkxLCBTVkdOYW1lczo6eTFBdHRyLmxvY2FsTmFtZSgpLCBtX3kxKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2NhbE5hbWUoKSwgbV94MikKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwg
bGVuZ3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIubG9jYWxOYW1lKCksIG1feTIpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLCBtX3gxKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0ciwgbV95MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMiwg
eDIsIFNWR05hbWVzOjp4MkF0dHIsIG1feDIpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdMaW5lRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTIsIHkyLCBTVkdO
YW1lczo6eTJBdHRyLCBtX3kyKQogCiB2b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC03NSwxMiArNzUsMjAgQEAgdm9p
ZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dAogICAgIH0KIH0KIAotdm9pZCBT
VkdMaW5lRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKK3ZvaWQgU1ZHTGlu
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5wYXJzaW5nKCkgJiYgcmVuZGVyZXIoKSkKLSAg
ICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworCisgICAg
aWYgKCFyZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CiAKLSAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CisgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp4MUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0ciB8fAor
ICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjp5MkF0dHIgfHwKKyAgICAgICAgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpIHx8CisgICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkg
fHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xh
eW91dCh0cnVlKTsKIH0KIAogUGF0aCBTVkdMaW5lRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0
CkBAIC05OCw1ICsxMDYsMyBAQCBib29sIFNWR0xpbmVFbGVtZW50OjpoYXNSZWxhdGl2ZVZhbHVl
cygpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUu
b3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMjkgKzI0LDI3IEBACiAjZGVmaW5lIFNWR0xpbmVF
bGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCi1u
YW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZH
TGVuZ3RoOworCiAgICAgY2xhc3MgU1ZHTGluZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
VGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQKLSAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdMaW5lRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
TGluZUVsZW1lbnQoKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIC8vICdTVkdM
aW5lRWxlbWVudCcgZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZpcnR1
YWwgUGF0aCB0b1BhdGhEYXRhKCkgY29uc3Q7CiAKQEAgLTY5LDUgKzY3LDMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKQEAgLTUxLDEwICs1MSwxMCBAQCBTVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQ6On5TVkdMaW5lYXJHcmFkCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WDEsIHgxLCBTVkdOYW1lczo6eDFBdHRyLmxvY2FsTmFtZSgpLCBtX3gxKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1lKCksIG1feTEp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ci5sb2Nh
bE5hbWUoKSwgbV94MikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdy
YWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTIsIHkyLCBTVkdOYW1l
czo6eTJBdHRyLmxvY2FsTmFtZSgpLCBtX3kyKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBY
MSwgeDEsIFNWR05hbWVzOjp4MUF0dHIsIG1feDEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFkxLCB5MSwgU1ZHTmFtZXM6OnkxQXR0ciwgbV95MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgWDIsIHgyLCBTVkdOYW1lczo6eDJBdHRyLCBtX3gyKQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIsIG1feTIpCiAKIHZvaWQgU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIp
CiB7CkBAIC03MCw2ICs3MCwxOCBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6cGFy
c2VNYXBwCiAgICAgICAgIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiB9CiAKK3ZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR0dyYWRpZW50
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisKKyAgICBpZiAoIW1fcmVz
b3VyY2UpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eDFBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5MUF0dHIgfHwKKyAgICAgICAgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OngyQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKQor
ICAgICAgICBtX3Jlc291cmNlLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpidWlsZEdyYWRpZW50KCkgY29uc3QKIHsKICAgICBMaW5lYXJHcmFkaWVu
dEF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IGNvbGxlY3RHcmFkaWVudFByb3BlcnRpZXMoKTsKQEAg
LTE1MCw1ICsxNjIsMyBAQCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgU1ZHTGluZWFyR3JhZGll
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gMjk5NDYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQs
MjIgKzI0LDIwIEBACiAjZGVmaW5lIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudF9oCiAKICNpZiBF
TkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50LmgiCiAKLW5hbWVzcGFj
ZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBzdHJ1Y3QgTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzOwogICAgIGNsYXNzIFNWR0xlbmd0aDsKIAotICAgIGNsYXNzIFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudCA6IHB1YmxpYyBTVkdHcmFkaWVudEVsZW1lbnQKLSAgICB7Cisg
ICAgY2xhc3MgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50IDogcHVibGljIFNWR0dyYWRpZW50RWxl
bWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0xpbmVh
ckdyYWRpZW50RWxlbWVudCgpOwogCi0gICAgICAgIC8vICdTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQnIGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmly
dHVhbCB2b2lkIGJ1aWxkR3JhZGllbnQoKSBjb25zdDsKQEAgLTYxLDUgKzU5LDMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRz
PTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0xpc3QuaAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdMaXN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKQEAgLTI0LDE4ICsyNCwxOCBAQAogI2RlZmluZSBTVkdMaXN0X2gKIAogI2lmIEVO
QUJMRShTVkcpCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlNWR0xpc3RUcmFpdHMuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+Ci0jaW5jbHVkZSAiU1ZHTGlzdFRyYWl0cy5oIgotI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVt
PgotICAgIHN0cnVjdCBTVkdMaXN0VHlwZU9wZXJhdGlvbnMKLSAgICB7CisgICAgc3RydWN0IFNW
R0xpc3RUeXBlT3BlcmF0aW9ucyB7CiAgICAgICAgIHN0YXRpYyBJdGVtIG51bGxJdGVtKCkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIFNWR0xpc3RUcmFpdHM8VXNlc0RlZmF1bHRJbml0
aWFsaXplcjxJdGVtPjo6dmFsdWUsIEl0ZW0+OjpudWxsSXRlbSgpOwpAQCAtNDMsMTUgKzQzLDIw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9OwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
SXRlbT4KLSAgICBjbGFzcyBTVkdMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHTGlzdDxJdGVt
PiA+Ci0gICAgeworICAgIGNsYXNzIFNWR0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdMaXN0
PEl0ZW0+ID4gewogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgU1ZHTGlzdFR5cGVPcGVy
YXRpb25zPEl0ZW0+IFR5cGVPcGVyYXRpb25zOwogCiAgICAgcHVibGljOgotICAgICAgICBTVkdM
aXN0KCkgeyB9CisgICAgICAgIFNWR0xpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRl
TmFtZSkgCisgICAgICAgICAgICA6IG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoYXR0cmlidXRl
TmFtZSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgdmlydHVhbCB+U1ZHTGlzdCgp
IHsgbV92ZWN0b3IuY2xlYXIoKTsgfQogCisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFz
c29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9hc3NvY2lhdGVkQXR0cmli
dXRlTmFtZTsgfQorCiAgICAgICAgIHVuc2lnbmVkIGludCBudW1iZXJPZkl0ZW1zKCkgY29uc3Qg
eyByZXR1cm4gbV92ZWN0b3Iuc2l6ZSgpOyB9CiAgICAgICAgIHZvaWQgY2xlYXIoRXhjZXB0aW9u
Q29kZSAmKSB7IG1fdmVjdG9yLmNsZWFyKCk7IH0KIApAQCAtMTMwLDExICsxMzUsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgVmVjdG9yPEl0ZW0+IG1f
dmVjdG9yOworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBtX2Fzc29jaWF0ZWRBdHRyaWJ1
dGVOYW1lOwogICAgIH07CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotICAgIGNsYXNz
IFNWR1BPRExpc3RJdGVtIDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUE9ETGlzdEl0ZW08SXRlbT4g
PgotICAgIHsKKyAgICBjbGFzcyBTVkdQT0RMaXN0SXRlbSA6IHB1YmxpYyBSZWZDb3VudGVkPFNW
R1BPRExpc3RJdGVtPEl0ZW0+ID4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUE9ETGlzdEl0
ZW0oKSA6IG1faXRlbSgpIHsgfQogICAgICAgICBTVkdQT0RMaXN0SXRlbShjb25zdCBJdGVtJiBp
dGVtKSA6IG1faXRlbShpdGVtKSB7IH0KQEAgLTE1NCw3ICsxNTksNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgU1ZHUE9ETGlzdCA6IHB1YmxpYyBTVkdMaXN0PFJlZlB0cjxTVkdQ
T0RMaXN0SXRlbTxJdGVtPiA+ID4KICAgICB7CiAgICAgcHVibGljOgotICAgICAgICBTVkdQT0RM
aXN0KCkgOiBTVkdMaXN0PFJlZlB0cjxTVkdQT0RMaXN0SXRlbTxJdGVtPiA+ID4oKSB7IH0KKyAg
ICAgICAgU1ZHUE9ETGlzdChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSA6IFNW
R0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEl0ZW0+ID4gPihhdHRyaWJ1dGVOYW1lKSB7IH0K
IAogICAgICAgICBJdGVtIGluaXRpYWxpemUoSXRlbSBuZXdJdGVtLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgewpAQCAtMjQyLDUgKzI0NywzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHTGlzdF9oCi0KLS8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0NikKKysr
IFdlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CkBAIC01OCwxMyArNTgsMTMgQEAgU1ZHTWFya2VyRWxlbWVudDo6flNWR01hcmtlckVs
ZW1lbnQoKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJF
bGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSZWZYLCByZWZYLCBTVkdOYW1lczo6
cmVmWEF0dHIubG9jYWxOYW1lKCksIG1fcmVmWCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFJlZlksIHJl
ZlksIFNWR05hbWVzOjpyZWZZQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZZKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51
bWVyYXRpb24sIE1hcmtlclVuaXRzLCBtYXJrZXJVbml0cywgU1ZHTmFtZXM6Om1hcmtlclVuaXRz
QXR0ci5sb2NhbE5hbWUoKSwgbV9tYXJrZXJVbml0cykKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIE1hcmtl
cldpZHRoLCBtYXJrZXJXaWR0aCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ci5sb2NhbE5hbWUo
KSwgbV9tYXJrZXJXaWR0aCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtl
ckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIE1hcmtlckhlaWdodCwgbWFya2Vy
SGVpZ2h0LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9tYXJrZXJI
ZWlnaHQpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBp
bnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgT3JpZW50VHlwZSwgb3JpZW50VHlwZSwgIm9y
aWVudFR5cGUiLCBtX29yaWVudFR5cGUpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdNYXJrZXJFbGVtZW50LCBTVkdBbmdsZSosIEFuZ2xlLCBhbmdsZSwgT3JpZW50QW5nbGUsIG9y
aWVudEFuZ2xlLCAib3JpZW50QW5nbGUiLCBtX29yaWVudEFuZ2xlLmdldCgpKQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgUmVmWCwgcmVmWCwgU1ZHTmFtZXM6OnJlZlhBdHRyLCBtX3JlZlgpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBSZWZZLCByZWZZLCBTVkdOYW1lczo6cmVmWUF0dHIsIG1fcmVmWSkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRp
b24sIGVudW1lcmF0aW9uLCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMsIFNWR05hbWVzOjptYXJr
ZXJVbml0c0F0dHIsIG1fbWFya2VyVW5pdHMpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJXaWR0
aCwgbWFya2VyV2lkdGgsIFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIsIG1fbWFya2VyV2lkdGgp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhlaWdodCwgU1ZHTmFtZXM6
Om1hcmtlckhlaWdodEF0dHIsIG1fbWFya2VySGVpZ2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdNYXJrZXJFbGVtZW50LCBpbnQsIEVu
dW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgT3JpZW50VHlwZSwgb3JpZW50VHlwZSwgU1ZHTmFtZXM6
Om9yaWVudEF0dHIsICJvcmllbnRUeXBlIiwgbV9vcmllbnRUeXBlKQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURFTlRJRklFUihTVkdNYXJrZXJFbGVtZW50LCBT
VkdBbmdsZSosIEFuZ2xlLCBhbmdsZSwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlLCBTVkdOYW1l
czo6b3JpZW50QXR0ciwgIm9yaWVudEFuZ2xlIiwgbV9vcmllbnRBbmdsZS5nZXQoKSkKIAogdm9p
ZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
IGF0dHIpCiB7CkBAIC05OSw2ICs5OSwzOCBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmliCiAgICAgfQogfQogCit2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHU3R5
bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisKKyAgICBpZiAoIW1f
bWFya2VyKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Om1hcmtlclVuaXRzQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVmWEF0dHIgfHwKKyAg
ICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlZllBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjptYXJrZXJXaWR0aEF0dHIgfHwKKyAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1h
cmtlckhlaWdodEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yaWVudEF0dHIgfHwKKyAg
ICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAg
ICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSB8fAorICAgICAgICBTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
IHx8CisgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXIoKS0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIAorICAgICAgICBtX21hcmtlci0+aW52YWxpZGF0
ZSgpOworICAgIH0KK30KKwordm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
KQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpOworCisgICAgaWYg
KHJlbmRlcmVyKCkpCisgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwor
CisgICAgaWYgKG1fbWFya2VyKQorICAgICAgICBtX21hcmtlci0+aW52YWxpZGF0ZSgpOworfQor
CiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQXV0bygpCiB7CiAgICAgc2V0T3Jp
ZW50VHlwZUJhc2VWYWx1ZShTVkdfTUFSS0VSX09SSUVOVF9BVVRPKTsKQEAgLTE0MCwyMyArMTcy
LDYgQEAgUmVuZGVyT2JqZWN0KiBTVkdNYXJrZXJFbGVtZW50OjpjcmVhdGVSZQogICAgIHJldHVy
biBtYXJrZXJDb250YWluZXI7CiB9CiAKLXZvaWQgU1ZHTWFya2VyRWxlbWVudDo6bm90aWZ5QXR0
cmlidXRlQ2hhbmdlKCkgY29uc3QKLXsKLSAgICBpZiAoIW1fbWFya2VyIHx8ICFhdHRhY2hlZCgp
IHx8IGRvY3VtZW50KCktPnBhcnNpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVuZGVy
U1ZHVmlld3BvcnRDb250YWluZXIqIG1hcmtlckNvbnRhaW5lciA9IHN0YXRpY19jYXN0PFJlbmRl
clNWR1ZpZXdwb3J0Q29udGFpbmVyKj4ocmVuZGVyZXIoKSk7Ci0KLSAgICAvLyBOT1RFOiBUaGlz
IGlzIGEgdHlwaWNhbCBjYXNlLCB3aGVyZSBwcm9wZXIgImF0dHJpYnV0ZUNoYW5nZWQiIHVzYWdl
IHdvdWxkIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgbmVlZGVkLgotICAgIGlmIChtYXJr
ZXJDb250YWluZXIpCi0gICAgICAgIG1hcmtlckNvbnRhaW5lci0+c2V0TmVlZHNMYXlvdXQodHJ1
ZSk7Ci0KLSAgICBtX21hcmtlci0+aW52YWxpZGF0ZSgpOwotICAgIG1fbWFya2VyLT5yZXBhaW50
Q2xpZW50cygpOwotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MjQsMjMgKzI0LDIxIEBACiAjZGVmaW5lIFNWR01hcmtlckVsZW1lbnRfaAogCiAjaWYgRU5BQkxF
KFNWRykKLQogI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFya2VyLmgiCiAjaW5jbHVkZSAiU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgog
I2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIK
IAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNz
IERvY3VtZW50OwogICAgIGNsYXNzIFNWR0FuZ2xlOwogICAgIAogICAgIGNsYXNzIFNWR01hcmtl
ckVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gKLSAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3ggewogICAgIHB1YmxpYzoKICAg
ICAgICAgZW51bSBTVkdNYXJrZXJVbml0c1R5cGUgewogICAgICAgICAgICAgU1ZHX01BUktFUlVO
SVRTX1VOS05PV04gICAgICAgICAgID0gMCwKQEAgLTU3LDEyICs1NSwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICBTVkdNYXJrZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdNYXJrZXJFbGVtZW50KCk7CiAKLSAgICAg
ICAgLy8gJ1NWR01hcmtlckVsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2b2lkIHNldE9yaWVu
dFRvQXV0bygpOwogICAgICAgICB2b2lkIHNldE9yaWVudFRvQW5nbGUoU1ZHQW5nbGUqKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
Kik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiAKICAgICAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2Uo
KTsKQEAgLTkwLDUgKzg4LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50
LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEFsZXhh
bmRlciBLZWxsZXR0IDxseXBhbm92QGtkZS5vcmc+CiAKQEAgLTY4LDEzICs2OCwxMiBAQCBTVkdN
YXNrRWxlbWVudDo6flNWR01hc2tFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9u
LCBNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIubG9jYWxOYW1l
KCksIG1fbWFza1VuaXRzKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0Vs
ZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBNYXNrQ29udGVudFVuaXRzLCBt
YXNrQ29udGVudFVuaXRzLCBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0dHIubG9jYWxOYW1l
KCksIG1fbWFza0NvbnRlbnRVbml0cykKLQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVz
Ojp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVz
Ojp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwg
U1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUoKSwgbV93aWR0aCkKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3Ro
LCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIubG9jYWxOYW1lKCksIG1faGVp
Z2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIGludCwg
RW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBNYXNrVW5pdHMsIG1hc2tVbml0cywgU1ZHTmFtZXM6
Om1hc2tVbml0c0F0dHIsIG1fbWFza1VuaXRzKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHTWFza0VsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBNYXNrQ29u
dGVudFVuaXRzLCBtYXNrQ29udGVudFVuaXRzLCBTVkdOYW1lczo6bWFza0NvbnRlbnRVbml0c0F0
dHIsIG1fbWFza0NvbnRlbnRVbml0cykKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6
eEF0dHIsIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50
LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIsIG1feSkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIsIG1fd2lk
dGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRy
LCBtX2hlaWdodCkKIAogdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpAQCAtMTA5LDYgKzEwOCwzNCBAQCB2b2lkIFNWR01h
c2tFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgfQogfQogCit2b2lkIFNWR01hc2tF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OworCisgICAgaWYgKCFtX21hc2tlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjptYXNrVW5pdHNBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpt
YXNrQ29udGVudFVuaXRzQXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyIHx8CisgICAgICAgIGF0dHJOYW1lID09
IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIg
fHwKKyAgICAgICAgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8
fAorICAgICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAg
ICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8
fAorICAgICAgICBTVkdTdHlsZWRFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkK
KyAgICAgICAgbV9tYXNrZXItPmludmFsaWRhdGUoKTsKK30KKwordm9pZCBTVkdNYXNrRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoKTsKKworICAgIGlmICghbV9tYXNrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bWFza2VyLT5pbnZhbGlkYXRlKCk7Cit9CisKIGF1dG9fcHRyPEltYWdlQnVmZmVyPiBTVkdNYXNr
RWxlbWVudDo6ZHJhd01hc2tlckNvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBG
bG9hdFJlY3QmIG1hc2tEZXN0UmVjdCkgY29uc3QKIHsgICAgCiAgICAgLy8gRGV0ZXJtaW5lIHNw
ZWNpZmllZCBtYXNrIHNpemUKQEAgLTE5NCwxOSArMjIxLDYgQEAgU1ZHUmVzb3VyY2UqIFNWR01h
c2tFbGVtZW50OjpjYW52YXNSZXNvdQogICAgIHJldHVybiBtX21hc2tlci5nZXQoKTsKIH0KIAot
dm9pZCBTVkdNYXNrRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKLXsKLSAg
ICBpZiAoIWF0dGFjaGVkKCkgfHwgZG9jdW1lbnQoKS0+cGFyc2luZygpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgaWYgKG1fbWFza2VyKSB7Ci0gICAgICAgIG1fbWFza2VyLT5pbnZhbGlk
YXRlKCk7Ci0gICAgICAgIG1fbWFza2VyLT5yZXBhaW50Q2xpZW50cygpOwotICAgIH0KLX0KLQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdN
YXNrRWxlbWVudC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKICNkZWZpbmUgU1ZHTWFza0Vs
ZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR1Jlc291cmNlTWFza2Vy
LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUg
IlNWR0xhbmdTcGFjZS5oIgpAQCAtMzEsMjggKzMwLDI3IEBACiAjaW5jbHVkZSAiU1ZHVGVzdHMu
aCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
LSAgICBjbGFzcyBBdHRyaWJ1dGU7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBT
VkdMZW5ndGg7CisKICAgICBjbGFzcyBTVkdNYXNrRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VS
SVJlZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAot
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR01hc2tFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdNYXNrRWxl
bWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNW
R1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgICAgICAvLyAnU1ZHTWFza0VsZW1lbnQnIGZ1bmN0
aW9ucwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiAK
ICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5h
KiwgUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVz
b3VyY2UoKTsKLSAgICAgICAgCisKICAgICAgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4g
ZHJhd01hc2tlckNvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBGbG9hdFJlY3Qm
IG1hc2tSZWN0KSBjb25zdDsKIAogICAgIHByb3RlY3RlZDoKQEAgLTc3LDUgKzc1LDMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysg
V2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4g
PHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAy
MDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI5LDggKzI5LDggQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1TVkdOdW1iZXJMaXN0OjpTVkdOdW1iZXJMaXN0KCkKLSAgICA6IFNWR0xp
c3Q8ZmxvYXQ+KCkKK1NWR051bWJlckxpc3Q6OlNWR051bWJlckxpc3QoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICA6IFNWR0xpc3Q8ZmxvYXQ+KGF0dHJpYnV0ZU5hbWUp
CiB7CiB9CiAKQEAgLTU2LDYgKzU2LDQgQEAgdm9pZCBTVkdOdW1iZXJMaXN0OjpwYXJzZShjb25z
dCBTdHJpbmcmIAogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQotCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3Zn
L1NWR051bWJlckxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUu
b3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1h
bm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIw
MDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtMjQsMTcgKzI0LDE1IEBACiAjZGVmaW5lIFNWR051bWJlckxpc3Rf
aAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR0xpc3QuaCIKIAotbmFtZXNwYWNl
IFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFN0cmluZzsKIAot
ICAgIGNsYXNzIFNWR051bWJlckxpc3QgOiBwdWJsaWMgU1ZHTGlzdDxmbG9hdD4KLSAgICB7Cisg
ICAgY2xhc3MgU1ZHTnVtYmVyTGlzdCA6IHB1YmxpYyBTVkdMaXN0PGZsb2F0PiB7CiAgICAgcHVi
bGljOgotICAgICAgICBTVkdOdW1iZXJMaXN0KCk7CisgICAgICAgIFNWR051bWJlckxpc3QoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIH5TVkdOdW1iZXJMaXN0KCk7CiAK
ICAgICAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKTsKQEAgLTQ0LDUgKzQyLDMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQot
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5
NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTU2LDcgKzU2LDcgQEAgU1ZHUGF0aEVsZW1lbnQ6On5TVkdQYXRoRWxlbWVudCgpCiB7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdGhFbGVtZW50LCBmbG9hdCwg
TnVtYmVyLCBudW1iZXIsIFBhdGhMZW5ndGgsIHBhdGhMZW5ndGgsIFNWR05hbWVzOjpwYXRoTGVu
Z3RoQXR0ci5sb2NhbE5hbWUoKSwgbV9wYXRoTGVuZ3RoKQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUGF0aEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgUGF0aExlbmd0
aCwgcGF0aExlbmd0aCwgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLCBtX3BhdGhMZW5ndGgpCiAK
IGZsb2F0IFNWR1BhdGhFbGVtZW50OjpnZXRUb3RhbExlbmd0aCgpCiB7CkBAIC0xOTMsMTggKzE5
MywyNSBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgfQog
fQogCi12b2lkIFNWR1BhdGhFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdAor
dm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCktPnBhcnNpbmcoKSAmJiByZW5k
ZXJlcigpKQotICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICBT
VkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CisKKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybjsKIAotICAgIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKKyAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpw
YXRoTGVuZ3RoQXR0ciB8fAorICAgICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkgfHwKKyAgICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSB8fAorICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRz
TGF5b3V0KHRydWUpOwogfQogCiBTVkdQYXRoU2VnTGlzdCogU1ZHUGF0aEVsZW1lbnQ6OnBhdGhT
ZWdMaXN0KCkgY29uc3QKIHsKICAgICBpZiAoIW1fcGF0aFNlZ0xpc3QpCi0gICAgICAgIG1fcGF0
aFNlZ0xpc3QgPSBuZXcgU1ZHUGF0aFNlZ0xpc3QoKTsKKyAgICAgICAgbV9wYXRoU2VnTGlzdCA9
IG5ldyBTVkdQYXRoU2VnTGlzdChTVkdOYW1lczo6ZEF0dHIpOwogCiAgICAgcmV0dXJuIG1fcGF0
aFNlZ0xpc3QuZ2V0KCk7CiB9CkBAIC0yMzUsNSArMjQyLDMgQEAgUGF0aCBTVkdQYXRoRWxlbWVu
dDo6dG9QYXRoRGF0YSgpIGNvbnN0CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysg
V2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsNyAr
MjQsNiBAQAogI2RlZmluZSBTVkdQYXRoRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQYXRoRGF0YS5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKQEAgLTk0LDggKzkz
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIFNWR1BhdGhTZWdMaXN0
KiBhbmltYXRlZFBhdGhTZWdMaXN0KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU1ZHUGF0aFNl
Z0xpc3QqIGFuaW1hdGVkTm9ybWFsaXplZFBhdGhTZWdMaXN0KCkgY29uc3Q7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSop
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIApA
QCAtMTE2LDUgKzExNSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
UGF0aFNlZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWcuaAkocmV2aXNp
b24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0
LDggKzI0LDkgQEAKICNkZWZpbmUgU1ZHUGF0aFNlZ19oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgorCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUKQEAgLTY1LDExICs2
NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHVuc2lnbmVkIHNob3J0
IHBhdGhTZWdUeXBlKCkgY29uc3QgeyByZXR1cm4gUEFUSFNFR19VTktOT1dOOyB9CiAgICAgICAg
IHZpcnR1YWwgU3RyaW5nIHBhdGhTZWdUeXBlQXNMZXR0ZXIoKSBjb25zdCB7IHJldHVybiAiIjsg
fQogICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuICIiOyB9
CisKKyAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUo
KSBjb25zdCB7IHJldHVybiBTVkdOYW1lczo6ZEF0dHI7IH0KICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0
cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysg
V2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogICAgIENvcHlyaWdodCAoQykgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3Jn
PgogIApAQCAtMzUsOCArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1BhdGhT
ZWdMaXN0OjpTVkdQYXRoU2VnTGlzdCgpCi0gICAgOiBTVkdMaXN0PFJlZlB0cjxTVkdQYXRoU2Vn
PiA+KCkKK1NWR1BhdGhTZWdMaXN0OjpTVkdQYXRoU2VnTGlzdChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQorICAgIDogU1ZHTGlzdDxSZWZQdHI8U1ZHUGF0aFNlZz4gPihhdHRy
aWJ1dGVOYW1lKQogewogfQogCkBAIC0xMzgsNSArMTM4LDMgQEAgUGF0aCBTVkdQYXRoU2VnTGlz
dDo6dG9QYXRoRGF0YSgpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29y
ZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAog
I2RlZmluZSBTVkdQYXRoU2VnTGlzdF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAi
U1ZHTGlzdC5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWcuaCIKIApAQCAtMzQsNyArMzMsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgCiAgICAgY2xhc3MgU1ZHUGF0aFNlZ0xpc3QgOiBwdWJsaWMg
U1ZHTGlzdDxSZWZQdHI8U1ZHUGF0aFNlZz4gPiB7CiAgICAgcHVibGljOgotICAgICAgICBTVkdQ
YXRoU2VnTGlzdCgpOworICAgICAgICBTVkdQYXRoU2VnTGlzdChjb25zdCBRdWFsaWZpZWROYW1l
Jik7CiAgICAgICAgIHZpcnR1YWwgflNWR1BhdGhTZWdMaXN0KCk7CiAKICAgICAgICAgdW5zaWdu
ZWQgZ2V0UGF0aFNlZ0F0TGVuZ3RoKGRvdWJsZSk7CkBAIC00NSw1ICs0NCwzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRz
PTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTYzLDcgKzYzLDcgQEAgU1ZHUGF0dGVybkVsZW1lbnQ6OlNWR1BhdHRl
cm5FbGVtZW50KGNvbgogICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkKICAg
ICAsIG1fcGF0dGVyblVuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VO
RElOR0JPWCkKICAgICAsIG1fcGF0dGVybkNvbnRlbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19V
TklUX1RZUEVfVVNFUlNQQUNFT05VU0UpCi0gICAgLCBtX3BhdHRlcm5UcmFuc2Zvcm0obmV3IFNW
R1RyYW5zZm9ybUxpc3QoKSkKKyAgICAsIG1fcGF0dGVyblRyYW5zZm9ybShuZXcgU1ZHVHJhbnNm
b3JtTGlzdChTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIpKQogewogfQogCkBAIC03MSwx
MyArNzEsMTMgQEAgU1ZHUGF0dGVybkVsZW1lbnQ6On5TVkdQYXR0ZXJuRWxlbWVudCgpCiB7CiB9
CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQs
IEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgUGF0dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMsIFNW
R05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX3BhdHRlcm5Vbml0cykKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBpbnQsIEVudW1l
cmF0aW9uLCBlbnVtZXJhdGlvbiwgUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRV
bml0cywgU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX3Bh
dHRlcm5Db250ZW50VW5pdHMpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0
ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhB
dHRyLmxvY2FsTmFtZSgpLCBtX3gpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQ
YXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6
OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRo
LCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwg
bV9oZWlnaHQpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVu
dCwgU1ZHVHJhbnNmb3JtTGlzdCosIFRyYW5zZm9ybUxpc3QsIHRyYW5zZm9ybUxpc3QsIFBhdHRl
cm5UcmFuc2Zvcm0sIHBhdHRlcm5UcmFuc2Zvcm0sIFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3Jt
QXR0ci5sb2NhbE5hbWUoKSwgbV9wYXR0ZXJuVHJhbnNmb3JtLmdldCgpKQorQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVu
dW1lcmF0aW9uLCBQYXR0ZXJuVW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5V
bml0c0F0dHIsIG1fcGF0dGVyblVuaXRzKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUGF0dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQYXR0ZXJu
Q29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdOYW1lczo6cGF0dGVybkNvbnRl
bnRVbml0c0F0dHIsIG1fcGF0dGVybkNvbnRlbnRVbml0cykKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBY
LCB4LCBTVkdOYW1lczo6eEF0dHIsIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdO
YW1lczo6eUF0dHIsIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRl
cm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05h
bWVzOjp3aWR0aEF0dHIsIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdQYXR0ZXJuRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWln
aHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBtX2hlaWdodCkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3Jt
TGlzdCwgdHJhbnNmb3JtTGlzdCwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSwg
U1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCBtX3BhdHRlcm5UcmFuc2Zvcm0uZ2V0KCkp
CiAKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSogYXR0cikKIHsKQEAgLTEyNSw2ICsxMjUsMzUgQEAgdm9pZCBTVkdQYXR0ZXJuRWxl
bWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIH0KIH0KIAordm9pZCBTVkdQYXR0ZXJuRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sK
KyAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKwor
ICAgIGlmICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpw
YXR0ZXJuQ29udGVudFVuaXRzQXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
cGF0dGVyblRyYW5zZm9ybUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjp5QXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyIHx8CisgICAg
ICAgIFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAg
ICAgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IAorICAgICAgICBTVkdM
YW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAg
ICAgIFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAg
ICAgU1ZHU3R5bGVkRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAg
IG1fcmVzb3VyY2UtPmludmFsaWRhdGUoKTsKK30KKwordm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoKTsKKworICAgIGlmICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9y
ZXNvdXJjZS0+aW52YWxpZGF0ZSgpOworfQorCiB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpidWls
ZFBhdHRlcm4oY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0KSBjb25zdAogewogICAgIFBhdHRl
cm5BdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBjb2xsZWN0UGF0dGVyblByb3BlcnRpZXMoKTsKQEAg
LTIzMywxNSArMjYyLDYgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6YnVpbGRQYXR0ZXJuKGNv
bgogICAgIG1fcmVzb3VyY2UtPnNldFRpbGUocGF0dGVybkltYWdlKTsKIH0KIAotdm9pZCBTVkdQ
YXR0ZXJuRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKLXsKLSAgICBpZiAo
IW1fcmVzb3VyY2UgfHwgIWF0dGFjaGVkKCkgfHwgZG9jdW1lbnQoKS0+cGFyc2luZygpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3Jlc291cmNlLT5pbnZhbGlkYXRlKCk7Ci0gICAgbV9yZXNv
dXJjZS0+cmVwYWludENsaWVudHMoKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBTVkdQYXR0ZXJuRWxl
bWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7
CiAgICAgUmVuZGVyU1ZHQ29udGFpbmVyKiBwYXR0ZXJuQ29udGFpbmVyID0gbmV3IChhcmVuYSkg
UmVuZGVyU1ZHQ29udGFpbmVyKHRoaXMpOwpAQCAtMzA4LDUgKzMyOCwzIEBAIFBhdHRlcm5BdHRy
aWJ1dGVzIFNWR1BhdHRlcm5FbGVtZW50Ojpjb2wKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
Ci0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNp
b24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR1BhdHRlcm5FbGVtZW50X2gKIAog
I2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdQYWludFNlcnZlclBhdHRlcm4uaCIKICNp
bmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHRml0
VG9WaWV3Qm94LmgiCkBAIC0zNCwxMiArMzMsMTEgQEAKICNpbmNsdWRlICJTVkdVUklSZWZlcmVu
Y2UuaCIKIAogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAg
ICAgc3RydWN0IFBhdHRlcm5BdHRyaWJ1dGVzOwogIAogICAgIGNsYXNzIFNWR0xlbmd0aDsKLSAg
ICBjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudDsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0Owog
CiAgICAgY2xhc3MgU1ZHUGF0dGVybkVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwK
QEAgLTQ3LDE3ICs0NSwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR0xhbmdTcGFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmlld0JveAotICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3ggewogICAgIHB1YmxpYzoKICAgICAg
ICAgU1ZHUGF0dGVybkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAg
ICAgICAgIHZpcnR1YWwgflNWR1BhdHRlcm5FbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7
IH0KIAotICAgICAgICAvLyAnU1ZHUGF0dGVybkVsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiAKICAgICAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVzb3VyY2UoKTsKQEAgLTkx
LDUgKzg4LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAj
ZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwCShyZXZpc2lv
biAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI2LDEw
ICsyNiwxMCBAQAogCiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQb2ludExpc3Q6OlNWR1BvaW50
TGlzdCgpCi0gICAgOiBTVkdQT0RMaXN0PEZsb2F0UG9pbnQ+KCkKK1NWR1BvaW50TGlzdDo6U1ZH
UG9pbnRMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgOiBTVkdQ
T0RMaXN0PEZsb2F0UG9pbnQ+KGF0dHJpYnV0ZU5hbWUpCiB7CiB9CiAKQEAgLTM3LDYgKzM3LDYg
QEAgU1ZHUG9pbnRMaXN0Ojp+U1ZHUG9pbnRMaXN0KCkKIHsKIH0KIAotI2VuZGlmIC8vIEVOQUJM
RShTVkcpCit9CiAKLS8vIHZpbTp0cz00Om5vZXQKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHUG9pbnRMaXN0LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTI0LDE4ICsyNCwxNCBAQAogI2RlZmluZSBTVkdQb2ludExpc3RfaAog
CiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR0xpc3QuaCIKICNpbmNsdWRlICJGbG9h
dFBvaW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHRWxlbWVudDsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR1BvaW50TGlzdCA6IHB1YmxpYyBT
VkdQT0RMaXN0PEZsb2F0UG9pbnQ+Ci0gICAgeworICAgIGNsYXNzIFNWR1BvaW50TGlzdCA6IHB1
YmxpYyBTVkdQT0RMaXN0PEZsb2F0UG9pbnQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNWR1Bv
aW50TGlzdCgpOworICAgICAgICBTVkdQb2ludExpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
ICAgICAgICB2aXJ0dWFsIH5TVkdQb2ludExpc3QoKTsKICAgICB9OwogCkBAIC00Myw1ICszOSwz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHJldmlzaW9uIDI5
OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CkBAIC00MCw4ICs0MCw4IEBAIFNWR1BvbHlFbGVtZW50OjpTVkdQb2x5RWxlbWVudChjb25zdCBR
dWEKICAgICAsIFNWR0xhbmdTcGFjZSgpCiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKCkKICAgICAsIFNWR0FuaW1hdGVkUG9pbnRzKCkKKyAgICAsIG1faWdub3JlQXR0cmlidXRl
Q2hhbmdlcyhmYWxzZSkKIHsKLSAgICBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMgPSBmYWxzZTsK
IH0KIAogU1ZHUG9seUVsZW1lbnQ6On5TVkdQb2x5RWxlbWVudCgpCkBAIC01MSw3ICs1MSw3IEBA
IFNWR1BvbHlFbGVtZW50Ojp+U1ZHUG9seUVsZW1lbnQoKQogU1ZHUG9pbnRMaXN0KiBTVkdQb2x5
RWxlbWVudDo6cG9pbnRzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fcG9pbnRzKQotICAgICAgICBt
X3BvaW50cyA9IG5ldyBTVkdQb2ludExpc3QoKTsKKyAgICAgICAgbV9wb2ludHMgPSBuZXcgU1ZH
UG9pbnRMaXN0KFNWR05hbWVzOjpwb2ludHNBdHRyKTsKIAogICAgIHJldHVybiBtX3BvaW50cy5n
ZXQoKTsKIH0KQEAgLTY4LDcgKzY4LDggQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dAogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIp
IHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIHBvaW50cygpLT5jbGVh
cihlYyk7Ci0gICAgICAgIGlmICghcG9pbnRzTGlzdEZyb21TVkdEYXRhKHBvaW50cygpLCB2YWx1
ZSkgJiYgIW1faWdub3JlQXR0cmlidXRlQ2hhbmdlcykgeworCisgICAgICAgIGlmICghcG9pbnRz
TGlzdEZyb21TVkdEYXRhKHBvaW50cygpLCB2YWx1ZSkpIHsKICAgICAgICAgICAgIHBvaW50cygp
LT5jbGVhcihlYyk7CiAgICAgICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25z
KCktPnJlcG9ydEVycm9yKCJQcm9ibGVtIHBhcnNpbmcgcG9pbnRzPVwiIiArIHZhbHVlICsgIlwi
Iik7CiAgICAgICAgIH0KQEAgLTgzLDQwICs4NCw0NSBAQCB2b2lkIFNWR1BvbHlFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgfQogfQogCi12b2lkIFNWR1BvbHlFbGVtZW50Ojpub3Rp
ZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdAordm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAobV9p
Z25vcmVBdHRyaWJ1dGVDaGFuZ2VzIHx8IGRvY3VtZW50KCktPnBhcnNpbmcoKSkKKyAgICBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CisKKyAgICBpZiAoIXJlbmRlcmVyKCkgfHwgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMgPSB0cnVlOwotICAg
IGlmIChyZW5kZXJlcigpKQorICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0
cikgeworICAgICAgICBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMgPSB0cnVlOwogICAgICAgICBy
ZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKIAotICAgIC8vIFNwZWM6IEFkZGl0aW9uYWxseSwgdGhlICdwb2ludHMnIGF0dHJp
YnV0ZSBvbiB0aGUgb3JpZ2luYWwgZWxlbWVudAotICAgIC8vIGFjY2Vzc2VkIHZpYSB0aGUgWE1M
IERPTSAoZS5nLiwgdXNpbmcgdGhlIGdldEF0dHJpYnV0ZSgpIG1ldGhvZCBjYWxsKQotICAgIC8v
IHdpbGwgcmVmbGVjdCBhbnkgY2hhbmdlcyBtYWRlIHRvIHBvaW50cy4KLSAgICBTdHJpbmcgX3Bv
aW50czsKLSAgICBpbnQgbGVuID0gcG9pbnRzKCktPm51bWJlck9mSXRlbXMoKTsKLSAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7Ci0gICAgICAgIEZsb2F0UG9pbnQgcCA9IHBvaW50
cygpLT5nZXRJdGVtKGksIGVjKTsKLSAgICAgICAgX3BvaW50cyArPSBTdHJpbmc6OmZvcm1hdCgi
JS42bGcgJS42bGcgIiwgcC54KCksIHAueSgpKTsKLSAgICB9Ci0gICAgCi0gICAgUmVmUHRyPEF0
dHI+IGF0dHIgPSBjb25zdF9jYXN0PFNWR1BvbHlFbGVtZW50Kj4odGhpcyktPmdldEF0dHJpYnV0
ZU5vZGUoU1ZHTmFtZXM6OnBvaW50c0F0dHIubG9jYWxOYW1lKCkpOwotICAgIGlmIChhdHRyKSB7
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBhdHRyLT5zZXRWYWx1ZShf
cG9pbnRzLCBlYyk7Ci0gICAgfQogCi0gICAgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzID0gZmFs
c2U7CisgICAgICAgIC8vIFNwZWM6IEFkZGl0aW9uYWxseSwgdGhlICdwb2ludHMnIGF0dHJpYnV0
ZSBvbiB0aGUgb3JpZ2luYWwgZWxlbWVudAorICAgICAgICAvLyBhY2Nlc3NlZCB2aWEgdGhlIFhN
TCBET00gKGUuZy4sIHVzaW5nIHRoZSBnZXRBdHRyaWJ1dGUoKSBtZXRob2QgY2FsbCkKKyAgICAg
ICAgLy8gd2lsbCByZWZsZWN0IGFueSBjaGFuZ2VzIG1hZGUgdG8gcG9pbnRzLgorICAgICAgICBT
dHJpbmcgX3BvaW50czsKKyAgICAgICAgaW50IGxlbiA9IHBvaW50cygpLT5udW1iZXJPZkl0ZW1z
KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgcCA9IHBvaW50cygpLT5nZXRJdGVtKGksIGVjKTsKKyAgICAgICAgICAgIF9w
b2ludHMgKz0gU3RyaW5nOjpmb3JtYXQoIiUuNmxnICUuNmxnICIsIHAueCgpLCBwLnkoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoUmVmUHRyPEF0dHI+IGF0dHIgPSBjb25zdF9jYXN0PFNW
R1BvbHlFbGVtZW50Kj4odGhpcyktPmdldEF0dHJpYnV0ZU5vZGUoU1ZHTmFtZXM6OnBvaW50c0F0
dHIubG9jYWxOYW1lKCkpKSB7CisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAgICAgICAgIGF0dHItPnNldFZhbHVlKF9wb2ludHMsIGVjKTsKKyAgICAgICAgfQorCisgICAg
ICAgIG1faWdub3JlQXR0cmlidXRlQ2hhbmdlcyA9IGZhbHNlOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0
ZUNoYW5nZSgpOworICAgIGlmIChTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkg
fHwKKyAgICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAor
ICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSB8fAorICAgICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0
KHRydWUpOwogfQogCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMzMgKzI0LDMwIEBA
CiAjZGVmaW5lIFNWR1BvbHlFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRl
ICJTVkdBbmltYXRlZFBvaW50cy5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAKLW5hbWVzcGFj
ZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdQb2x5RWxl
bWVudCA6ICBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR0FuaW1hdGVkUG9pbnRzCi0gICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdBbmltYXRlZFBvaW50cyB7CiAgICAgcHVibGljOgogICAg
ICAgICBTVkdQb2x5RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICAgICAgdmlydHVhbCB+U1ZHUG9seUVsZW1lbnQoKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQog
Ci0gICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ1NWR0FuaW1hdGVkUG9pbnRzJwogICAgICAgICB2
aXJ0dWFsIFNWR1BvaW50TGlzdCogcG9pbnRzKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgU1ZH
UG9pbnRMaXN0KiBhbmltYXRlZFBvaW50cygpIGNvbnN0OwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpOyAKLSAgICAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7IAorICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7
CiAKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0
eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtNTksNyArNTYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFs
IGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBib29sIG1faWdub3JlQXR0cmlidXRl
Q2hhbmdlczsKKyAgICAgICAgYm9vbCBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMgOiAxOwogICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdQb2ludExpc3Q+IG1fcG9pbnRzOwogCiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0ZPUldBUkRfREVDTEFSQVRJT05TKFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCkBAIC02OSw1ICs2NiwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdQb2x5Z29uRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZH
UG9seWdvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC01OSw1ICs1OSwzIEBAIFBhdGggU1ZH
UG9seWdvbkVsZW1lbnQ6OnRvUGF0aERhdGEoKSBjb24KIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuaAkocmV2
aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9q
ZWN0CkBAIC0yNCwxMyArMjQsMTEgQEAKICNkZWZpbmUgU1ZHUG9seWdvbkVsZW1lbnRfaAogCiAj
aWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR1BvbHlFbGVtZW50LmgiCiAKLW5hbWVzcGFj
ZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZHUG9seWdvbkVsZW1lbnQgOiBwdWJsaWMgU1ZHUG9s
eUVsZW1lbnQKLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTVkdQb2x5
Z29uRWxlbWVudCA6IHB1YmxpYyBTVkdQb2x5RWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAg
ICBTVkdQb2x5Z29uRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICAgICAgdmlydHVhbCB+U1ZHUG9seWdvbkVsZW1lbnQoKTsKQEAgLTQyLDUgKzQwLDMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmlt
OnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
OTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTU4LDUgKzU4LDMgQEAgUGF0aCBTVkdQb2x5bGluZUVsZW1lbnQ6OnRvUGF0aERhdGEoKSBj
bwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHUG9seWxpbmVFbGVtZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcv
U1ZHUG9seWxpbmVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDEzICsyNCwxMSBAQAogI2Rl
ZmluZSBTVkdQb2x5bGluZUVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUg
IlNWR1BvbHlFbGVtZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Ci0gICAgY2xhc3MgU1ZH
UG9seWxpbmVFbGVtZW50IDogIHB1YmxpYyBTVkdQb2x5RWxlbWVudAotICAgIHsKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNWR1BvbHlsaW5lRWxlbWVudCA6IHB1YmxpYyBTVkdQ
b2x5RWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdQb2x5bGluZUVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR1BvbHls
aW5lRWxlbWVudCgpOwpAQCAtNDIsNSArNDAsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJD
b3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAog
Ki8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAKQEAgLTIwNCw1ICsyMDUsNCBAQCBBZmZpbmVUcmFu
c2Zvcm0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6CiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0
aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdApAQCAtMjQsOSArMjQsMTAgQEAKICNkZWZpbmUgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b19oCiAKICNpZiBFTkFCTEUoU1ZHKQorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVk
ZSA8UGxhdGZvcm1TdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03Myw2ICs3
NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSGVscGVyCiAgICAgICAgIGJv
b2wgcGFyc2VQcmVzZXJ2ZUFzcGVjdFJhdGlvKGNvbnN0IFVDaGFyKiYgY3VyclBhcmFtLCBjb25z
dCBVQ2hhciogZW5kLCBib29sIHZhbGlkYXRlID0gdHJ1ZSk7CiAKKyAgICAgICAgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHI7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdW5zaWduZWQgc2hvcnQgbV9hbGlnbjsKICAgICAgICAgdW5zaWduZWQgc2hvcnQgbV9tZWV0
T3JTbGljZTsKQEAgLTgzLDQgKzg2LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb19oCiAKLS8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRmxv
YXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIlJhZGlh
bEdyYWRpZW50QXR0cmlidXRlcy5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1
ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFp
bnRTZXJ2ZXJSYWRpYWxHcmFkaWVudC5oIgpAQCAtNTYsMTEgKzU3LDExIEBAIFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudDo6flNWR1JhZGlhbEdyYWQKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwg
bGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUo
KSwgbV9jeSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50
RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgRngsIGZ4LCBTVkdOYW1lczo6ZnhB
dHRyLmxvY2FsTmFtZSgpLCBtX2Z4KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBGeSwgZnks
IFNWR05hbWVzOjpmeUF0dHIubG9jYWxOYW1lKCksIG1fZnkpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5hbWUoKSwgbV9yKQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05hbWVzOjpjeEF0dHIsIG1fY3gpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ciwgbV9jeSkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgRngsIGZ4LCBTVkdOYW1lczo6ZnhBdHRyLCBtX2Z4KQorQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBGeSwgZnksIFNWR05hbWVzOjpmeUF0dHIsIG1fZnkpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ciwgbV9yKQogCiB2
b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogewpAQCAtODAsNiArODEsMTggQEAgdm9pZCBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OnBhcnNlTWFwcAogICAgICAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCit2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sK
KyAgICBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwor
CisgICAgaWYgKCFtX3Jlc291cmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmN4QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyIHx8
CisgICAgICAgIGF0dHJOYW1lID09IFNWR05hbWVzOjpmeUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmZ5QXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ckF0dHIpCisg
ICAgICAgIG1fcmVzb3VyY2UtPmludmFsaWRhdGUoKTsKK30KIAogdm9pZCBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQoKSBjb25zdAogewpAQCAtMTcxLDUgKzE4NCwzIEBA
IFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyBTVkdSYWRpYWxHcmFkaWUKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAg
ICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwyMiArMjQsMjAgQEAKICNk
ZWZpbmUgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNp
bmNsdWRlICJTVkdHcmFkaWVudEVsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIHN0cnVjdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM7
CiAgICAgY2xhc3MgU1ZHTGVuZ3RoOwogCi0gICAgY2xhc3MgU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50IDogcHVibGljIFNWR0dyYWRpZW50RWxlbWVudAotICAgIHsKKyAgICBjbGFzcyBTVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHR3JhZGllbnRFbGVtZW50IHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
KCk7CiAKLSAgICAgICAgLy8gJ1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudCcgZnVuY3Rpb25zCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRH
cmFkaWVudCgpIGNvbnN0OwpAQCAtNjIsNSArNjAsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBr
ZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdSZWN0RWxl
bWVudC5oIgogCkBAIC00OCwxMiArNDksMTIgQEAgU1ZHUmVjdEVsZW1lbnQ6On5TVkdSZWN0RWxl
bWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9j
YWxOYW1lKCksIG1feCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9j
YWxOYW1lKCksIG1feSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3
aWR0aEF0dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBo
ZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIubG9jYWxOYW1lKCksIG1fcngpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBTVkdOYW1lczo6cnlBdHRyLmxvY2FsTmFtZSgpLCBtX3J5
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ciwgbV94KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ciwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRo
LCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBI
ZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIG1faGVpZ2h0KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ciwgbV9yeCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBS
eSwgcnksIFNWR05hbWVzOjpyeUF0dHIsIG1fcnkpCiAKIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKQEAgLTg4LDEyICs4
OSwyMCBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgfQog
fQogCi12b2lkIFNWR1JlY3RFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdAor
dm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCktPnBhcnNpbmcoKSAmJiByZW5k
ZXJlcigpKQorICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIgfHwKKyAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0ciB8fAorICAgICAgICBTVkdUZXN0
czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHTGFuZ1NwYWNlOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCiAgICAg
ICAgIHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwotICAgIAotICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKIH0KIAogUGF0
aCBTVkdSZWN0RWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CkBAIC0xMjAsNSArMTI5LDMgQEAg
Ym9vbCBTVkdSZWN0RWxlbWVudDo6aGFzUmVsYXRpdmVWYWx1ZXMoKQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShy
ZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTI0LDI4ICsyNCwyNSBAQAogI2RlZmluZSBTVkdSZWN0RWxlbWVudF9oCiAKICNpZiBFTkFC
TEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2lu
Y2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR1JlY3RFbGVtZW50IDogcHVibGlj
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R0xhbmdTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkCi0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewogICAgIHB1YmxpYzoKICAgICAgICAg
U1ZHUmVjdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAg
IHZpcnR1YWwgflNWR1JlY3RFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAg
ICAgICAvLyAnU1ZHUmVjdEVsZW1lbnQnIGZ1bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAog
ICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgpIGNvbnN0OwogCkBAIC02OCw1ICs2NSwz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0
NikKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
OCwxMCArODgsMTAgQEAgU1ZHU1ZHRWxlbWVudDo6flNWR1NWR0VsZW1lbnQoKQogICAgIGRvY3Vt
ZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVtb3ZlVGltZUNvbnRhaW5lcih0aGlzKTsK
IH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBt
X3gpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1f
eSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2Nh
bE5hbWUoKSwgbV93aWR0aCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0Vs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1l
czo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4
LCBTVkdOYW1lczo6eEF0dHIsIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5
QXR0ciwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpo
ZWlnaHRBdHRyLCBtX2hlaWdodCkKIAogY29uc3QgQXRvbWljU3RyaW5nJiBTVkdTVkdFbGVtZW50
Ojpjb250ZW50U2NyaXB0VHlwZSgpIGNvbnN0CiB7CkBAIC0yNjUsMTAgKzI2NSw4IEBAIHZvaWQg
U1ZHU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoU1ZHRml0VG9W
aWV3Qm94OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSAmJiByZW5kZXJlcigpKSB7Ci0gICAg
ICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgaWYgKFNW
R0ZpdFRvVmlld0JveDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KICAgICAgICAgaWYgKFNWR1pvb21BbmRQYW46OnBhcnNlTWFwcGVk
QXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0yNzYsNiArMjc0LDI0
IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUKICAgICB9CiB9CiAK
K3ZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eUF0dHIgfHwKKyAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0ciB8fAorICAgICAgICBTVkdUZXN0czo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdGaXRUb1Zp
ZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR1pvb21BbmRQ
YW46OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICByZW5kZXJl
cigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKK30KKwogdW5zaWduZWQgbG9uZyBTVkdTVkdFbGVt
ZW50OjpzdXNwZW5kUmVkcmF3KHVuc2lnbmVkIGxvbmcgLyogbWF4X3dhaXRfbWlsbGlzZWNvbmRz
ICovKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUgKHNlZSBidWcgMTEyNzUpCkBAIC00
NzYsMTggKzQ5Miw2IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6aXNPdXRlcm1vc3RTVkcoKSBjb24K
ICAgICByZXR1cm4gIXBhcmVudE5vZGUoKS0+aXNTVkdFbGVtZW50KCk7CiB9CiAKLXZvaWQgU1ZH
U1ZHRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2Vy
dmVEZWNscykKLXsKLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp4QXR0ciB8fAot
ICAgICAgICBhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyIHx8Ci0gICAgICAgIGF0dHIt
Pm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8Ci0gICAgICAgIGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAg
ICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKLQotICAgIFNWR1N0eWxlZEVs
ZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7Ci19Ci0KIEFmZmlu
ZVRyYW5zZm9ybSBTVkdTVkdFbGVtZW50Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZp
ZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29uc3QKIHsKICAgICBGbG9hdFJlY3Qgdmlld0Jv
eFJlY3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVu
dCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2Vy
dmVEZWNscyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNm
b3JtIHZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVp
Z2h0KSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHR3JhZGllbnRTdG9wLmgiCisjaW5jbHVkZSAiU1ZHR3JhZGllbnRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDEsNyArNDIsNyBA
QCBTVkdTdG9wRWxlbWVudDo6flNWR1N0b3BFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHU3RvcEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwg
T2Zmc2V0LCBvZmZzZXQsIFNWR05hbWVzOjpvZmZzZXRBdHRyLmxvY2FsTmFtZSgpLCBtX29mZnNl
dCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1N0b3BFbGVtZW50LCBmbG9hdCwg
TnVtYmVyLCBudW1iZXIsIE9mZnNldCwgb2Zmc2V0LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgbV9v
ZmZzZXQpCiAKIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSogYXR0cikKIHsKQEAgLTUxLDI2ICs1MiwxNyBAQCB2b2lkIFNWR1N0b3BFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgICAgICAgICBzZXRPZmZzZXRCYXNlVmFsdWUo
dmFsdWUubGVmdCh2YWx1ZS5sZW5ndGgoKSAtIDEpLnRvRmxvYXQoKSAvIDEwMC4wZik7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHNldE9mZnNldEJhc2VWYWx1ZSh2YWx1ZS50b0Zsb2F0KCkp
OworCisgICAgICAgIHNldENoYW5nZWQoKTsKICAgICB9IGVsc2UKICAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVJlbmRlck9iamVjdCog
U1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqIHN0eWxlKQorUmVuZGVyT2JqZWN0KiBTVkdTdG9wRWxlbWVudDo6Y3JlYXRlUmVuZGVy
ZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAo
YXJlbmEpIFJlbmRlclNWR0dyYWRpZW50U3RvcCh0aGlzKTsKIH0KIAotdm9pZCBTVkdTdG9wRWxl
bWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKLXsKLSAgICBpZiAoIWF0dGFjaGVk
KCkgfHwgZG9jdW1lbnQoKS0+cGFyc2luZygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25z
dF9jYXN0PFNWR1N0b3BFbGVtZW50Kj4odGhpcyktPnJlY2FsY1N0eWxlKEZvcmNlKTsKLSAgICBT
VkdTdHlsZWRFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKLX0KLQogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHU3RvcEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVu
dC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RF
IHByb2plY3QKQEAgLTI0LDI0ICsyNCwyMSBAQAogI2RlZmluZSBTVkdTdG9wRWxlbWVudF9oCiAK
ICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCi1uYW1l
c3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR1N0b3BFbGVtZW50IDogcHVibGljIFNWR1N0
eWxlZEVsZW1lbnQKLSAgICB7CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTVkdT
dG9wRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIFNWR1N0b3BFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdTdG9wRWxlbWVudCgpOwotICAgICAgICAKKwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNHcmFkaWVudFN0b3AoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3Q7CiAKICAg
ICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwg
UmVuZGVyU3R5bGUqKTsKLSAgICAgICAgCisKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHU3RvcEVsZW1lbnQsIGZsb2F0LCBmbG9hdCwgT2Zm
c2V0LCBvZmZzZXQpCiAgICAgfTsKQEAgLTUwLDUgKzQ3LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHU3RyaW5nTGlzdC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZH
U3RyaW5nTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHU3RyaW5nTGlzdC5oIgogCkBAIC0yOCw4
ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHU3RyaW5nTGlzdDo6U1ZHU3Ry
aW5nTGlzdCgpCi0gICAgOiBTVkdMaXN0PFN0cmluZz4oKQorU1ZHU3RyaW5nTGlzdDo6U1ZHU3Ry
aW5nTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIDogU1ZHTGlz
dDxTdHJpbmc+KGF0dHJpYnV0ZU5hbWUpCiB7CiB9CiAKQEAgLTY4LDUgKzY5LDMgQEAgdm9pZCBT
VkdTdHJpbmdMaXN0OjpwYXJzZShjb25zdCBTdHJpbmcmIAogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAkocmV2aXNpb24g
Mjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFpp
bW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAg
ICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDIxICsyNCwxNyBAQAog
I2RlZmluZSBTVkdTdHJpbmdMaXN0X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNWR0xpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0gICAgY2xhc3MgU1ZHU3RyaW5nTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFN0cmluZz4K
LSAgICB7CisgICAgY2xhc3MgU1ZHU3RyaW5nTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFN0cmluZz4g
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU1ZHU3RyaW5nTGlzdCgpOworICAgICAgICBTVkdTdHJp
bmdMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCB+U1ZHU3RyaW5n
TGlzdCgpOwotICAgICAgICAKLSAgICAgICAgLy8gSW50ZXJuYWwKLSAgICAgICAgdm9pZCByZXNl
dChjb25zdCBTdHJpbmcmIHN0cik7CiAKKyAgICAgICAgdm9pZCByZXNldChjb25zdCBTdHJpbmcm
IHN0cik7CiAgICAgICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiBkYXRhLCBVQ2hhciBkZWxp
bWl0ZXIgPSAnLCcpOwogICAgIH07CiAKQEAgLTQ2LDUgKzQyLDMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdTdHJpbmdMaXN0X2gK
LQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxhYmxlLmNwcAkocmV2aXNpb24gMjk5NDYp
CisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1h
bm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAg
ICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKKwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHU3R5bGFi
bGUuaCIKIApAQCAtMzYsNiArMzcsNCBAQCBTVkdTdHlsYWJsZTo6flNWR1N0eWxhYmxlKCkKIAog
fQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHU3R5bGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHls
YWJsZS5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxhYmxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTIyLDggKzIyLDggQEAKIAogI2lmbmRlZiBTVkdTdHlsYWJsZV9oCiAjZGVmaW5lIFNWR1N0
eWxhYmxlX2gKLSNpZiBFTkFCTEUoU1ZHKQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMSwyMCArMzEsMTgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENTU1ZhbHVlOwogICAgIGNsYXNzIENT
U1N0eWxlRGVjbGFyYXRpb247CiAgICAgY2xhc3MgU3RyaW5nOworICAgIGNsYXNzIFF1YWxpZmll
ZE5hbWU7CiAKICAgICBjbGFzcyBTVkdTdHlsYWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBT
VkdTdHlsYWJsZSgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdTdHlsYWJsZSgpOwogCi0gICAgICAg
IC8vICdTVkdTdHlsYWJsZScgZnVuY3Rpb25zCiAgICAgICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gZ2V0UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOworICAg
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdTdHlsYWJsZV9oCi0KLS8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0
NikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNyBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CkBAIC01NCw3ICs1NCw3IEBAIFNWR1N0eWxlZEVsZW1lbnQ6On5TVkdTdHlsZWRFbGVt
ZW50KCkKICAgICBTVkdSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KHRoaXMpOwogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTdHlsZWRFbGVtZW50LCBTdHJpbmcsIFN0cmluZywg
c3RyaW5nLCBDbGFzc05hbWUsIGNsYXNzTmFtZSwgSFRNTE5hbWVzOjpjbGFzc0F0dHIubG9jYWxO
YW1lKCksIG1fY2xhc3NOYW1lKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU3R5
bGVkRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgQ2xhc3NOYW1lLCBjbGFzc05hbWUs
IEhUTUxOYW1lczo6Y2xhc3NBdHRyLCBtX2NsYXNzTmFtZSkKIAogYm9vbCBTVkdTdHlsZWRFbGVt
ZW50OjpyZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKQEAgLTE3OCwyMCAr
MTc4LDUzIEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICBT
VkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBTVkdTdHls
ZWRFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdAorYm9vbCBTVkdTdHlsZWRF
bGVtZW50Ojppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
eworICAgIC8vIFJlY29nbml6ZSBhbGwgc3R5bGUgcmVsYXRlZCBTVkcgQ1NTIHByb3BlcnRpZXMK
KyAgICBpbnQgcHJvcElkID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0
dHJpYnV0ZU5hbWUoYXR0ck5hbWUpOworICAgIGlmIChwcm9wSWQgPiAwKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIHJldHVybiAoYXR0ck5hbWUgPT0gSFRNTE5hbWVzOjppZEF0dHIgfHwg
YXR0ck5hbWUgPT0gSFRNTE5hbWVzOjpzdHlsZUF0dHIpOyAKK30KKwordm9pZCBTVkdTdHlsZWRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQoreworICAgIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworCisg
ICAgLy8gSWYgd2UncmUgdGhlIGNoaWxkIG9mIGEgcmVzb3VyY2UgZWxlbWVudCwgYmUgc3VyZSB0
byBpbnZhbGlkYXRlIGl0LgorICAgIG5vdGlmeVJlc291cmNlUGFyZW50SWZFeGlzdGFudCgpOwor
CiAgICAgU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNpb25zID0gZG9jdW1lbnQoKS0+YWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpOwogICAgIGlmICghZXh0ZW5zaW9ucykKICAgICAgICAgcmV0dXJu
OwogCisgICAgLy8gVE9ETzogRml4IGJ1ZyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTQzMCAoU1ZHRWxlbWVudEluc3RhbmNlcyBzaG91bGQgcmVidWlsZCB0aGVtc2Vs
dmVzIGxhemlseSkKKyAgICAvLyBUaGlzIG1ldGhvZCBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBvbGQg
bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uY2VwdCAtIHJlbW92ZSB0aGlzIHNvb24gJiBmaXgg
dGhlIGJ1ZyEKKwogICAgIC8vIEluIGNhc2Ugd2UncmUgcmVmZXJlbmNlZCBieSBhIDx1c2U+IGVs
ZW1lbnQsIHdlIGhhdmUgZWxlbWVudCBpbnN0YW5jZXMgcmVnaXN0ZXJlZAogICAgIC8vIHRvIHVz
IGluIHRoZSBTVkdEb2N1bWVudEV4dGVuc2lvbnMuIElmIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgp
IGlzIGNhbGxlZCwgd2UgbmVlZAogICAgIC8vIHRvIHJlY3Vyc2l2ZWx5IHVwZGF0ZSBhbGwgY2hp
bGRyZW4gaW5jbHVkaW5nIG91cnNlbHZlcy4KICAgICB1cGRhdGVFbGVtZW50SW5zdGFuY2UoZXh0
ZW5zaW9ucyk7Cit9CiAKLSAgICAvLyBJZiB3ZSdyZSBhIGNoaWxkIG9mIGFuIGVsZW1lbnQgY3Jl
YXRpbmcgYSAicmVzb3VyY2UiIChpZS4gPHBhdHRlcm4+IGNoaWxkKQotICAgIC8vIHRoZW4gd2Ug
aGF2ZSB0byBub3RpZnkgb3VyIHBhcmVudCByZXNvdXJjZSB0aGF0IHdlIGNoYW5nZWQuCi0gICAg
bm90aWZ5UmVzb3VyY2VQYXJlbnRJZkV4aXN0YW50KCk7Cit2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6
Om5vdGlmeVJlc291cmNlUGFyZW50SWZFeGlzdGFudCgpIGNvbnN0Cit7CisgICAgTm9kZSogbm9k
ZSA9IHBhcmVudE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAoIW5vZGUt
PmlzU1ZHRWxlbWVudCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgU1ZHRWxlbWVu
dCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihub2RlKTsKKyAgICAgICAgaWYg
KFNWR1N0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZWRF
bGVtZW50Kj4oZWxlbWVudC0+aXNTdHlsZWQoKSA/IGVsZW1lbnQgOiAwKSkgeworICAgICAgICAg
ICAgaWYgKFNWR1Jlc291cmNlKiByZXNvdXJjZSA9IHN0eWxlZEVsZW1lbnQtPmNhbnZhc1Jlc291
cmNlKCkpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmludmFsaWRhdGUoKTsKKworICAgICAg
ICAgICAgc3R5bGVkRWxlbWVudC0+bm90aWZ5UmVzb3VyY2VQYXJlbnRJZkV4aXN0YW50KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOworICAgIH0KIH0K
IAogdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKQpAQCAtMjA0LDI2ICsy
MzcsMTUgQEAgdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKQogICAgIGlm
ICghZXh0ZW5zaW9ucykKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gVE9ETzogRml4IGJ1ZyBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQzMCAoU1ZHRWxlbWVudElu
c3RhbmNlcyBzaG91bGQgcmVidWlsZCB0aGVtc2VsdmVzIGxhemlseSkKKyAgICAvLyBUaGlzIG1l
dGhvZCBoYXMgYmVlbiB1c2VkIGJ5IHRoZSBvbGQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29u
Y2VwdCAtIHJlbW92ZSB0aGlzIHNvb24gJiBmaXggdGhlIGJ1ZyEKKwogICAgIC8vIEluIGNhc2Ug
d2UncmUgcmVmZXJlbmNlZCBieSBhIDx1c2U+IGVsZW1lbnQsIHdlIGhhdmUgZWxlbWVudCBpbnN0
YW5jZXMgcmVnaXN0ZXJlZAogICAgIC8vIHRvIHVzIGluIHRoZSBTVkdEb2N1bWVudEV4dGVuc2lv
bnMuIElmIGNoaWxkcmVuQ2hhbmdlZCgpIGlzIGNhbGxlZCwgd2UgbmVlZAogICAgIC8vIHRvIHJl
Y3Vyc2l2ZWx5IHVwZGF0ZSBhbGwgY2hpbGRyZW4gaW5jbHVkaW5nIG91cnNlbHZlcy4KICAgICB1
cGRhdGVFbGVtZW50SW5zdGFuY2UoZXh0ZW5zaW9ucyk7CiB9CiAKLXZvaWQgU1ZHU3R5bGVkRWxl
bWVudDo6bm90aWZ5UmVzb3VyY2VQYXJlbnRJZkV4aXN0YW50KCkgY29uc3QKLXsKLSAgICBOb2Rl
KiBub2RlID0gcGFyZW50Tm9kZSgpOwotICAgIHdoaWxlIChub2RlKSB7Ci0gICAgICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpsaW5lYXJHcmFkaWVudFRhZykgfHwgbm9kZS0+aGFz
VGFnTmFtZShTVkdOYW1lczo6cmFkaWFsR3JhZGllbnRUYWcpIHx8Ci0gICAgICAgICAgICBub2Rl
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpwYXR0ZXJuVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFNW
R05hbWVzOjpjbGlwUGF0aFRhZykgfHwKLSAgICAgICAgICAgIG5vZGUtPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6Om1hcmtlclRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6bWFza1RhZykp
IHsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihub2RlKS0+bm90aWZ5QXR0
cmlidXRlQ2hhbmdlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50
Tm9kZSgpOwotICAgIH0KLX0KLQogdm9pZCBTVkdTdHlsZWRFbGVtZW50Ojp1cGRhdGVFbGVtZW50
SW5zdGFuY2UoU1ZHRG9jdW1lbnRFeHRlbnNpb25zKiBleHRlbnNpb25zKSBjb25zdAogewogICAg
IFNWR1N0eWxlZEVsZW1lbnQqIG5vbkNvbnN0VGhpcyA9IGNvbnN0X2Nhc3Q8U1ZHU3R5bGVkRWxl
bWVudCo+KHRoaXMpOwpAQCAtMjUwLDE2ICsyNzIsNiBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6
OnVwZGF0ZUVsZW1lbnRJbnN0CiAgICAgICAgICgqaXQyKS0+dXBkYXRlSW5zdGFuY2Uobm9uQ29u
c3RUaGlzKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0
dHJpYnV0ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURlY2xzKQotewotICAgIC8vIEZJWE1FOiBFdmVu
dHVhbGx5IHN1YmNsYXNzZXMgZnJvbSBTVkdFbGVtZW50IHNob3VsZCBpbXBsZW1lbnQKLSAgICAv
LyBhdHRyaWJ1dGVDaGFuZ2VkKCkgaW5zdGVhZCBvZiBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKQot
ICAgIC8vIFRoaXMgaXMgYSBxdWljayBmaXggdG8gYWxsb3cgZHluYW1pYyB1cGRhdGVzIG9mIFNW
RyBlbGVtZW50cwotICAgIC8vIGJ1dCB3aWxsIHJlc3VsdCBpbiBzbG93ZXIgZHluYW1pYy11cGRh
dGUgcGVyZm9ybWFuY2UgdGhhbiBuZWNlc3NhcnkuCi0gICAgU1ZHRWxlbWVudDo6YXR0cmlidXRl
Q2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURlY2xzKTsKLSAgICBub3RpZnlBdHRyaWJ1dGVDaGFuZ2Uo
KTsKLX0KLQogUmVuZGVyU3R5bGUqIFNWR1N0eWxlZEVsZW1lbnQ6OnJlc29sdmVTdHlsZShSZW5k
ZXJTdHlsZSogcGFyZW50U3R5bGUpCiB7CiAgICAgaWYgKHJlbmRlcmVyKCkpIHsKQEAgLTI4OCw1
ICszMDAsMyBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmRldGFjaCgpCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVu
dC5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdTdHls
ZWRFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zv
cm0uaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgpAQCAtMzQs
OSArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBSZW5kZXJQYXRo
OwotCi0gICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudCA6IHB1YmxpYyBTVkdFbGVtZW50LCBwdWJs
aWMgU1ZHU3R5bGFibGUgeworICAgIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQgOiBwdWJsaWMgU1ZH
RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1N0eWxhYmxl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR1N0eWxlZEVsZW1lbnQoKTsK
QEAgLTQ0LDI1ICs0MiwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1N0eWxlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAg
Ly8gJ1NWR1N0eWxhYmxlJyBmdW5jdGlvbnMKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYW1lKTsKICAg
ICAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgpIHsgcmV0dXJuIFN0eWxl
ZEVsZW1lbnQ6OnN0eWxlKCk7IH0KIAorICAgICAgICBib29sIGlzS25vd25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpOworCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVl
ZGVkKFJlbmRlclN0eWxlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jl
c291cmNlKCkgeyByZXR1cm4gMDsgfQogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIG1h
cFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29u
c3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkg
Y29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKTsKLSAgICAgICAg
dm9pZCBub3RpZnlSZXNvdXJjZVBhcmVudElmRXhpc3RhbnQoKSBjb25zdDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJl
c2VydmVEZWNscyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZCgpOwogCiAgICAgICAgIC8vIENlbnRyYWxpemVkIHBsYWNlIHRvIGZvcmNlIGEgbWFudWFsIHN0
eWxlIHJlc29sdXRpb24uIEhhY2t5IGJ1dCBuZWVkZWQgZm9yIG5vdy4KICAgICAgICAgUmVuZGVy
U3R5bGUqIHJlc29sdmVTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwotICAgICAgICAK
KworICAgICAgICB2b2lkIG5vdGlmeVJlc291cmNlUGFyZW50SWZFeGlzdGFudCgpIGNvbnN0OyAg
ICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICAgICAgCiAgICAgcHJv
dGVjdGVkOgpAQCAtODAsNSArNzgsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFNWR1N0eWxlZEVsZW1lbnQKLQotLy8gdmltOnRzPTQ6
bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcp
Ci0KICNpbmNsdWRlICJTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgiCiAKICNpbmNsdWRlICJS
ZW5kZXJQYXRoLmgiCkBAIC03MCw2ICs2OSw0IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW4KIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKLQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAkocmV2
aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAg
LTIyLDggKzIyLDggQEAKIAogI2lmbmRlZiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50X2gKICNk
ZWZpbmUgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lm
IEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5
bGVkRWxlbWVudC5oIgogCkBAIC0zMSwxNCArMzEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKIAotICAgIGNsYXNzIFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwgdmlydHVhbCBwdWJsaWMgU1ZHTG9jYXRh
YmxlIHsKKyAgICBjbGFzcyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50IDogcHVibGljIFNWR1N0
eWxlZEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpcnR1
YWwgcHVibGljIFNWR0xvY2F0YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdTdHlsZWRM
b2NhdGFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRMb2NhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICAgICAgLy8gJ1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQnIGZ1bmN0aW9ucwogICAg
ICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgpIGNv
bnN0OwogCkBAIC01MSw1ICs1MSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudF9oCi0KLS8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1h
YmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHIuaCIKQEAgLTM5LDcgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OlNWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRvYykKICAg
ICAsIFNWR1RyYW5zZm9ybWFibGUoKQotICAgICwgbV90cmFuc2Zvcm0obmV3IFNWR1RyYW5zZm9y
bUxpc3QoKSkKKyAgICAsIG1fdHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0KFNWR05hbWVz
Ojp0cmFuc2Zvcm1BdHRyKSkKIHsKIH0KIApAQCAtNDcsNyArNDYsNyBAQCBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxlCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0
KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0sIFNW
R05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5zZm9ybS5nZXQoKSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNm
b3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBtX3RyYW5zZm9ybS5nZXQo
KSkKIAogQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpnZXRD
VE0oKSBjb25zdAogewpAQCAtNzQsMTUgKzczLDE4IEBAIHZvaWQgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OnBhcnMKICAKICAgICAgICAgaWYgKCFTVkdUcmFuc2Zvcm1hYmxlOjpwYXJz
ZVRyYW5zZm9ybUF0dHJpYnV0ZShsb2NhbFRyYW5zZm9ybXMsIGF0dHItPnZhbHVlKCkpKQogICAg
ICAgICAgICAgbG9jYWxUcmFuc2Zvcm1zLT5jbGVhcihlYyk7Ci0gICAgICAgIGVsc2UgeworICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBzZXRUcmFuc2Zvcm1CYXNlVmFsdWUobG9jYWxUcmFuc2Zv
cm1zKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJlbmRl
cmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOyAvLyBzaG91bGQgcmVhbGx5IGJlIGluIHNldFRy
YW5zZm9ybQotICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCitib29sIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQoreworICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKTsKK30KKwogU1ZHRWxlbWVudCogU1ZHU3R5bGVk
VHJhbnNmb3JtYWJsZUVsZW1lbnQ6Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KHRoaXMp
OwpAQCAtOTgsMTMgKzEwMCw2IEBAIEZsb2F0UmVjdCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudDoKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0QkJveCh0aGlzKTsKIH0KIAot
dm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdl
KCkgY29uc3QKLXsKLSAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6bm90aWZ5
QXR0cmlidXRlQ2hhbmdlKCk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5
bGUqIHN0eWxlKQogewogICAgIC8vIEJ5IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBlY3Rl
ZCB0byBkbyBwYXRoLWJhc2VkIGRyYXdpbmcKQEAgLTExNCw1ICsxMDksMyBAQCBSZW5kZXJPYmpl
Y3QqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsMjcgKzIyLDI0IEBACiAKICNpZm5k
ZWYgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRfaAogI2RlZmluZSBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAj
aW5jbHVkZSAiU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1RyYW5z
Zm9ybWFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQWZmaW5lVHJh
bnNmb3JtOwotICAgIGNsYXNzIEF0dHJpYnV0ZTsKLSAgICBjbGFzcyBOb2RlOwotICAgIGNsYXNz
IFN0cmluZ0ltcGw7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKIAotICAgIGNsYXNzIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQsIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlIHsKKyAgICBjbGFzcyBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1RyYW5zZm9y
bWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ1NWR0xvY2F0YWJsZScKICAgICAgICAgdmlydHVhbCBB
ZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJh
bnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQq
IG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKQEAgLTUzLDE0ICs1MCwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBjb25z
dDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7CisgICAgICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAKICAgICAgICAgLy8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFsbCB0aGUgZWxl
bWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1BhdGhE
YXRhKCkgY29uc3QgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b0Ns
aXBQYXRoKCkgY29uc3QgeyByZXR1cm4gdG9QYXRoRGF0YSgpOyB9CiAgICAgICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0Owot
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBSZWZQdHI8
U1ZHVHJhbnNmb3JtTGlzdD4sIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQogICAgIH07CkBAIC02OSw1
ICs2NSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAj
ZW5kaWYgLy8gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRfaAotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHVGVzdHMuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1Rl
c3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgor
CiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCkBAIC00Myw3ICs0NCw3
IEBAIFNWR1Rlc3RzOjp+U1ZHVGVzdHMoKQogU1ZHU3RyaW5nTGlzdCogU1ZHVGVzdHM6OnJlcXVp
cmVkRmVhdHVyZXMoKSBjb25zdAogewogICAgIGlmICghbV9mZWF0dXJlcykKLSAgICAgICAgbV9m
ZWF0dXJlcyA9IG5ldyBTVkdTdHJpbmdMaXN0KCk7CisgICAgICAgIG1fZmVhdHVyZXMgPSBuZXcg
U1ZHU3RyaW5nTGlzdChTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIpOwogCiAgICAgcmV0
dXJuIG1fZmVhdHVyZXMuZ2V0KCk7CiB9CkBAIC01MSw3ICs1Miw3IEBAIFNWR1N0cmluZ0xpc3Qq
IFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmUKIFNWR1N0cmluZ0xpc3QqIFNWR1Rlc3RzOjpyZXF1
aXJlZEV4dGVuc2lvbnMoKSBjb25zdAogewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAg
ICBtX2V4dGVuc2lvbnMgPSBuZXcgU1ZHU3RyaW5nTGlzdCgpOworICAgICAgICBtX2V4dGVuc2lv
bnMgPSBuZXcgU1ZHU3RyaW5nTGlzdChTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0cik7
CiAKICAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgpOwogfQpAQCAtNTksNyArNjAsNyBAQCBT
VkdTdHJpbmdMaXN0KiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpCiBTVkdTdHJpbmdMaXN0KiBT
VkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKSBjb25zdAogewogICAgIGlmICghbV9zeXN0ZW1MYW5n
dWFnZSkKLSAgICAgICAgbV9zeXN0ZW1MYW5ndWFnZSA9IG5ldyBTVkdTdHJpbmdMaXN0KCk7Cisg
ICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UgPSBuZXcgU1ZHU3RyaW5nTGlzdChTVkdOYW1lczo6c3lz
dGVtTGFuZ3VhZ2VBdHRyKTsKIAogICAgIHJldHVybiBtX3N5c3RlbUxhbmd1YWdlLmdldCgpOwog
fQpAQCAtMTA5LDcgKzExMCwxMyBAQCBib29sIFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFNWR1Rlc3RzOjppc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIHJldHVybiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyIHx8CisgICAgICAgICAgICBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ciB8fAorICAgICAgICAg
ICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0cik7Cit9CisKIH0KIAot
Ly8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdUZXN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgJKHJldmlz
aW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmlt
bWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsOCArMjIsOCBAQAogCiAj
aWZuZGVmIFNWR1Rlc3RzX2gKICNkZWZpbmUgU1ZHVGVzdHNfaAotI2lmIEVOQUJMRShTVkcpCiAK
KyNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzEsMTMgKzMxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBNYXBwZWRBdHRyaWJ1dGU7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFNWR1N0cmlu
Z0xpc3Q7CisgICAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogICAgIGNsYXNzIFNWR1Rlc3RzIHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1Rlc3RzKCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1Rl
c3RzKCk7CiAKLSAgICAgICAgLy8gJ1NWR1Rlc3RzJyBmdW5jdGlvbnMKICAgICAgICAgU1ZHU3Ry
aW5nTGlzdCogcmVxdWlyZWRGZWF0dXJlcygpIGNvbnN0OwogICAgICAgICBTVkdTdHJpbmdMaXN0
KiByZXF1aXJlZEV4dGVuc2lvbnMoKSBjb25zdDsKICAgICAgICAgU1ZHU3RyaW5nTGlzdCogc3lz
dGVtTGFuZ3VhZ2UoKSBjb25zdDsKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxTVkdTdHJpbmdMaXN0PiBtX2ZlYXR1cmVzOwpAQCAtNTgsNSAr
NTksMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2Vu
ZGlmIC8vIFNWR1Rlc3RzX2gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDggKzU3LDggQEAg
U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp+U1ZHVGV4dENvbnRlbnRFbAogewogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgsIFNWR05hbWVzOjp0ZXh0TGVu
Z3RoQXR0ci5sb2NhbE5hbWUoKSwgbV90ZXh0TGVuZ3RoKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJh
dGlvbiwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR05hbWVzOjpsZW5ndGhBZGp1c3RB
dHRyLmxvY2FsTmFtZSgpLCBtX2xlbmd0aEFkanVzdCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
VGV4dExlbmd0aCwgdGV4dExlbmd0aCwgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBtX3RleHRM
ZW5ndGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1l
bnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBMZW5ndGhBZGp1c3QsIGxlbmd0aEFk
anVzdCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIG1fbGVuZ3RoQWRqdXN0KQogCiBzdGF0
aWMgaW5saW5lIGZsb2F0IGN1bW11bGF0ZWRDaGFyYWN0ZXJSYW5nZUxlbmd0aChjb25zdCBWZWN0
b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBzdGFydCwgY29uc3QgVmVjdG9yPFNWR0NoYXI+OjppdGVy
YXRvciYgZW5kLCBTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0LCBsb25nIHN0
YXJ0UG9zaXRpb24sIGxvbmcgbGVuZ3RoLCBib29sIGlzVmVydGljYWxUZXh0LCBsb25nJiBhdENo
YXJhY3RlcikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysg
V2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0zOCw3ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR1RleHRFbGVtZW50OjpTVkdUZXh0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBTVkdUcmFuc2Zvcm1hYmxl
KCkKLSAgICAsIG1fdHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0KCkpCisgICAgLCBtX3Ry
YW5zZm9ybShuZXcgU1ZHVHJhbnNmb3JtTGlzdChTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikpCiB7
CiB9CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgU1ZHVGV4dEVsZW1lbnQ6On5TVkdUZXh0RWxlbWVudCgp
CiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRFbGVtZW50LCBT
VkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3Jt
LCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5z
Zm9ybS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRFbGVtZW50
LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNm
b3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBtX3RyYW5zZm9ybS5nZXQo
KSkKIAogdm9pZCBTVkdUZXh0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKiBhdHRyKQogewpAQCAtMTEzLDUgKzExMywzIEBAIGJvb2wgU1ZHVGV4dEVsZW1lbnQ6
OmNoaWxkU2hvdWxkQ3JlYXRlUmUKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMjk5NDYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiwyMyArMjIsMjEgQEAKIAogI2lmbmRlZiBT
VkdUZXh0RWxlbWVudF9oCiAjZGVmaW5lIFNWR1RleHRFbGVtZW50X2gKLSNpZiBFTkFCTEUoU1ZH
KQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQot
eworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHVGV4dEVsZW1lbnQgOiBwdWJs
aWMgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlCi0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1RyYW5zZm9ybWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHVGV4
dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1
YWwgflNWR1RleHRFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCi0gICAgICAgICAvLyAnU1ZHVGV4dEVsZW1l
bnQnIGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9y
dEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZp
ZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCkBAIC02Miw1ICs2MCwzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw5
ICs0OCw5IEBAIFNWR1RleHRQYXRoRWxlbWVudDo6flNWR1RleHRQYXRoRWxlbWVudCgKIHsKIH0K
IAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQsIFNWR05hbWVz
OjpzdGFydE9mZnNldEF0dHIubG9jYWxOYW1lKCksIG1fc3RhcnRPZmZzZXQpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24s
IGVudW1lcmF0aW9uLCBNZXRob2QsIG1ldGhvZCwgU1ZHTmFtZXM6Om1ldGhvZEF0dHIubG9jYWxO
YW1lKCksIG1fbWV0aG9kKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBh
dGhFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgU3BhY2luZywgc3BhY2lu
ZywgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLmxvY2FsTmFtZSgpLCBtX3NwYWNpbmcpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCwgU1ZHTmFtZXM6OnN0YXJ0T2Zm
c2V0QXR0ciwgbV9zdGFydE9mZnNldCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R1RleHRQYXRoRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1ldGhvZCwg
bWV0aG9kLCBTVkdOYW1lczo6bWV0aG9kQXR0ciwgbV9tZXRob2QpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1l
cmF0aW9uLCBTcGFjaW5nLCBzcGFjaW5nLCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIG1fc3BhY2lu
ZykKIAogdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSogYXR0cikKIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCShyZXZp
c2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
S0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcuaCIK
KwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5o
IgogCkBAIC0zMiwxMSArMzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1l
bnQodGFnTmFtZSwgZG9jKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGhMaXN0KQotICAgICwgbV95
KG5ldyBTVkdMZW5ndGhMaXN0KQotICAgICwgbV9keChuZXcgU1ZHTGVuZ3RoTGlzdCkKLSAgICAs
IG1fZHkobmV3IFNWR0xlbmd0aExpc3QpCi0gICAgLCBtX3JvdGF0ZShuZXcgU1ZHTnVtYmVyTGlz
dCkKKyAgICAsIG1feChuZXcgU1ZHTGVuZ3RoTGlzdChTVkdOYW1lczo6eEF0dHIpKQorICAgICwg
bV95KG5ldyBTVkdMZW5ndGhMaXN0KFNWR05hbWVzOjp5QXR0cikpCisgICAgLCBtX2R4KG5ldyBT
VkdMZW5ndGhMaXN0KFNWR05hbWVzOjpkeEF0dHIpKQorICAgICwgbV9keShuZXcgU1ZHTGVuZ3Ro
TGlzdChTVkdOYW1lczo6ZHlBdHRyKSkKKyAgICAsIG1fcm90YXRlKG5ldyBTVkdOdW1iZXJMaXN0
KFNWR05hbWVzOjpyb3RhdGVBdHRyKSkKIHsKIH0KIApAQCAtNDQsMTEgKzQ1LDExIEBAIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6On5TVkdUZXh0UG9zaXQKIHsKIH0KIAotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlz
dCosIExlbmd0aExpc3QsIGxlbmd0aExpc3QsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5h
bWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExpc3Qs
IFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3Ro
TGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExpc3QsIER4LCBkeCwgU1ZHTmFtZXM6OmR4QXR0ci5s
b2NhbE5hbWUoKSwgbV9keC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5n
dGhMaXN0LCBEeSwgZHksIFNWR05hbWVzOjpkeUF0dHIubG9jYWxOYW1lKCksIG1fZHkuZ2V0KCkp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LCBTVkdOdW1iZXJMaXN0KiwgTnVtYmVyTGlzdCwgbnVtYmVyTGlzdCwgUm90YXRlLCByb3RhdGUs
IFNWR05hbWVzOjpyb3RhdGVBdHRyLmxvY2FsTmFtZSgpLCBtX3JvdGF0ZS5nZXQoKSkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xl
bmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5ndGhMaXN0LCBYLCB4LCBTVkdOYW1lczo6eEF0dHIs
IG1feC5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRQb3NpdGlv
bmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5ndGhMaXN0LCBZLCB5
LCBTVkdOYW1lczo6eUF0dHIsIG1feS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0
LCBsZW5ndGhMaXN0LCBEeCwgZHgsIFNWR05hbWVzOjpkeEF0dHIsIG1fZHguZ2V0KCkpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdM
ZW5ndGhMaXN0KiwgTGVuZ3RoTGlzdCwgbGVuZ3RoTGlzdCwgRHksIGR5LCBTVkdOYW1lczo6ZHlB
dHRyLCBtX2R5LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudCwgU1ZHTnVtYmVyTGlzdCosIE51bWJlckxpc3QsIG51bWJlckxpc3Qs
IFJvdGF0ZSwgcm90YXRlLCBTVkdOYW1lczo6cm90YXRlQXR0ciwgbV9yb3RhdGUuZ2V0KCkpCiAK
IHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKiBhdHRyKQogewpAQCAtNjgsNiArNjksNCBAQCB2b2lkIFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQ6OnBhcnNlTWFwCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCi0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Cisg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2Ig
QnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0CkBAIC0yMiwyMiArMjIsMjAgQEAKIAogI2lmbmRlZiBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50X2gKICNkZWZpbmUgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudF9oCi0jaWYgRU5BQkxF
KFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBj
bGFzcyBTVkdMZW5ndGhMaXN0OwogICAgIGNsYXNzIFNWR051bWJlckxpc3Q7CiAKLSAgICBjbGFz
cyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxlbWVu
dAotICAgIHsKKyAgICBjbGFzcyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50IDogcHVibGljIFNW
R1RleHRDb250ZW50RWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2
aXJ0dWFsIH5TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7CiAKLSAgICAgICAgLy8gJ1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICBwcml2YXRlOgpAQCAt
NTIsNSArNTAsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
ICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zv
cm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNw
cAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjMsNyAr
MjMsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1
ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2luY2x1
ZGUgIlNWR1NWR0VsZW1lbnQuaCIKQEAgLTMyLDggKzMxLDggQEAKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKLVNWR1RyYW5zZm9ybUxpc3Q6OlNWR1RyYW5zZm9ybUxpc3QoKQotICAgIDog
U1ZHUE9ETGlzdDxTVkdUcmFuc2Zvcm0+KCkKK1NWR1RyYW5zZm9ybUxpc3Q6OlNWR1RyYW5zZm9y
bUxpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICA6IFNWR1BPRExp
c3Q8U1ZHVHJhbnNmb3JtPihhdHRyaWJ1dGVOYW1lKQogewogfQogCkBAIC04NCw1ICs4MywzIEBA
IFNWR1RyYW5zZm9ybSBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmEKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1Ry
YW5zZm9ybUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0
LmgJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwxNiAr
MjQsMTQgQEAKICNkZWZpbmUgU1ZHVHJhbnNmb3JtTGlzdF9oCiAKICNpZiBFTkFCTEUoU1ZHKQot
CiAjaW5jbHVkZSAiU1ZHTGlzdC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0IDogcHVibGljIFNW
R1BPRExpc3Q8U1ZHVHJhbnNmb3JtPgotICAgIHsKKyAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0
IDogcHVibGljIFNWR1BPRExpc3Q8U1ZHVHJhbnNmb3JtPiB7CiAgICAgcHVibGljOgotICAgICAg
ICBTVkdUcmFuc2Zvcm1MaXN0KCk7CisgICAgICAgIFNWR1RyYW5zZm9ybUxpc3QoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1MaXN0KCk7CiAKICAg
ICAgICAgU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJikgY29uc3Q7CkBAIC00OCw1ICs0NiwzIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHVHJhbnNmb3JtTGlzdF9o
Ci0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCShyZXZp
c2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgogCkBAIC0yMiw2ICsyMiw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNp
ZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKIApAQCAtMjIyLDgg
KzIyMywxMSBAQCBib29sIFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0CiAgICAg
cmV0dXJuICFkZWxpbVBhcnNlZDsKIH0KIAorYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjppc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIHJldHVybiBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cjsKIH0KIAotLy8gdmltOnRzPTQ6bm9l
dAotI2VuZGlmIC8vIEVOQUJMRShTVkcpCit9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm1hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDE3ICsyMiwxOCBAQAogCiAjaWZuZGVmIFNWR1Ry
YW5zZm9ybWFibGVfaAogI2RlZmluZSBTVkdUcmFuc2Zvcm1hYmxlX2gKLSNpZiBFTkFCTEUoU1ZH
KQogCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIlNWR0xvY2F0YWJsZS5oIgotI2luY2x1ZGUgPFBsYXRmb3JtU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAKLSAgICBjbGFzcyBBdG9taWNTdHJpbmc7CiAgICAgY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOworICAgIGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBTVkdU
cmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKKyAgICBjbGFzcyBRdWFsaWZp
ZWROYW1lOwogCiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtYWJsZSA6IHZpcnR1YWwgcHVibGljIFNW
R0xvY2F0YWJsZSB7CiAgICAgcHVibGljOgpAQCAtNDcsMTEgKzQ4LDExIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTShjb25zdCBTVkdF
bGVtZW50KikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9y
bSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QgPSAwOworCisgICAgICAgIGJvb2wgaXNL
bm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdUcmFu
c2Zvcm1hYmxlX2gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVVJJ
UmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2Uu
Y3BwCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xOSw2ICsxOSw3IEBACiAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCisKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5o
IgogCkBAIC0zNiw3ICszNyw3IEBAIFNWR1VSSVJlZmVyZW5jZTo6flNWR1VSSVJlZmVyZW5jZSgp
CiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdV
UklSZWZlcmVuY2UsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEhyZWYsIGhyZWYsIFhMaW5rTmFt
ZXM6OmhyZWZBdHRyLmxvY2FsTmFtZSgpLCBtX2hyZWYpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OU19XSVRIX0NPTlRFWFQoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIFN0cmluZywgc3Ry
aW5nLCBIcmVmLCBocmVmLCBYTGlua05hbWVzOjpocmVmQXR0ciwgbV9ocmVmKQogCiBib29sIFNW
R1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewpAQCAtNDgsNiArNDksMTEgQEAgYm9vbCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVk
QXR0cmlidQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBTVkdVUklSZWZlcmVuY2U6Omlz
S25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgcmV0
dXJuIGF0dHJOYW1lLm1hdGNoZXMoWExpbmtOYW1lczo6aHJlZkF0dHIpOworfQorCiBTdHJpbmcg
U1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgaWYg
KHVybC5zdGFydHNXaXRoKCJ1cmwoIikpIHsgLy8gVVJJIFJlZmVyZW5jZXMsIGllLiBmaWxsOnVy
bCgjdGFyZ2V0KQpAQCAtNjQsNSArNzAsNCBAQCBTdHJpbmcgU1ZHVVJJUmVmZXJlbmNlOjpnZXRU
YXJnZXQoY29uc3QgCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdVUklSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZv
eEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtMjIsOCArMjIsOCBAQAogCiAjaWZuZGVmIFNWR1VSSVJlZmVyZW5j
ZV9oCiAjZGVmaW5lIFNWR1VSSVJlZmVyZW5jZV9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVO
QUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0zNSwxMCArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR1VSSVJl
ZmVyZW5jZSgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdVUklSZWZlcmVuY2UoKTsKIAotICAgICAg
ICAvLyAnU1ZHVVJJUmVmZXJlbmNlJyBmdW5jdGlvbnMKICAgICAgICAgYm9vbCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgICAgICAvLyBIZWxwZXJzCiAgICAgICAg
IHN0YXRpYyBTdHJpbmcgZ2V0VGFyZ2V0KGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHByb3Rl
Y3RlZDoKQEAgLTUyLDUgKzUxLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdVUklSZWZlcmVuY2VfaAotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
NjgsMTAgKzY4LDEwIEBAIFNWR1VzZUVsZW1lbnQ6On5TVkdVc2VFbGVtZW50KCkKIHsKIH0KIAot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5hbWUo
KSwgbV93aWR0aCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVp
Z2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdO
YW1lczo6eEF0dHIsIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ciwg
bV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVu
Z3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBt
X3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRB
dHRyLCBtX2hlaWdodCkKIAogU1ZHRWxlbWVudEluc3RhbmNlKiBTVkdVc2VFbGVtZW50OjppbnN0
YW5jZVJvb3QoKSBjb25zdAogewpAQCAtMTE0LDE0ICsxMTQsNiBAQCB2b2lkIFNWR1VzZUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlCiB2b2lkIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVkSW50
b0RvY3VtZW50KCkKIHsKICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgpOwot
Ci0gICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsKLSAg
ICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQp
OwotICAgIGlmICghdGFyZ2V0RWxlbWVudCkgewotICAgICAgICBkb2N1bWVudCgpLT5hY2Nlc3NT
VkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShpZCwgdGhpcyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogfQogCkBAIC0xMzMs
MzEgKzEyNSwzNSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoCiAg
ICAgbV9zaGFkb3dUcmVlUm9vdEVsZW1lbnQgPSAwOwogfQogCi12b2lkIFNWR1VzZUVsZW1lbnQ6
OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCit2
b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7Ci0gICAgLy8gQXZvaWQgY2FsbGluZyBTVkdTdHlsZWRFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKCksIGFzIGl0IGFsd2F5cyBjYWxscyBub3RpZnlBdHRyaWJ1dGVDaGFu
Z2UuCi0gICAgU1ZHRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURlY2xz
KTsKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiAKICAgICBpZiAoIWF0dGFjaGVkKCkpCi0gICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdHJlZSBpZiB4L3kvd2lkdGgv
aGVpZ2h0IG9yIHhsaW5rOmhyZWYgY2hhbmdlZC4KLSAgICBpZiAoYXR0ci0+bmFtZSgpID09IFNW
R05hbWVzOjp4QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyIHx8Ci0gICAg
ICAgIGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6aGVpZ2h0QXR0ciB8fAotICAgICAgICBhdHRyLT5uYW1lKCkubWF0Y2hlcyhY
TGlua05hbWVzOjpocmVmQXR0cikpCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIgfHwKKyAgICAgICAgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0ciB8
fAorICAgICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAg
ICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8
fAorICAgICAgICBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8
CisgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgeworICAgICAgICAvLyBUT0RPOiBOb3cgdGhhdCB3ZSdyZSBhd2FyZSBvZiB0
aGUgYXR0cmlidXRlIG5hbWUsIHdlIGNhbiBmaW5hbGx5IG9wdGltaXplCisgICAgICAgIC8vIHVw
ZGF0aW5nIDx1c2U+IGF0dHJpYnV0ZXMgLSB0byBub3QgcmVjbG9uZSBldmVyeSB0aW1lLgogICAg
ICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgIGVsc2UgaWYgKG1fc2hhZG93VHJlZVJv
b3RFbGVtZW50KQotICAgICAgICBtX3NoYWRvd1RyZWVSb290RWxlbWVudC0+c2V0Q2hhbmdlZCgp
OworCisgICAgICAgIGlmIChtX3NoYWRvd1RyZWVSb290RWxlbWVudCkKKyAgICAgICAgICAgIG1f
c2hhZG93VHJlZVJvb3RFbGVtZW50LT5zZXRDaGFuZ2VkKCk7CisgICAgfQogfQogCi12b2lkIFNW
R1VzZUVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0Cit2b2lkIFNWR1VzZUVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFhdHRhY2hlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBOT1RFOiBBIGxvdCBvZiByb29tIGZvciBpbXByb3ZtZW50cyBo
ZXJlLiBUaGlzIGlzIHRvbyBzbG93LgotICAgIC8vIEl0IGhhcyB0byBiZSBkb25lIGNvcnJlY3Rs
eSwgYnkgaW1wbGVtZW50aW5nIGF0dHJpYnV0ZUNoYW5nZWQoKS4KLSAgICBjb25zdF9jYXN0PFNW
R1VzZUVsZW1lbnQqPih0aGlzKS0+YnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKKyAgICBidWlsZFBl
bmRpbmdSZXNvdXJjZSgpOwogCiAgICAgaWYgKG1fc2hhZG93VHJlZVJvb3RFbGVtZW50KQogICAg
ICAgICBtX3NoYWRvd1RyZWVSb290RWxlbWVudC0+c2V0Q2hhbmdlZCgpOwpAQCAtMjQ5LDYgKzI0
NSwxNSBAQCBzdGF0aWMgYm9vbCBzdWJ0cmVlQ29udGFpbnNEaXNhbGxvd2VkRWxlCiAKIHZvaWQg
U1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogeworICAgIFN0cmluZyBpZCA9
IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGhyZWYoKSk7CisgICAgRWxlbWVudCogdGFyZ2V0
RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsKKworICAgIGlmICghdGFy
Z2V0RWxlbWVudCkgeworICAgICAgICAvLyBUT0RPOiBXZSB3YW50IHRvIGRlcmVnaXN0ZXIgYXMg
cGVuZGluZyByZXNvdXJjZSwgaWYgb3VyIGhyZWYoKSBjaGFuZ2VkIQorICAgICAgICBkb2N1bWVu
dCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShpZCwgdGhpcyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBEbyBub3QgYnVpbGQgdGhlIHNoYWRv
dy9pbnN0YW5jZSB0cmVlIGZvciA8dXNlPiBlbGVtZW50cyBsaXZpbmcgaW4gYSBzaGFkb3cgdHJl
ZS4KICAgICAvLyBUaGUgd2lsbCBiZSBleHBhbmRlZCBzb29uIGFueXdheSAtIHNlZSBleHBhbmRV
c2VFbGVtZW50c0luU2hhZG93VHJlZSgpLgogICAgIE5vZGUqIHBhcmVudCA9IHBhcmVudE5vZGUo
KTsKQEAgLTI1OCw5ICsyNjMsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jl
c291cmNlCiAKICAgICAgICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnROb2RlKCk7CiAgICAgfQot
Ci0gICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsKLSAg
ICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQp
OyAKKyAKICAgICBTVkdFbGVtZW50KiB0YXJnZXQgPSAwOwogICAgIGlmICh0YXJnZXRFbGVtZW50
ICYmIHRhcmdldEVsZW1lbnQtPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICB0YXJnZXQgPSBzdGF0
aWNfY2FzdDxTVkdFbGVtZW50Kj4odGFyZ2V0RWxlbWVudCk7CkBAIC04MDksNSArODEyLDMgQEAg
dm9pZCBTVkdVc2VFbGVtZW50Ojp0cmFuc2ZlclVzZUF0dHJpYnV0ZQogfQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2
aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDE1ICsyNCwxNCBAQAogI2RlZmluZSBTVkdVc2VFbGVt
ZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogI2luY2x1
ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNl
IFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogICAgIGNsYXNzIFNW
R0xlbmd0aDsKIApAQCAtNDAsOCArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlCi0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1VzZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwg
flNWR1VzZUVsZW1lbnQoKTsKQEAgLTUxLDE2ICs0OSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZQog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6
OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ0VsZW1lbnQnCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRQ
ZW5kaW5nUmVzb3VyY2UoKTsKIAotICAgICAgICAvLyAnU1ZHVXNlRWxlbWVudCcgZnVuY3Rpb25z
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0
OworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xz
ID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHls
ZUNoYW5nZSA9IE5vQ2hhbmdlKTsKIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwpAQCAtOTYsMTAgKzkyLDEy
IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZvaWQgcmVtb3ZlRGlzYWxsb3dlZEVsZW1l
bnRzRnJvbVN1YnRyZWUoTm9kZSogZWxlbWVudCk7CiAKICAgICAgICAgdm9pZCBidWlsZFNoYWRv
d1RyZWUoU1ZHRWxlbWVudCogdGFyZ2V0LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3Rh
bmNlKTsKKwogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfVVNFKQogICAgICAgICB2b2lk
IGV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKE5vZGUqIGVsZW1lbnQpOwogICAgICAgICB2
b2lkIGV4cGFuZFN5bWJvbEVsZW1lbnRzSW5TaGFkb3dUcmVlKE5vZGUqIGVsZW1lbnQpOwogI2Vu
ZGlmCisKICAgICAgICAgdm9pZCBhdHRhY2hTaGFkb3dUcmVlKCk7CiAKICAgICAgICAgLy8gIlRy
ZWUgY29ubmVjdG9yIiAKQEAgLTExNiw2ICsxMTQsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0Ci0KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5v
cmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CisKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1ZpZXdFbGVtZW50LmgiCiAKQEAgLTMz
LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdWaWV3RWxlbWVudDo6U1ZH
Vmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQgKmRvYykK
K1NWR1ZpZXdFbGVtZW50OjpTVkdWaWV3RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2Mp
CiAgICAgLCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKICAgICAsIFNWR0ZpdFRvVmll
d0JveCgpCkBAIC00OCwxMiArNDksMTIgQEAgU1ZHVmlld0VsZW1lbnQ6On5TVkdWaWV3RWxlbWVu
dCgpCiBTVkdTdHJpbmdMaXN0KiBTVkdWaWV3RWxlbWVudDo6dmlld1RhcmdldCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX3ZpZXdUYXJnZXQpCi0gICAgICAgIG1fdmlld1RhcmdldCA9IG5ldyBTVkdT
dHJpbmdMaXN0KCk7CisgICAgICAgIG1fdmlld1RhcmdldCA9IG5ldyBTVkdTdHJpbmdMaXN0KFNW
R05hbWVzOjp2aWV3VGFyZ2V0QXR0cik7CiAKICAgICByZXR1cm4gbV92aWV3VGFyZ2V0LmdldCgp
OwogfQogCi12b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUgKmF0dHIpCit2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdO
YW1lczo6dmlld1RhcmdldEF0dHIpCiAgICAgICAgIHZpZXdUYXJnZXQoKS0+cmVzZXQoYXR0ci0+
dmFsdWUoKSk7CkBAIC03MCw0ICs3MSwzIEBAIHZvaWQgU1ZHVmlld0VsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXQKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1ZpZXdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVmlld0Vs
ZW1lbnQuaAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNyBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBA
IC0yMiwyOSArMjIsMjcgQEAKIAogI2lmbmRlZiBTVkdWaWV3RWxlbWVudF9oCiAjZGVmaW5lIFNW
R1ZpZXdFbGVtZW50X2gKLSNpZiBFTkFCTEUoU1ZHKQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNs
dWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgogI2luY2x1ZGUgIlNWR1pv
b21BbmRQYW4uaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwogICAgIGNsYXNzIFNWR1N0cmluZ0xpc3Q7CiAgICAgY2xhc3MgU1ZHVmlld0VsZW1lbnQgOiBw
dWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR0ZpdFRvVmlld0JveCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdab29tQW5kUGFuCi0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR1pvb21BbmRQYW4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHVmlld0VsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR1Zp
ZXdFbGVtZW50KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSAqYXR0cik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKIAotICAgICAgICAvLyAnU1ZHVmlld0VsZW1l
bnQnIGZ1bmN0aW9ucwotICAgICAgICBTVkdTdHJpbmdMaXN0ICp2aWV3VGFyZ2V0KCkgY29uc3Q7
CisgICAgICAgIFNWR1N0cmluZ0xpc3QqIHZpZXdUYXJnZXQoKSBjb25zdDsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNl
OyB9CiAKQEAgLTYzLDUgKzYxLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHVmlld1NwZWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNw
cAkocmV2aXNpb24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1ZHVmlld1Nw
ZWM6OlNWR1ZpZXdTcGVjKGNvbnN0IFNWR1NWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAg
IDogU1ZHRml0VG9WaWV3Qm94KCkKICAgICAsIFNWR1pvb21BbmRQYW4oKQotICAgICwgbV90cmFu
c2Zvcm0obmV3IFNWR1RyYW5zZm9ybUxpc3QoKSkKKyAgICAsIG1fdHJhbnNmb3JtKG5ldyBTVkdU
cmFuc2Zvcm1MaXN0KFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSkKICAgICAsIG1fY29udGV4dEVs
ZW1lbnQoY29udGV4dEVsZW1lbnQpCiB7CiB9CkBAIC0xNzYsNCArMTc2LDMgQEAgYm9vbCBTVkdW
aWV3U3BlYzo6cGFyc2VWaWV3U3BlYyhjb25zdCBTdAogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKLQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdWaWV3U3BlYy5oCShyZXZpc2lvbiAyOTk0NikKKysrIFdlYkNvcmUvc3ZnL1NW
R1ZpZXdTcGVjLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDI5ICsyMSwyNyBAQAogCiAjaWZuZGVm
IFNWR1ZpZXdTcGVjX2gKICNkZWZpbmUgU1ZHVmlld1NwZWNfaAotI2lmIEVOQUJMRShTVkcpCiAK
KyNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0ZpdFRvVmlld0JveC5oIgogI2luY2x1ZGUg
IlNWR1pvb21BbmRQYW4uaCIKIAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAotbmFtZXNwYWNl
IFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7
CiAgICAgY2xhc3MgU1ZHU1ZHRWxlbWVudDsKICAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0Owog
CiAgICAgY2xhc3MgU1ZHVmlld1NwZWMgOiBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94LAotICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1pvb21BbmRQYW4KLSAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgU1ZHWm9vbUFuZFBhbiB7CiAgICAgcHVibGljOgogICAgICAg
ICBTVkdWaWV3U3BlYyhjb25zdCBTVkdTVkdFbGVtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNW
R1ZpZXdTcGVjKCk7CiAKICAgICAgICAgYm9vbCBwYXJzZVZpZXdTcGVjKGNvbnN0IFN0cmluZyYp
OwogCi0gICAgICAgIC8vICdTVkdWaWV3U3BlYycgZnVuY3Rpb25zCiAgICAgICAgIHZvaWQgc2V0
VHJhbnNmb3JtKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBTVkdUcmFuc2Zvcm1MaXN0KiB0cmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zZm9ybS5nZXQoKTsgfQogCkBAIC02OCw1ICs2
NiwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlm
Ci0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCShyZXZpc2lvbiAy
OTk0NikKKysrIFdlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3
IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1
ZGUgIlNWR1pvb21BbmRQYW4uaCIKIApAQCAtNjEsNiArNjIsMTEgQEAgYm9vbCBTVkdab29tQW5k
UGFuOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBT
Vkdab29tQW5kUGFuOjppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQoreworICAgIHJldHVybiBhdHRyTmFtZSA9PSBTVkdOYW1lczo6em9vbUFuZFBhbkF0dHI7
Cit9CisKIHN0YXRpYyBjb25zdCBVQ2hhciBkaXNhYmxlW10gPSAgeydkJywgJ2knLCAncycsICdh
JywgJ2InLCAnbCcsICdlJ307CiBzdGF0aWMgY29uc3QgVUNoYXIgbWFnbmlmeVtdID0gIHsnbScs
ICdhJywgJ2cnLCAnbicsICdpJywgJ2YnLCAneSd9OwogCkBAIC03OCw2ICs4NCw0IEBAIGJvb2wg
U1ZHWm9vbUFuZFBhbjo6cGFyc2Vab29tQW5kUGFuKGNvbnMKIAogfQogCi0vLyB2aW06dHM9NDpu
b2V0CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHWm9vbUFu
ZFBhbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaAkocmV2aXNp
b24gMjk5NDYpCisrKyBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFz
IFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDEzICsy
MiwxNCBAQAogCiAjaWZuZGVmIFNWR1pvb21BbmRQYW5faAogI2RlZmluZSBTVkdab29tQW5kUGFu
X2gKLSNpZiBFTkFCTEUoU1ZHKQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBNYXBwZWRBdHRy
aWJ1dGU7CisgICAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogICAgIGNsYXNzIFNWR1pvb21BbmRQ
YW4gewogICAgIHB1YmxpYzoKQEAgLTQxLDExICs0MiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFNWR1pvb21BbmRQYW4oKTsKICAgICAgICAgdmlydHVhbCB+U1ZHWm9vbUFuZFBh
bigpOwogCi0gICAgICAgIC8vICdTVkdab29tQW5kUGFuJyBmdW5jdGlvbnMKICAgICAgICAgdW5z
aWduZWQgc2hvcnQgem9vbUFuZFBhbigpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
Wm9vbUFuZFBhbih1bnNpZ25lZCBzaG9ydCB6b29tQW5kUGFuKTsKIAogICAgICAgICBib29sIHBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICBib29sIGlzS25v
d25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIGJvb2wgcGFyc2Va
b29tQW5kUGFuKGNvbnN0IFVDaGFyKiYgc3RhcnQsIGNvbnN0IFVDaGFyKiBlbmQpOwogCkBAIC01
Nyw1ICs1OCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CiAjZW5kaWYgLy8gU1ZHWm9vbUFuZFBhbl9oCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtODYsNiArODYsMzIgQEAgU1ZHUmVzb3VyY2U6On5TVkdSZXNvdXJjZSgpCiAKIHZvaWQg
U1ZHUmVzb3VyY2U6OmludmFsaWRhdGUoKQogeworICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVu
dCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2xpZW50cy5iZWdpbigpOworICAgIGNvbnN0IEhh
c2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2NsaWVudHMu
ZW5kKCk7CisKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNWR1N0eWxl
ZEVsZW1lbnQqIGN1ciA9ICppdDsKKworICAgICAgICBpZiAoY3VyLT5yZW5kZXJlcigpKQorICAg
ICAgICAgICAgY3VyLT5yZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKworICAgICAg
ICBjdXItPm5vdGlmeVJlc291cmNlUGFyZW50SWZFeGlzdGFudCgpOworICAgIH0KK30KKwordm9p
ZCBTVkdSZXNvdXJjZTo6aW52YWxpZGF0ZUNsaWVudHMoSGFzaFNldDxTVkdTdHlsZWRFbGVtZW50
Kj4gY2xpZW50cykKK3sKKyAgICBIYXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBjbGllbnRzLmJlZ2luKCk7CisgICAgY29uc3QgSGFzaFNldDxTVkdTdHlsZWRF
bGVtZW50Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNsaWVudHMuZW5kKCk7CisKKyAgICBmb3Ig
KDsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQqIGN1ciA9ICpp
dDsKKworICAgICAgICBpZiAoY3VyLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgY3VyLT5yZW5k
ZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKworICAgICAgICBjdXItPm5vdGlmeVJlc291
cmNlUGFyZW50SWZFeGlzdGFudCgpOworICAgIH0KIH0KIAogdm9pZCBTVkdSZXNvdXJjZTo6cmVt
b3ZlQ2xpZW50KFNWR1N0eWxlZEVsZW1lbnQqIGl0ZW0pIApAQCAtMTEwLDQzICsxMzYsMjEgQEAg
dm9pZCBTVkdSZXNvdXJjZTo6YWRkQ2xpZW50KFNWR1N0eWxlZEVsZQogewogICAgIGlmIChtX2Ns
aWVudHMuY29udGFpbnMoaXRlbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBt
X2NsaWVudHMuYWRkKGl0ZW0pOwogCiAgICAgUmVzb3VyY2VTZXQqIHRhcmdldCA9IGNsaWVudE1h
cCgpLmdldChpdGVtKTsKICAgICBpZiAoIXRhcmdldCkgCiAgICAgICAgIHRhcmdldCA9IG5ldyBS
ZXNvdXJjZVNldDsKLSAgICAKLSAgICAKKwogICAgIFNWR1Jlc291cmNlVHlwZSB0eXBlID0gcmVz
b3VyY2VUeXBlKCk7CiAgICAgaWYgKFNWR1Jlc291cmNlKiBvbGRSZXNvdXJjZSA9IHRhcmdldC0+
cmVzb3VyY2VzW3R5cGVdKQogICAgICAgICBvbGRSZXNvdXJjZS0+bV9jbGllbnRzLnJlbW92ZShp
dGVtKTsKLSAgICAKKwogICAgIHRhcmdldC0+cmVzb3VyY2VzW3R5cGVdID0gdGhpczsKICAgICBj
bGllbnRNYXAoKS5zZXQoaXRlbSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBTVkdSZXNvdXJjZTo6cmVw
YWludENsaWVudHMoKSBjb25zdAotewotICAgIFNWR1Jlc291cmNlOjpyZXBhaW50Q2xpZW50cyht
X2NsaWVudHMpOwotfQotCi12b2lkIFNWR1Jlc291cmNlOjpyZXBhaW50Q2xpZW50cyhIYXNoU2V0
PFNWR1N0eWxlZEVsZW1lbnQqPiBjbGllbnRzKQotewotICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxl
bWVudCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNsaWVudHMuYmVnaW4oKTsKLSAgICBjb25zdCBI
YXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2xpZW50cy5l
bmQoKTsKLQotICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudCogY3VyID0gKml0OwotICAgICAgICBjdXItPnNldENoYW5nZWQoKTsKLQotICAgICAg
ICBpZiAoY3VyLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgY3VyLT5yZW5kZXJlcigpLT5yZXBh
aW50KCk7Ci0KLSAgICAgICAgY3VyLT5ub3RpZnlSZXNvdXJjZVBhcmVudElmRXhpc3RhbnQoKTsK
LSAgICB9Ci19Ci0KIFRleHRTdHJlYW0mIFNWR1Jlc291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIHJldHVybiB0czsKQEAgLTE3Myw2ICsx
NzcsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0
dXJuIHIuZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30KIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmgJKHJl
dmlzaW9uIDI5OTQ2KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDIwICsyNywxNyBAQAogI2RlZmluZSBTVkdS
ZXNvdXJjZV9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIK
IAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBBdG9taWNTdHJpbmc7IAogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIFJlbmRl
clBhdGg7Ci0gICAgY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwogICAgIGNsYXNzIFNWR1N0
eWxlZEVsZW1lbnQ7CiAgICAgY2xhc3MgVGV4dFN0cmVhbTsKIApAQCAtNzUsMTAgKzcyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOwog
CiAgICAgICAgIHZvaWQgYWRkQ2xpZW50KFNWR1N0eWxlZEVsZW1lbnQqKTsKLQotICAgICAgICB2
b2lkIHJlcGFpbnRDbGllbnRzKCkgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGFpbnRD
bGllbnRzKEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+KTsKLSAgICAgICAgCiAgICAgICAgIHZp
cnR1YWwgU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0ID0gMDsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlVHlw
ZSgpID09IFBhaW50U2VydmVyUmVzb3VyY2VUeXBlOyB9CkBAIC04OSw3ICs4Miw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCisgICAgICAgIHN0YXRpYyB2b2lkIGlu
dmFsaWRhdGVDbGllbnRzKEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+KTsKICAgICAgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlQ2xpZW50KFNWR1N0eWxlZEVsZW1lbnQqKTsKKwogICAgIHByaXZhdGU6
CiAgICAgICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+IG1fY2xpZW50czsKICAgICB9OwpA
QCAtMTAxLDUgKzk2LDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKLQogI2VuZGlmIC8vIFNWR1Jlc291cmNlX2gKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw4IEBAIFNWR1Jlc291cmNlTWFza2VyOjp+U1ZHUmVzb3VyY2VNYXNrZXIo
KQogCiB2b2lkIFNWR1Jlc291cmNlTWFza2VyOjppbnZhbGlkYXRlKCkKIHsKLSAgICBtX21hc2su
Y2xlYXIoKTsKKwlTVkdSZXNvdXJjZTo6aW52YWxpZGF0ZSgpOworCW1fbWFzay5jbGVhcigpOwog
fQogCiBUZXh0U3RyZWFtJiBTVkdSZXNvdXJjZU1hc2tlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJiB0cykgY29uc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NW
R1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcAkocmV2aXNpb24gMjk5NDYpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQYWludFNlcnZlckdyYWRpZW50Q2cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAg
LTMyNyw2ICszMjcsOCBAQCBib29sIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNldHVwKEdyYXBo
CiAKIHZvaWQgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6aW52YWxpZGF0ZSgpCiB7CisJU1ZHUGFp
bnRTZXJ2ZXI6OmludmFsaWRhdGUoKTsKKwogICAgIC8vIEludmFsaWRhdGUgY2FjaGVzCiAgICAg
Q0dTaGFkaW5nUmVsZWFzZShtX3NoYWRpbmdDYWNoZSk7CiAKQEAgLTMzNyw1ICszMzksMyBAQCB2
b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OmludmFsaWRhdGUoCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDI5OTQ2KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNyArNzIsNyBAQCBUZXh0U3RyZWFtJiBTVkdGRUltYWdlOjpleHRlcm5hbFJlcHJlc2Vu
CiB2b2lkIFNWR0ZFSW1hZ2U6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSopCiB7CiAgICAgaWYg
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSA9IGZpbHRlcigpKQotICAgICAgICBm
aWx0ZXJSZXNvdXJjZS0+cmVwYWludENsaWVudHMoKTsKKyAgICAgICAgZmlsdGVyUmVzb3VyY2Ut
PmludmFsaWRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>18889</attachid>
            <date>2008-02-03 14:54:17 -0800</date>
            <delta_ts>2008-02-03 15:08:26 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>SVGPerformanceBoost.diff</filename>
            <type>text/plain</type>
            <size>242921</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkzIEBACisyMDA4LTAyLTAzICBOaWtvbGFzIFppbW1lcm1hbm4gIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRml4ZXM6IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mzk0
CisKKyAgICAgICAgRHJhbWF0aWNhbGx5IGltcHJvdmUgZHluYW1pYyB1cGRhdGUgcGVyZm9ybWFu
Y2UgaW4gRE9NIC8gU1ZHIERPTS4KKworICAgICAgICBUaGUgbm90aWZ5QXR0cmlidXRlQ2hhbmdl
KCkgc2xlZGdlaGFtbWVyIGlzIGdvbmUgbm93LiBJdCB3YXMgaW1wbGVtZW50ZWQgb24gcXVpdGUg
YSBsb3Qgb2YKKyAgICAgICAgU1ZHKkVsZW1lbnQgY2xhc3NlcyBhbmQgYmxpbmRseSByZWFjdGVk
IG9uIGFueSBwcm9wZXJ0eSBjaGFuZ2UgY2F1c2VkIGJ5IERPTSAvIFNWRyBET00KKyAgICAgICAg
YnkgcmVidWlsZGluZyBzdHlsZS9yZW5kZXJlciBldGMuIHdpdGhvdXQgYWN0dWFsbHkgY2hlY2tp
bmcgd2hhdCBjaGFuZ2VkLiBTVkcgdXNlZCBhIGhhY2sKKyAgICAgICAgZm9yIHllYXJzIHRoYXQg
YXR0cmlidXRlQ2hhbmdlZCgpIGNhbGxlZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSAtIHdoaWNo
IHJlc3VsdHMgaW4gcG9vcgorICAgICAgICBzY3JpcHRpbmcgcGVyZm9ybWFuY2UgYW5kL29yIGR5
bmFtaWMgY3JlYXRpb24vbW9kaWZpY2lhdGlvbiBvZiBlbGVtZW50cyB1c2luZyBTVkcgRE9NLgor
CisgICAgICAgIFByb3Blcmx5IGltcGxlbWVudCBjaGlsZHJlbkNoYW5nZWQgLyBhdHRyaWJ1dGVD
aGFuZ2VkIGluIFNWRyB3aXRoIHNvbWUgZGVyaXZhdGlvbiBmcm9tIHRoZSBIVE1MIGNvZGUuCisg
ICAgICAgIE91ciBTVkcqIGVsZW1lbnQgY2xhc3NlcyBpbXBsZW1lbnQgInN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIiBpbnN0ZWFkIG9mCisgICAgICAgICJhdHRyaWJ1
dGVDaGFuZ2VkKEF0dHJpYnV0ZSouLi4pIiB0byBiZSBhYmxlIHRvIHVuaWZ5IERPTSAvIFNWRyBE
T00gdXBkYXRlcy4gU1ZHIERPTSBjbGFzc2VzCisgICAgICAgIGFyZSBhd2FyZSBvZiB0aGUgYXR0
cmlidXRlIG5hbWUgdGhleSBiZWxvbmcgdG8uIFNvIHdoZW4gdXNpbmcgInJlY3RFbGVtZW50LnRy
YW5zZm9ybS5iYXNlVmFsLmdldEl0ZW0oMCkuc2V0Um90YXRlKDQ1KSIKKyAgICAgICAgU1ZHIERP
TSB1cGRhdGVzIHRoZSA8cmVjdD4gZWxlbWVudCBieSBjYWxsaW5nIHN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIG9uIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAg
IFNWR1JlY3RFbGVtZW50LiBTbyB3ZSdyZSBub3cgYWJsZSB0byBoYW5kbGUgZmFzdCBkeW5hbWlj
IHVwZGF0ZXMgaW4gYSB1bmlmaWVkIHdheSAtIGxlYWRpbmcgdG8gbGVzcyBidWdzLgorCisgICAg
ICAgIEhUTUwgZHluYW1pYyB1cGRhdGVzIHZzLiBTVkcgZHluYW1pYyB1cGRhdGVzOgorCisgICAg
ICAgIEhUTUw6CisgICAgICAgICAgICAxKSBzZXRBdHRyaWJ1dGUoImZvbyIsICJiYXIiKSAtPiBh
dHRyaWJ1dGVDaGFuZ2VkIC0+IHBhcnNlTWFwcGVkQXR0cmlidXRlIC0+IHNldENoYW5nZWQvc2V0
TmVlZHNMYXlvdXQKKyAgICAgICAgICAgIDIpIHNvbWVPYmplY3QuZm9vID0gImJhciIgLT4gSFRN
TCBjb2RlIG1hcHMgdG8gc2V0QXR0cmlidXRlIGNhbGxzLCBlbmRzIHVwIHRha2luZyB0aGUgc2Ft
ZSByb3V0ZSBhcyAxKQorICAgICAgICAgICAgMykgc29tZU9iamVjdC5zdHlsZS5mb28gPSAiYmFy
IiAtPiBzZXRDaGFuZ2VkIC0+IHJlY2FsY1N0eWxlIChwb3NzaWJsZSByZWxheW91dCkKKworICAg
ICAgICBTVkc6CisgICAgICAgICAgICAxKSBzZXRBdHRyaWJ1dGUoImZvbyIsICJiYXIiKSAtPiBh
dHRyaWJ1dGVDaGFuZ2VkIC0+IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgLT4gcGFyc2VNYXBwZWRBdHRy
aWJ1dGUgLT4gc2V0Q2hhbmdlZC9zZXROZWVkc0xheW91dAorICAgICAgICAgICAgMikgc2FtZSwg
Y3VycmVudGx5IG1vc3QgZnVuY3Rpb25zIGFyZSBub3QgeWV0IGNvbnZlcnRlZCB0byB0aGlzIG5l
dyBzeXN0ZW0hIChtb3N0IG5vdGljZWFibGUgaW4gU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50
VG9BbmdsZSkgICAgCisgICAgICAgICAgICAzKSBzYW1lCisgICAgICAgICAgICA0KSBzb21lUmVj
dEVsZW1lbnQueC5iYXNlVmFsLnZhbHVlID0gMTAwIC0+IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgLT4g
c2V0Q2hhbmdlZC9zZXROZWVkc0xheW91dCAoc3BlY2lhbCBTVkcgRE9NIHVwZGF0aW5nKQorICAg
ICAgICAKKyAgICAgICAgVGhlIG5ldyBTVkcgRE9NIHVwZGF0aW5nIGNvbmNlcHQgNCkgdXNlcyB0
aGUgc2FtZSB1cGRhdGluZyBsb2dpYyBhcyAxKSBhbmQgMiksIHNvIHdlJ3JlIGFjdHVhbGx5IG1v
ZGVsbGluZyB0aGUgSFRNTCB3YXkuCisgICAgICAgIFNWRyBoYW5kbGVzIGNhbGxpbmcgc2V0Q2hh
bmdlZC9zZXROZWVkc0xheW91dCBpbiBzdmdBdHRyaWJ1dGVDaGFuZ2VkLCB1bmxpa2UgSFRNTCB3
aGljaCB1c2VzIHBhcnNlTWFwcGVkQXR0cmlidXRlIGZvciB0aGF0LgorCisgICAgICAgIE9ubHkg
dXBkYXRlZCBhbGwgZWxlbWVudHMgbmVjZXNzYXJ5IHRvIGxldCB1cyBwYXNzIGxheW91dCB0ZXN0
cyB3L28gcmVncmVzc2lvbnMuIE5lZWQgdG8gY3Jhd2wgdGhyb3VnaAorICAgICAgICBhbGwgU1ZH
KkVsZW1lbnQgY2xhc3NlcyBhbmQgaW1wbGVtZW50IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgLyBjaGls
ZHJlbkNoYW5nZWQgYW55d2hlcmUgbmVlZGVkIGluIGEgZm9sbG93LXVwIHBhdGNoLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNTVkdQT0RUeXBlV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFkV3JpdGU6OmNvbW1pdENoYW5nZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvclJlYWRPbmx5Ojpjb21t
aXRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JG
b3JMaXN0OjpKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0OjpvcGVyYXRvciBQT0RUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDo6
Y29tbWl0Q2hhbmdlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NWR1BhdGhTZWdMaXN0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUGF0aFNlZ0xpc3Q6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU1ZHUGF0aFNlZ0xpc3Q6OmluaXRpYWxpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SlNTVkdQYXRoU2VnTGlzdDo6aW5zZXJ0SXRlbUJlZm9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NWR1BhdGhTZWdMaXN0OjpyZXBsYWNlSXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1NWR1BhdGhTZWdMaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZH
UGF0aFNlZ0xpc3Q6OmFwcGVuZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHUG9p
bnRMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHUG9pbnRMaXN0OjpjbGVh
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1BvaW50TGlzdDo6aW5pdGlhbGl6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1NWR1BvaW50TGlzdDo6Z2V0SXRlbSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1NWR1BvaW50TGlzdDo6aW5zZXJ0SXRlbUJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpK
U1NWR1BvaW50TGlzdDo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQb2lu
dExpc3Q6OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdQb2ludExpc3Q6OmFw
cGVuZEl0ZW0pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHVHJhbnNmb3JtTGlzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NWR1RyYW5zZm9ybUxpc3Q6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU1ZHVHJhbnNmb3JtTGlzdDo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpKU1NWR1RyYW5zZm9ybUxpc3Q6OmdldEl0ZW0pOgorICAgICAgICAoV2ViQ29y
ZTo6SlNTVkdUcmFuc2Zvcm1MaXN0OjppbnNlcnRJdGVtQmVmb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTU1ZHVHJhbnNmb3JtTGlzdDo6cmVwbGFjZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
SlNTVkdUcmFuc2Zvcm1MaXN0OjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZH
VHJhbnNmb3JtTGlzdDo6YXBwZW5kSXRlbSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR0dyYWRpZW50
U3RvcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdHcmFkaWVudFN0b3A6OnNldFN0
eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg6CisgICAg
ICAgICogc3ZnL1NWR0FFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBzdmcvU1ZHQUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHQW5nbGUuY3BwOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5nbGU6OmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKToKKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRUZW1wbGF0ZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZFRlbXBsYXRlOjp3cmFwcGVyQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRUZW1wbGF0ZTo6YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9u
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25FbGVtZW50OjpwYXJz
ZUJlZ2luT3JFbmRWYWx1ZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
Q2lyY2xlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUmVzb3VyY2Up
OgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NsaXBQYXRoRWxlbWVudDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlw
UGF0aEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnNlcnRl
ZEludG9Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsbGlwc2VFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAg
ICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAg
ICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAg
ICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRU
b1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdGaXRUb1ZpZXdC
b3guaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR0VsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50
RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRp
ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdH
cmFkaWVudEVsZW1lbnQ6OmJ1aWxkU3RvcHMpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0xhbmdTcGFjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdMYW5nU3BhY2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoTGlzdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhMaXN0OjpTVkdMZW5ndGhMaXN0KToKKyAg
ICAgICAgKiBzdmcvU1ZHTGVuZ3RoTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGlzdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGlzdDo6U1ZHTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaXN0
Ojphc3NvY2lhdGVkQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQT0RMaXN0
OjpTVkdQT0RMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR051
bWJlckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTnVtYmVyTGlzdDo6U1ZHTnVtYmVy
TGlzdCk6CisgICAgICAgICogc3ZnL1NWR051bWJlckxpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhT
ZWdMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aFNlZy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFNlZzo6YXNzb2NpYXRlZEF0
dHJpYnV0ZU5hbWUpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoU2VnTGlzdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYXRoU2VnTGlzdDo6U1ZHUGF0aFNlZ0xpc3QpOgorICAgICAgICAqIHN2
Zy9TVkdQYXRoU2VnTGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1BvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2ludExpc3Q6OlNWR1BvaW50
TGlzdCk6CisgICAgICAgICogc3ZnL1NWR1BvaW50TGlzdC5oOgorICAgICAgICAqIHN2Zy9TVkdQ
b2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6U1ZHUG9s
eUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnBvaW50cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQb2x5Z29u
RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1BvbHlnb25FbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1BvbHlsaW5l
RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDoKKyAg
ICAgICAgKiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpOgorICAgICAg
ICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JlY3RF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9w
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3Rv
cEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdHJpbmdMaXN0OjpTVkdTdHJpbmdMaXN0KToKKyAgICAgICAgKiBzdmcvU1ZHU3RyaW5nTGlz
dC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsYWJsZS5jcHA6CisgICAgICAgICogc3ZnL1NWR1N0
eWxhYmxlLmg6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OmludmFsaWRhdGVSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW4pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkTG9j
YXRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVu
dDo6U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJl
cXVpcmVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OnJlcXVpcmVkRXh0
ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUpOgorICAgICAgICAq
IHN2Zy9TVkdUZXN0cy5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdUZXh0RWxlbWVudDo6U1ZHVGV4dEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0RWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNwcDoK
KyAgICAgICAgKFNWR1RyYW5zZm9ybUxpc3Q6OlNWR1RyYW5zZm9ybUxpc3QpOgorICAgICAgICAq
IHN2Zy9TVkdUcmFuc2Zvcm1MaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybWFibGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtYWJsZTo6aXNLbm93bkF0dHJpYnV0
ZSk6CisgICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybWFibGUuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VVJJUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6aXNL
bm93bkF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1VSSVJlZmVyZW5jZS5oOgorICAgICAg
ICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OmJ1
aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3
RWxlbWVudDo6U1ZHVmlld0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1l
bnQ6OnZpZXdUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVmlld1NwZWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6
OlNWR1ZpZXdTcGVjKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld1NwZWMuaDoKKyAgICAgICAgKiBz
dmcvU1ZHWm9vbUFuZFBhbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdab29tQW5kUGFuOjpp
c0tub3duQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHWm9vbUFuZFBhbi5oOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZTo6aW52
YWxpZGF0ZUNsaWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2U6OmFkZENsaWVu
dCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmg6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL1NWR1Jlc291cmNlTWFza2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
c291cmNlTWFza2VyOjppbnZhbGlkYXRlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvY2cvU1ZH
UGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhaW50U2Vy
dmVyR3JhZGllbnQ6OmludmFsaWRhdGUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZTo6aW1hZ2VDaGFu
Z2VkKToKKwogMjAwOC0wMi0wMyAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9yIGxhc3Qgd3ggY29tbWl0IChhIGNvdXBsZSB0
aGluZ3Mgd2VyZSBub3QgY29tbWl0dGVkKS4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNT
VkdQT0RUeXBlV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNT
VkdQT0RUeXBlV3JhcHBlci5oCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNTVkdQT0RUeXBlV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBvcGVyYXRvciBQT0RUeXBlKCkgPSAw
OwogCiAgICAgLy8gU2V0dGVyIHdyYXBwZXIKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q2hhbmdl
KEtKUzo6RXhlY1N0YXRlKiwgUE9EVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb21taXRD
aGFuZ2UoUE9EVHlwZSwgU1ZHRWxlbWVudCopID0gMDsKIH07CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFBPRFR5cGUsIHR5cGVuYW1lIFBPRFR5cGVDcmVhdG9yPgpAQCAtNzMsMTIgKzczLDE1IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKSB7IHJldHVybiAobV9jcmVhdG9y
LmdldCgpLT4qbV9nZXR0ZXIpKCk7IH0KIAogICAgIC8vIFNldHRlciB3cmFwcGVyCi0gICAgdmly
dHVhbCB2b2lkIGNvbW1pdENoYW5nZShLSlM6OkV4ZWNTdGF0ZSogZXhlYywgUE9EVHlwZSB0eXBl
KQorICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoUE9EVHlwZSB0eXBlLCBTVkdFbGVtZW50
KiBjb250ZXh0KQogICAgIHsKICAgICAgICAgaWYgKCFtX3NldHRlcikKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICAobV9jcmVhdG9yLmdldCgpLT4qbV9zZXR0ZXIpKHR5cGUpOworCisg
ICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICAgICAgY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hh
bmdlZChtX2NyZWF0b3ItPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogICAgIH0KIAogcHJp
dmF0ZToKQEAgLTEwMiw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBvcGVyYXRvciBQ
T0RUeXBlKCkgeyByZXR1cm4gbV9wb2RUeXBlOyB9CiAKICAgICAvLyBTZXR0ZXIgd3JhcHBlcgot
ICAgIHZpcnR1YWwgdm9pZCBjb21taXRDaGFuZ2UoS0pTOjpFeGVjU3RhdGUqLCBQT0RUeXBlIHR5
cGUpCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShQT0RUeXBlIHR5cGUsIFNWR0VsZW1l
bnQqKQogICAgIHsKICAgICAgICAgbV9wb2RUeXBlID0gdHlwZTsKICAgICB9CkBAIC0xMTUsMTYg
KzExOCw0NiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBQT0RUeXBlPgogY2xhc3MgU1ZHUE9ETGlzdEl0
ZW07CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFBPRFR5cGU+Ci1jbGFzcyBKU1NWR1BPRFR5cGVXcmFw
cGVyQ3JlYXRvckZvckxpc3QgOiBwdWJsaWMgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JSZWFk
V3JpdGU8UE9EVHlwZSwgU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4gPgorY2xhc3MgSlNTVkdQT0RU
eXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0IDogcHVibGljIEpTU1ZHUE9EVHlwZVdyYXBwZXI8UE9E
VHlwZT4KIHsKIHB1YmxpYzoKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Qo
U1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4qIGNyZWF0b3IpCi0gICAgICAgIDogSlNTVkdQT0RUeXBl
V3JhcHBlckNyZWF0b3JSZWFkV3JpdGU8UE9EVHlwZSwgU1ZHUE9ETGlzdEl0ZW08UE9EVHlwZT4g
PihjcmVhdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1BPRExpc3RJdGVtPFBPRFR5
cGU+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdQT0RMaXN0SXRlbTxQT0RU
eXBlPjo6c2V0VmFsdWUpCi0gICAgeyB9CisgICAgdHlwZWRlZiBQT0RUeXBlIChTVkdQT0RMaXN0
SXRlbTxQT0RUeXBlPjo6KkdldHRlck1ldGhvZCkoKSBjb25zdDsgCisgICAgdHlwZWRlZiB2b2lk
IChTVkdQT0RMaXN0SXRlbTxQT0RUeXBlPjo6KlNldHRlck1ldGhvZCkoUE9EVHlwZSk7CisKKyAg
ICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3QoU1ZHUE9ETGlzdEl0ZW08UE9EVHlw
ZT4qIGNyZWF0b3IsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAg
IDogbV9jcmVhdG9yKGNyZWF0b3IpCisgICAgICAgICwgbV9nZXR0ZXIoJlNWR1BPRExpc3RJdGVt
PFBPRFR5cGU+Ojp2YWx1ZSkKKyAgICAgICAgLCBtX3NldHRlcigmU1ZHUE9ETGlzdEl0ZW08UE9E
VHlwZT46OnNldFZhbHVlKQorICAgICAgICAsIG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoYXR0
cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NyZWF0b3IpOworICAgICAgICBB
U1NFUlQobV9nZXR0ZXIpOworICAgICAgICBBU1NFUlQobV9zZXR0ZXIpOworICAgIH0KIAogICAg
IHZpcnR1YWwgfkpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdCgpIHsgfQorCisgICAg
Ly8gR2V0dGVyIHdyYXBwZXIKKyAgICB2aXJ0dWFsIG9wZXJhdG9yIFBPRFR5cGUoKSB7IHJldHVy
biAobV9jcmVhdG9yLmdldCgpLT4qbV9nZXR0ZXIpKCk7IH0KKworICAgIC8vIFNldHRlciB3cmFw
cGVyCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENoYW5nZShQT0RUeXBlIHR5cGUsIFNWR0VsZW1l
bnQqIGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIW1fc2V0dGVyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIChtX2NyZWF0b3IuZ2V0KCktPiptX3NldHRlcikodHlwZSk7CisK
KyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICBjb250ZXh0LT5zdmdBdHRyaWJ1dGVD
aGFuZ2VkKG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICAvLyBVcGRhdGUgY2FsbGJhY2tzCisgICAgUmVmUHRyPFNWR1BPRExpc3RJdGVtPFBPRFR5cGU+
ID4gbV9jcmVhdG9yOworICAgIEdldHRlck1ldGhvZCBtX2dldHRlcjsKKyAgICBTZXR0ZXJNZXRo
b2QgbV9zZXR0ZXI7CisgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbV9hc3NvY2lhdGVkQXR0cmli
dXRlTmFtZTsKIH07CiAKIC8vIENhY2hpbmcgZmFjaWxpdGllcwpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NWR1BhdGhTZWdMaXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1ZHUGF0aFNlZ0xpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAyOTk1MCkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdQYXRoU2VnTGlzdEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC00Myw3ICs0Myw4IEBAIEpTVmFsdWUqIEpTU1ZHUGF0
aFNlZ0xpc3Q6OmNsZWFyKEV4ZWNTdGEKICAgICBpbXAtPmNsZWFyKGVjKTsKIAogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFu
Z2UoKTsKKworICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0
ZWRBdHRyaWJ1dGVOYW1lKCkpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC01
OSw3ICs2MCw3IEBAIEpTVmFsdWUqIEpTU1ZHUGF0aFNlZ0xpc3Q6OmluaXRpYWxpemUoRXgKICAg
ICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkp
OwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlm
eUF0dHJpYnV0ZUNoYW5nZSgpOyAgICAKKyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtOTksNyArMTAwLDcgQEAgSlNWYWx1ZSogSlNTVkdQYXRoU2VnTGlzdDo6aW5z
ZXJ0SXRlbUJlZgogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBXVEY6Omdl
dFB0cihpbXAtPmluc2VydEl0ZW1CZWZvcmUobmV3SXRlbSwgaW5kZXgsIGVjKSksIG1fY29udGV4
dC5nZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAotICAgIG1fY29udGV4
dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7ICAgIAorICAgIG1fY29udGV4dC0+c3ZnQXR0cmli
dXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOyAgICAKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC0xMjAsNyArMTIxLDcgQEAgSlNWYWx1ZSogSlNTVkdQYXRoU2Vn
TGlzdDo6cmVwbGFjZUl0ZW0oRQogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVj
LCBXVEY6OmdldFB0cihpbXAtPnJlcGxhY2VJdGVtKG5ld0l0ZW0sIGluZGV4LCBlYykpLCBtX2Nv
bnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2Nv
bnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOyAgICAKKyAgICBtX2NvbnRleHQtPnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsgICAgCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTQyLDcgKzE0Myw3IEBAIEpTVmFsdWUqIEpTU1ZHUGF0
aFNlZ0xpc3Q6OnJlbW92ZUl0ZW0oRXgKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMo
ZXhlYywgb2JqLmdldCgpLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOyAgICAK
KyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmli
dXRlTmFtZSgpKTsgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTU2LDEyICsxNTcs
MTAgQEAgSlNWYWx1ZSogSlNTVkdQYXRoU2VnTGlzdDo6YXBwZW5kSXRlbShFeAogICAgIEtKUzo6
SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBXVEY6OmdldFB0cihpbXAtPmFwcGVuZEl0ZW0o
bmV3SXRlbSwgZWMpKSwgbV9jb250ZXh0LmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOwogCi0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsgICAgCisg
ICAgbV9jb250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0
ZU5hbWUoKSk7ICAgIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNTVkdQb2ludExpc3RDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNTVkdQb2ludExpc3RDdXN0b20uY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNTVkdQb2ludExpc3RDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNDMsNyArNDMsNyBAQCBKU1ZhbHVlKiBKU1NWR1BvaW50TGlzdDo6Y2xlYXIo
RXhlY1N0YXRlCiAgICAgaW1wLT5jbGVhcihlYyk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKIAotICAgIG1fY29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CisgICAgbV9j
b250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUo
KSk7CiAKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTU3LDEyICs1NywxMiBAQCBK
U1ZhbHVlKiBKU1NWR1BvaW50TGlzdDo6aW5pdGlhbGl6ZShFeGVjCiAgICAgU1ZHTGlzdDxSZWZQ
dHI8U1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4gPiA+KiBsaXN0SW1wID0gaW1wOwogCiAgICAg
U1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4qIGxpc3RJdGVtID0gbGlzdEltcC0+aW5pdGlhbGl6
ZShuZXcgU1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4obmV3SXRlbSksIGVjKS5nZXQoKTsgCi0g
ICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KiBvYmogPSBu
ZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KGxpc3RJdGVt
KTsKKyAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4qIG9i
aiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4obGlz
dEl0ZW0sIGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6OkpTVmFs
dWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNo
YW5nZSgpOworICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0
ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTgyLDcgKzgy
LDcgQEAgSlNWYWx1ZSogSlNTVkdQb2ludExpc3Q6OmdldEl0ZW0oRXhlY1N0YQogICAgIFNWR0xp
c3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEZsb2F0UG9pbnQ+ID4gPiogbGlzdEltcCA9IGltcDsK
IAogICAgIFNWR1BPRExpc3RJdGVtPEZsb2F0UG9pbnQ+KiBsaXN0SXRlbSA9IGxpc3RJbXAtPmdl
dEl0ZW0oaW5kZXgsIGVjKS5nZXQoKTsKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZv
ckxpc3Q8RmxvYXRQb2ludD4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZv
ckxpc3Q8RmxvYXRQb2ludD4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yRm9yTGlzdDxGbG9hdFBvaW50Piogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yRm9yTGlzdDxGbG9hdFBvaW50PihsaXN0SXRlbSwgaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRl
TmFtZSgpKTsKIAogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1f
Y29udGV4dC5nZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKQEAgLTEwNSwx
MiArMTA1LDEyIEBAIEpTVmFsdWUqIEpTU1ZHUG9pbnRMaXN0OjppbnNlcnRJdGVtQmVmb3IKICAg
ICBTVkdMaXN0PFJlZlB0cjxTVkdQT0RMaXN0SXRlbTxGbG9hdFBvaW50PiA+ID4qIGxpc3RJbXAg
PSBpbXA7CiAKICAgICBTVkdQT0RMaXN0SXRlbTxGbG9hdFBvaW50PiogbGlzdEl0ZW0gPSBsaXN0
SW1wLT5pbnNlcnRJdGVtQmVmb3JlKG5ldyBTVkdQT0RMaXN0SXRlbTxGbG9hdFBvaW50PihuZXdJ
dGVtKSwgaW5kZXgsIGVjKS5nZXQoKTsKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZv
ckxpc3Q8RmxvYXRQb2ludD4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZv
ckxpc3Q8RmxvYXRQb2ludD4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yRm9yTGlzdDxGbG9hdFBvaW50Piogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yRm9yTGlzdDxGbG9hdFBvaW50PihsaXN0SXRlbSwgaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRl
TmFtZSgpKTsKIAogICAgIEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1f
Y29udGV4dC5nZXQoKSk7CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAotICAgIG1f
Y29udGV4dC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CisgICAgbV9jb250ZXh0LT5zdmdBdHRy
aWJ1dGVDaGFuZ2VkKGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtMTMxLDEyICsxMzEsMTIgQEAgSlNWYWx1ZSogSlNTVkdQb2ludExp
c3Q6OnJlcGxhY2VJdGVtKEV4ZQogICAgIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEZs
b2F0UG9pbnQ+ID4gPiogbGlzdEltcCA9IGltcDsKIAogICAgIFNWR1BPRExpc3RJdGVtPEZsb2F0
UG9pbnQ+KiBsaXN0SXRlbSA9IGxpc3RJbXAtPnJlcGxhY2VJdGVtKG5ldyBTVkdQT0RMaXN0SXRl
bTxGbG9hdFBvaW50PihuZXdJdGVtKSwgaW5kZXgsIGVjKS5nZXQoKTsgCi0gICAgSlNTVkdQT0RU
eXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KiBvYmogPSBuZXcgSlNTVkdQT0RU
eXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KGxpc3RJdGVtKTsKKyAgICBKU1NW
R1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4qIG9iaiA9IG5ldyBKU1NW
R1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2ludD4obGlzdEl0ZW0sIGltcC0+
YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9
IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOworICAg
IG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVO
YW1lKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBKU1Zh
bHVlKiBKU1NWR1BvaW50TGlzdDo6cmVtb3ZlSXRlbShFeGVjCiAgICAgS0pTOjpKU1ZhbHVlKiBy
ZXN1bHQgPSB0b0pTKGV4ZWMsIG9iaiwgbV9jb250ZXh0LmdldCgpKTsKICAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOwogCi0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2Uo
KTsKKyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0
cmlidXRlTmFtZSgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNzUsMTIgKzE3NSwx
MiBAQCBKU1ZhbHVlKiBKU1NWR1BvaW50TGlzdDo6YXBwZW5kSXRlbShFeGVjCiAgICAgU1ZHTGlz
dDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4gPiA+KiBsaXN0SW1wID0gaW1wOwog
CiAgICAgU1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4qIGxpc3RJdGVtID0gbGlzdEltcC0+YXBw
ZW5kSXRlbShuZXcgU1ZHUE9ETGlzdEl0ZW08RmxvYXRQb2ludD4obmV3SXRlbSksIGVjKS5nZXQo
KTsgCi0gICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KiBv
YmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PEZsb2F0UG9pbnQ+KGxp
c3RJdGVtKTsKKyAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2lu
dD4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8RmxvYXRQb2lu
dD4obGlzdEl0ZW0sIGltcC0+YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6
OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJp
YnV0ZUNoYW5nZSgpOworICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFz
c29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE4
OCw1ICsxODgsMyBAQCBKU1ZhbHVlKiBKU1NWR1BvaW50TGlzdDo6YXBwZW5kSXRlbShFeGVjCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1ZHVHJhbnNmb3JtTGlzdEN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR1RyYW5zZm9ybUxpc3RDdXN0b20uY3BwCShyZXZp
c2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdUcmFuc2Zvcm1MaXN0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQzLDcgKzQzLDcgQEAgSlNWYWx1ZSogSlNTVkdU
cmFuc2Zvcm1MaXN0OjpjbGVhcihFeGVjUwogICAgIGltcC0+Y2xlYXIoZWMpOwogICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNo
YW5nZSgpOworICAgIG1fY29udGV4dC0+c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0
ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CkBAIC01
NywxMiArNTcsMTIgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1MaXN0Ojppbml0aWFsaXplKAog
ICAgIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPFNWR1RyYW5zZm9ybT4gPiA+KiBsaXN0
SW1wID0gaW1wOwogCiAgICAgU1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3JtPiogbGlzdEl0ZW0g
PSBsaXN0SW1wLT5pbml0aWFsaXplKG5ldyBTVkdQT0RMaXN0SXRlbTxTVkdUcmFuc2Zvcm0+KG5l
d0l0ZW0pLCBlYykuZ2V0KCk7IAotICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlz
dDxTVkdUcmFuc2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JM
aXN0PFNWR1RyYW5zZm9ybT4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVh
dG9yRm9yTGlzdDxTVkdUcmFuc2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNy
ZWF0b3JGb3JMaXN0PFNWR1RyYW5zZm9ybT4obGlzdEl0ZW0sIGltcC0+YXNzb2NpYXRlZEF0dHJp
YnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywgb2Jq
LCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAg
ICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOworICAgIG1fY29udGV4dC0+c3Zn
QXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KQEAgLTgyLDcgKzgyLDcgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zv
cm1MaXN0OjpnZXRJdGVtKEV4ZQogICAgIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPFNW
R1RyYW5zZm9ybT4gPiA+KiBsaXN0SW1wID0gaW1wOwogCiAgICAgU1ZHUE9ETGlzdEl0ZW08U1ZH
VHJhbnNmb3JtPiogbGlzdEl0ZW0gPSBsaXN0SW1wLT5nZXRJdGVtKGluZGV4LCBlYykuZ2V0KCk7
Ci0gICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PFNWR1RyYW5zZm9ybT4qIG9i
aiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3JtPihs
aXN0SXRlbSk7CisgICAgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JGb3JMaXN0PFNWR1RyYW5z
Zm9ybT4qIG9iaiA9IG5ldyBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJh
bnNmb3JtPihsaXN0SXRlbSwgaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsKIAogICAg
IEtKUzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1fY29udGV4dC5nZXQoKSk7
CiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKQEAgLTEwNSwxMiArMTA1LDEyIEBAIEpT
VmFsdWUqIEpTU1ZHVHJhbnNmb3JtTGlzdDo6aW5zZXJ0SXRlbUIKICAgICBTVkdMaXN0PFJlZlB0
cjxTVkdQT0RMaXN0SXRlbTxTVkdUcmFuc2Zvcm0+ID4gPiogbGlzdEltcCA9IGltcDsKIAogICAg
IFNWR1BPRExpc3RJdGVtPFNWR1RyYW5zZm9ybT4qIGxpc3RJdGVtID0gbGlzdEltcC0+aW5zZXJ0
SXRlbUJlZm9yZShuZXcgU1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3JtPihuZXdJdGVtKSwgaW5k
ZXgsIGVjKS5nZXQoKTsKLSAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZH
VHJhbnNmb3JtPiogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxT
VkdUcmFuc2Zvcm0+KGxpc3RJdGVtKTsKKyAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZv
ckxpc3Q8U1ZHVHJhbnNmb3JtPiogb2JqID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9y
Rm9yTGlzdDxTVkdUcmFuc2Zvcm0+KGxpc3RJdGVtLCBpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVO
YW1lKCkpOwogCiAgICAgS0pTOjpKU1ZhbHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIG9iaiwgbV9j
b250ZXh0LmdldCgpKTsKICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwogCi0gICAgbV9j
b250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKKyAgICBtX2NvbnRleHQtPnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0xMzEsMTIgKzEzMSwxMiBAQCBKU1ZhbHVlKiBKU1NWR1RyYW5zZm9y
bUxpc3Q6OnJlcGxhY2VJdGVtCiAgICAgU1ZHTGlzdDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08U1ZH
VHJhbnNmb3JtPiA+ID4qIGxpc3RJbXAgPSBpbXA7CiAKICAgICBTVkdQT0RMaXN0SXRlbTxTVkdU
cmFuc2Zvcm0+KiBsaXN0SXRlbSA9IGxpc3RJbXAtPnJlcGxhY2VJdGVtKG5ldyBTVkdQT0RMaXN0
SXRlbTxTVkdUcmFuc2Zvcm0+KG5ld0l0ZW0pLCBpbmRleCwgZWMpLmdldCgpOyAKLSAgICBKU1NW
R1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3JtPiogb2JqID0gbmV3IEpT
U1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxTVkdUcmFuc2Zvcm0+KGxpc3RJdGVtKTsK
KyAgICBKU1NWR1BPRFR5cGVXcmFwcGVyQ3JlYXRvckZvckxpc3Q8U1ZHVHJhbnNmb3JtPiogb2Jq
ID0gbmV3IEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9yTGlzdDxTVkdUcmFuc2Zvcm0+KGxp
c3RJdGVtLCBpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAgICAgS0pTOjpKU1Zh
bHVlKiByZXN1bHQgPSB0b0pTKGV4ZWMsIG9iaiwgbV9jb250ZXh0LmdldCgpKTsKICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOwogCi0gICAgbV9jb250ZXh0LT5ub3RpZnlBdHRyaWJ1dGVD
aGFuZ2UoKTsKKyAgICBtX2NvbnRleHQtPnN2Z0F0dHJpYnV0ZUNoYW5nZWQoaW1wLT5hc3NvY2lh
dGVkQXR0cmlidXRlTmFtZSgpKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xNjEsNyAr
MTYxLDcgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1MaXN0OjpyZW1vdmVJdGVtKAogICAgIEtK
Uzo6SlNWYWx1ZSogcmVzdWx0ID0gdG9KUyhleGVjLCBvYmosIG1fY29udGV4dC5nZXQoKSk7CiAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKIAotICAgIG1fY29udGV4dC0+bm90aWZ5QXR0
cmlidXRlQ2hhbmdlKCk7CisgICAgbV9jb250ZXh0LT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcC0+
YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
MTc1LDEyICsxNzUsMTIgQEAgSlNWYWx1ZSogSlNTVkdUcmFuc2Zvcm1MaXN0OjphcHBlbmRJdGVt
KAogICAgIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPFNWR1RyYW5zZm9ybT4gPiA+KiBs
aXN0SW1wID0gaW1wOwogCiAgICAgU1ZHUE9ETGlzdEl0ZW08U1ZHVHJhbnNmb3JtPiogbGlzdEl0
ZW0gPSBsaXN0SW1wLT5hcHBlbmRJdGVtKG5ldyBTVkdQT0RMaXN0SXRlbTxTVkdUcmFuc2Zvcm0+
KG5ld0l0ZW0pLCBlYykuZ2V0KCk7IAotICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJDcmVhdG9yRm9y
TGlzdDxTVkdUcmFuc2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBlckNyZWF0b3JG
b3JMaXN0PFNWR1RyYW5zZm9ybT4obGlzdEl0ZW0pOworICAgIEpTU1ZHUE9EVHlwZVdyYXBwZXJD
cmVhdG9yRm9yTGlzdDxTVkdUcmFuc2Zvcm0+KiBvYmogPSBuZXcgSlNTVkdQT0RUeXBlV3JhcHBl
ckNyZWF0b3JGb3JMaXN0PFNWR1RyYW5zZm9ybT4obGlzdEl0ZW0sIGltcC0+YXNzb2NpYXRlZEF0
dHJpYnV0ZU5hbWUoKSk7CiAKICAgICBLSlM6OkpTVmFsdWUqIHJlc3VsdCA9IHRvSlMoZXhlYywg
b2JqLCBtX2NvbnRleHQuZ2V0KCkpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAK
LSAgICBtX2NvbnRleHQtPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOworICAgIG1fY29udGV4dC0+
c3ZnQXR0cmlidXRlQ2hhbmdlZChpbXAtPmFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkpOwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE4OCw1ICsxODgsMyBAQCBKU1ZhbHVlKiBKU1NWR1Ry
YW5zZm9ybUxpc3Q6OmFwcGVuZEl0ZW0oCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0v
LyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0JKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw3ICsxMDI3LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBpbXAuc2V0JHNldHRlckZ1bmN0aW9uTmFtZSgiIC4gSlNWYWx1
ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIikgLiAiKTtcbiIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZShl
eGVjLCBpbXApO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBtX2ltcGwtPmNvbW1pdENoYW5nZShpbXAsIGNvbnRleHQoKSk7
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJGltcGxDbGFz
c05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oaW1wbCgpKTtcbiIpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2Vw
dGlvbnN9OwpAQCAtMTAzNSw2ICsxMDM1LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLCBl
YyIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiKTtcbiIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIGVjKTtcbiIpIGlmIEB7JGF0dHJpYnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKElzU1ZHVHlwZU5lZWRpbmdD
b250ZXh0UGFyYW1ldGVyKCRpbXBsQ2xhc3NOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChjb250ZXh0KCkp
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICAgICAgY29udGV4dCgpLT5zdmdBdHRyaWJ1dGVDaGFuZ2VkKGltcGwoKS0+
YXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBicmVhaztcbiIpOwpAQCAtMTA0MiwxMiArMTA0Nyw2IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7ICMgZW5kIHN3aXRj
aAotCi0gICAgICAgICAgICAgICAgaWYgKElzU1ZHVHlwZU5lZWRpbmdDb250ZXh0UGFyYW1ldGVy
KCRpbXBsQ2xhc3NOYW1lKSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoY29udGV4dCgpKVxuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBjb250ZXh0KCktPm5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOyAjIGVuZCBmdW5jdGlvbgogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0xMjQ3LDkgKzEyNDYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2Fs
bCgpCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlv
bihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAKICAg
ICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGlu
ZGVudCAuICJ3cmFwcGVyLT5jb21taXRDaGFuZ2UoZXhlYywgaW1wKTtcbiIpOwotICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYgKGNhc3RlZFRoaXNPYmotPmNvbnRl
eHQoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAg
IGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKS0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7XG4iKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIndyYXBwZXItPmNvbW1p
dENoYW5nZShpbXAsIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKSk7XG4iKTsKICAgICAgICAgfQog
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInJldHVybiBqc1VuZGVmaW5l
ZCgpO1xuIik7CkBAIC0xMjU4LDkgKzEyNTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bkZ1bmN0aW9uQ2FsbCgpCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0
aW9uc307CiAKICAgICAgICAgaWYgKCRwb2RUeXBlKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGluZGVudCAuICJ3cmFwcGVyLT5jb21taXRDaGFuZ2UoZXhlYywgaW1wKTtcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYgKGNhc3RlZFRo
aXNPYmotPmNvbnRleHQoKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRp
bmRlbnQgLiAiICAgIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKS0+bm90aWZ5QXR0cmlidXRlQ2hh
bmdlKCk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIndy
YXBwZXItPmNvbW1pdENoYW5nZShpbXAsIGNhc3RlZFRoaXNPYmotPmNvbnRleHQoKSk7XG4iKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInJldHVy
biByZXN1bHQ7XG4iKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0dyYWRpZW50
U3RvcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHR3JhZGll
bnRTdG9wLmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdHcmFkaWVudFN0b3AuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiUmVuZGVyU1ZH
R3JhZGllbnRTdG9wLmgiCiAKICNpbmNsdWRlICJTVkdHcmFkaWVudEVsZW1lbnQuaCIKQEAgLTQ2
LDEyICs0NSwxMyBAQCBSZW5kZXJTVkdHcmFkaWVudFN0b3A6On5SZW5kZXJTVkdHcmFkaWVuCiB2
b2lkIFJlbmRlclNWR0dyYWRpZW50U3RvcDo6c2V0U3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlKQog
ewogICAgIFJlbmRlck9iamVjdDo6c2V0U3R5bGUoc3R5bGUpOwotICAgIFNWR0dyYWRpZW50RWxl
bWVudCogZ3JhZGllbnQgPSBncmFkaWVudEVsZW1lbnQoKTsKKwogICAgIC8vIDxzdG9wPiBlbGVt
ZW50cyBzaG91bGQgb25seSBiZSBhbGxvd2VkIHRvIG1ha2UgcmVuZGVyZXJzIHVuZGVyIGdyYWRp
ZW50IGVsZW1lbnRzCiAgICAgLy8gYnV0IEkgY2FuIGltYWdpbmUgYSBmZXcgY2FzZXMgd2UgbWln
aHQgbm90IGJlIGNhdGNoaW5nLCBzbyBsZXQncyBub3QgY3Jhc2ggaWYgb3VyIHBhcmVudCBpc24n
dCBhIGdyYWRpZW50LgotICAgIEFTU0VSVChncmFkaWVudCk7Ci0gICAgaWYgKGdyYWRpZW50KQot
ICAgICAgICBncmFkaWVudC0+bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CisgICAgaWYgKFNWR0dy
YWRpZW50RWxlbWVudCogZ3JhZGllbnQgPSBncmFkaWVudEVsZW1lbnQoKSkgeworICAgICAgICBp
ZiAoU1ZHUmVzb3VyY2UqIHJlc291cmNlID0gZ3JhZGllbnQtPmNhbnZhc1Jlc291cmNlKCkpCisg
ICAgICAgICAgICByZXNvdXJjZS0+aW52YWxpZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBSZW5k
ZXJTVkdHcmFkaWVudFN0b3A6OmxheW91dCgpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdHcmFkaWVudFN0b3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdHcmFkaWVudFN0b3AuaAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBA
QAogI2RlZmluZSBSZW5kZXJTVkdHcmFkaWVudFN0b3BfaAogCiAjaWYgRU5BQkxFKFNWRykKLQog
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMiw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdHcmFkaWVudEVsZW1l
bnQ7CiAgICAgY2xhc3MgU1ZHU3RvcEVsZW1lbnQ7CiAgICAgCi0gICAgLy8gVGhpcyBjbGFzcyBl
eGlzdHMgbW9zdGx5IHNvIHdlIGNhbiBoZXJlIGFib3V0IGdyYWRpZW50IHN0b3Agc3R5bGUgY2hh
bmdlcworICAgIC8vIFRoaXMgY2xhc3MgZXhpc3RzIG1vc3RseSBzbyB3ZSBjYW4gaGVhciBhYm91
dCBncmFkaWVudCBzdG9wIHN0eWxlIGNoYW5nZXMKICAgICBjbGFzcyBSZW5kZXJTVkdHcmFkaWVu
dFN0b3AgOiBwdWJsaWMgUmVuZGVyT2JqZWN0IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlbmRl
clNWR0dyYWRpZW50U3RvcChTVkdTdG9wRWxlbWVudCopOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
QUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmNwcAko
cmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAK
QEAgLTY1LDcgKzY1LDcgQEAgU3RyaW5nIFNWR0FFbGVtZW50Ojp0aXRsZSgpIGNvbnN0CiAgICAg
cmV0dXJuIGdldEF0dHJpYnV0ZShYTGlua05hbWVzOjp0aXRsZUF0dHIpOwogfQogCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdBRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmlu
ZywgVGFyZ2V0LCB0YXJnZXQsIFNWR05hbWVzOjp0YXJnZXRBdHRyLmxvY2FsTmFtZSgpLCBtX3Rh
cmdldCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0FFbGVtZW50LCBTdHJpbmcs
IFN0cmluZywgc3RyaW5nLCBUYXJnZXQsIHRhcmdldCwgU1ZHTmFtZXM6OnRhcmdldEF0dHIsIG1f
dGFyZ2V0KQogCiB2b2lkIFNWR0FFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC0xMjQsMTEgKzEyNCwxMCBAQCB2b2lkIFNWR0FFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFN0
cmluZyB0YXJnZXQgPSBnZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnRhcmdldEF0dHIpOwotICAgICAg
ICBTdHJpbmcgeGxpbmt0YXJnZXQgPSBnZXRBdHRyaWJ1dGUoWExpbmtOYW1lczo6c2hvd0F0dHIp
OwogICAgICAgICBpZiAoZSAmJiBlLT5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24pCiAgICAgICAg
ICAgICB0YXJnZXQgPSAiX2JsYW5rIjsKICAgICAgICAgZWxzZSBpZiAodGFyZ2V0LmlzRW1wdHko
KSkgLy8gaWYgdGFyZ2V0IGlzIGVtcHR5LCBkZWZhdWx0IHRvICJfc2VsZiIgb3IgdXNlIHhsaW5r
OnRhcmdldCBpZiBzZXQKLSAgICAgICAgICAgIHRhcmdldCA9ICh4bGlua3RhcmdldCA9PSAibmV3
IikgPyAiX2JsYW5rIiA6ICJfc2VsZiI7CisgICAgICAgICAgICB0YXJnZXQgPSAoZ2V0QXR0cmli
dXRlKFhMaW5rTmFtZXM6OnNob3dBdHRyKSA9PSAibmV3IikgPyAiX2JsYW5rIiA6ICJfc2VsZiI7
CiAKICAgICAgICAgU3RyaW5nIHVybCA9IHBhcnNlVVJMKGhyZWYoKSk7CiAgICAgICAgIGlmICgh
ZXZ0LT5kZWZhdWx0UHJldmVudGVkKCkpCkBAIC0xODgsNSArMTg3LDQgQEAgYm9vbCBTVkdBRWxl
bWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBRWxlbWVudC5o
CShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBO
aWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAg
ICAgICAgICAgICAgICAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAKQEAgLTIz
LDggKzIzLDggQEAKIAogI2lmbmRlZiBTVkdBRWxlbWVudF9oCiAjZGVmaW5lIFNWR0FFbGVtZW50
X2gKLSNpZiBFTkFCTEUoU1ZHKQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5j
bHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKQEAgLTc1LDUgKzc1LDMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBT
VkdBRWxlbWVudF9oCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Fu
Z2xlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAJKHJldmlzaW9u
IDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0xNzMs
NSArMTczLDMgQEAgZG91YmxlIFNWR0FuZ2xlOjpzaG9ydGVzdEFyY0Jpc2VjdG9yKGRvdQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHQW5nbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCShy
ZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAg
LTI0LDggKzI0LDggQEAKICNkZWZpbmUgU1ZHQW5nbGVfaAogCiAjaWYgRU5BQkxFKFNWRykKLQog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NSw2ICs2NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgLy8gUmV0dXJucyB0aGUgYW5nbGUgdGhhdCBkaXZpZGVzIHRoZSBzaG9ydGVzdCBh
cmMgYmV0d2VlbiB0aGUgdHdvIGFuZ2xlcy4KICAgICAgICAgc3RhdGljIGRvdWJsZSBzaG9ydGVz
dEFyY0Jpc2VjdG9yKGRvdWJsZSBhbmdsZTEsIGRvdWJsZSBhbmdsZTIpOwogCisgICAgICAgIC8v
IFRocm91Z2hvdXQgU1ZHIDEuMSAnU1ZHQW5nbGUnIGlzIG9ubHkgdXNlZCBmb3IgJ1NWR01hcmtl
ckVsZW1lbnQnIChvcmllbnQtYW5nbGUpCisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGFz
c29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gU1ZHTmFtZXM6Om9yaWVudEF0
dHI7IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIFNWR0FuZ2xlVHlwZSBtX3VuaXRUeXBlOwog
ICAgICAgICBmbG9hdCBtX3ZhbHVlOwpAQCAtNzgsNSArODEsMyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFNWR0FuZ2xlX2gKLQotLy8g
dmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUZW1wbGF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVGVtcGxhdGUuaAkocmV2aXNpb24g
Mjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFRlbXBsYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5v
cmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDEx
ICsyNCwxMyBAQAogI2RlZmluZSBTVkdBbmltYXRlZFRlbXBsYXRlX2gKIAogI2lmIEVOQUJMRShT
VkcpCi0KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIkF0b21pY1N0cmlu
Zy5oIgorI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAgY2xhc3MgU1ZHQW5nbGU7CiAgICAgY2xhc3MgU1ZHRWxl
bWVudDsKICAgICBjbGFzcyBTVkdMZW5ndGg7CkBAIC0zNyw3ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOwogICAgIGNsYXNzIFNW
R1RyYW5zZm9ybUxpc3Q7CiAgICAgY2xhc3MgU3RyaW5nOwotICAgIGNsYXNzIEZsb2F0UmVjdDsK
KyAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwogCiAgICAgc3RydWN0IFNWR0FuaW1hdGVkVHlwZVdy
YXBwZXJLZXkgeyAgICAgICAgICAgIAogICAgICAgICAvLyBFbXB0eSB2YWx1ZQpAQCAtMTAzLDcg
KzEwNSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQmFy
ZVR5cGU+CiAgICAgY2xhc3MgU1ZHQW5pbWF0ZWRUZW1wbGF0ZSA6IHB1YmxpYyBSZWZDb3VudGVk
PFNWR0FuaW1hdGVkVGVtcGxhdGU8QmFyZVR5cGU+ID4KICAgICB7Ci0gICAgcHVibGljOiAgICAg
ICAgCisgICAgcHVibGljOgorICAgICAgICBTVkdBbmltYXRlZFRlbXBsYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgICAgICAgICA6IG1fYXNzb2NpYXRlZEF0dHJp
YnV0ZU5hbWUoYXR0cmlidXRlTmFtZSkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAg
dmlydHVhbCB+U1ZHQW5pbWF0ZWRUZW1wbGF0ZSgpIHsgZm9yZ2V0V3JhcHBlcih0aGlzKTsgfQog
CiAgICAgICAgIHZpcnR1YWwgQmFyZVR5cGUgYmFzZVZhbCgpIGNvbnN0ID0gMDsKQEAgLTExMSwx
MyArMTE4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIEJhcmVU
eXBlIGFuaW1WYWwoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltVmFs
KEJhcmVUeXBlIG5ld0FuaW1WYWwpID0gMDsKLSAgICAgICAgCisKICAgICAgICAgdHlwZWRlZiBI
YXNoTWFwPFNWR0FuaW1hdGVkVHlwZVdyYXBwZXJLZXksIFNWR0FuaW1hdGVkVGVtcGxhdGU8QmFy
ZVR5cGU+KiwgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleUhhc2gsIFNWR0FuaW1hdGVkVHlwZVdy
YXBwZXJLZXlIYXNoVHJhaXRzID4gRWxlbWVudFRvV3JhcHBlck1hcDsKICAgICAgICAgdHlwZWRl
ZiB0eXBlbmFtZSBFbGVtZW50VG9XcmFwcGVyTWFwOjpjb25zdF9pdGVyYXRvciBFbGVtZW50VG9X
cmFwcGVyTWFwSXRlcmF0b3I7Ci0gICAgICAgIAotICAgICAgICBzdGF0aWMgRWxlbWVudFRvV3Jh
cHBlck1hcCogd3JhcHBlckNhY2hlKCkgewotICAgICAgICAgICAgc3RhdGljIEVsZW1lbnRUb1dy
YXBwZXJNYXAqIHNXcmFwcGVyQ2FjaGUgPSBuZXcgRWxlbWVudFRvV3JhcHBlck1hcDsgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gc1dyYXBwZXJDYWNoZTsKKworICAgICAgICBz
dGF0aWMgRWxlbWVudFRvV3JhcHBlck1hcCogd3JhcHBlckNhY2hlKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIEVsZW1lbnRUb1dyYXBwZXJNYXAqIHNfd3JhcHBlckNhY2hlID0gbmV3
IEVsZW1lbnRUb1dyYXBwZXJNYXA7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJu
IHNfd3JhcHBlckNhY2hlOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgdm9p
ZCBmb3JnZXRXcmFwcGVyKFNWR0FuaW1hdGVkVGVtcGxhdGU8QmFyZVR5cGU+KiB3cmFwcGVyKQpA
QCAtMTMyLDE0ICsxNDAsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQorCisgICAgICAgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Fzc29jaWF0ZWRB
dHRyaWJ1dGVOYW1lOyB9CisKKyAgICBwcml2YXRlOgorCSAgIGNvbnN0IFF1YWxpZmllZE5hbWUm
IG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWU7CiAgICAgfTsKLSAgICAKKwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUeXBlLCBjbGFzcyBTVkdFbGVtZW50U3ViQ2xhc3M+Ci0gICAgVHlwZSogbG9va3Vw
T3JDcmVhdGVXcmFwcGVyKGNvbnN0IFNWR0VsZW1lbnRTdWJDbGFzcyogZWxlbWVudCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBhdHRyTmFtZSkgewotICAgICAgICBTVkdBbmltYXRlZFR5cGVXcmFwcGVy
S2V5IGtleShlbGVtZW50LCBhdHRyTmFtZSk7CisgICAgVHlwZSogbG9va3VwT3JDcmVhdGVXcmFw
cGVyKGNvbnN0IFNWR0VsZW1lbnRTdWJDbGFzcyogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgZG9tQXR0ck5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgYXR0cklkZW50aWZpZXIpIHsKKyAg
ICAgICAgU1ZHQW5pbWF0ZWRUeXBlV3JhcHBlcktleSBrZXkoZWxlbWVudCwgYXR0cklkZW50aWZp
ZXIpOwogICAgICAgICBUeXBlKiB3cmFwcGVyID0gc3RhdGljX2Nhc3Q8VHlwZSo+KFR5cGU6Ondy
YXBwZXJDYWNoZSgpLT5nZXQoa2V5KSk7CiAgICAgICAgIGlmICghd3JhcHBlcikgewotICAgICAg
ICAgICAgd3JhcHBlciA9IG5ldyBUeXBlKGVsZW1lbnQpOworICAgICAgICAgICAgd3JhcHBlciA9
IG5ldyBUeXBlKGVsZW1lbnQsIGRvbUF0dHJOYW1lKTsKICAgICAgICAgICAgIFR5cGU6OndyYXBw
ZXJDYWNoZSgpLT5zZXQoa2V5LCB3cmFwcGVyKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKQEAgLTE2Miw1ICsxNzUsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFNWR0FuaW1hdGVkVGVtcGxhdGVfaAotCi0vLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNp
b24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTY5LDcgKzE2OSw5IEBAIHN0YXRpYyB2b2lkIHBhcnNlS2V5U3BsaW5lcyhW
ZWN0b3I8U1ZHQW4KIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50OjpwYXJzZUJlZ2luT3JFbmRW
YWx1ZShkb3VibGUmIG51bWJlciwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWZQdHI8
U1ZHU3RyaW5nTGlzdD4gdmFsdWVMaXN0ID0gbmV3IFNWR1N0cmluZ0xpc3QoKTsKKyAgICAvLyBU
T0RPOiBEb24ndCB1c2UgU1ZHU3RyaW5nTGlzdCBmb3IgcGFyc2luZy4KKyAgICBBdG9taWNTdHJp
bmcgZHVtbXk7CisgICAgUmVmUHRyPFNWR1N0cmluZ0xpc3Q+IHZhbHVlTGlzdCA9IG5ldyBTVkdT
dHJpbmdMaXN0KFF1YWxpZmllZE5hbWUoZHVtbXksIGR1bW15LCBkdW1teSkpOwogICAgIHZhbHVl
TGlzdC0+cGFyc2UodmFsdWUsICc7Jyk7CiAgICAgCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJD
b3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtNDYsOSAr
NDYsOSBAQCBTVkdDaXJjbGVFbGVtZW50Ojp+U1ZHQ2lyY2xlRWxlbWVudCgpCiB7CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIEN4LCBjeCwgU1ZHTmFtZXM6OmN4QXR0ci5sb2NhbE5hbWUoKSwgbV9j
eCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ci5sb2NhbE5hbWUo
KSwgbV9jeSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NpcmNsZUVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFIsIHIsIFNWR05hbWVzOjpyQXR0ci5sb2NhbE5h
bWUoKSwgbV9yKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLCBt
X2N4KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5LCBTVkdOYW1lczo6Y3lBdHRyLCBtX2N5KQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgUiwgciwgU1ZHTmFtZXM6OnJBdHRyLCBtX3IpCiAKIHZvaWQgU1ZH
Q2lyY2xlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRy
KQogewpAQCAtNzEsMTIgKzcxLDIwIEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWIKICAgICB9CiB9CiAKLXZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6bm90aWZ5QXR0cmli
dXRlQ2hhbmdlKCkgY29uc3QKK3ZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoIWRvY3VtZW50
KCktPnBhcnNpbmcoKSAmJiByZW5kZXJlcigpKQotICAgICAgICByZW5kZXJlcigpLT5zZXROZWVk
c0xheW91dCh0cnVlKTsKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisKKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAg
IHJldHVybjsKIAotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpub3RpZnlBdHRy
aWJ1dGVDaGFuZ2UoKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjp5QXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyIHx8CisgICAg
ICAgIFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdM
YW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAg
ICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKIFBh
dGggU1ZHQ2lyY2xlRWxlbWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CkBAIC05Miw1ICsxMDAsMyBA
QCBib29sIFNWR0NpcmNsZUVsZW1lbnQ6Omhhc1JlbGF0aXZlVmFsdWVzCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdD
aXJjbGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVu
dC5oCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBL
REUgcHJvamVjdApAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSBTVkdDaXJjbGVFbGVtZW50X2gK
IAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQuaCIKQEAgLTQwLDEyICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQ2lyY2xlRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHQ2lyY2xlRWxlbWVudCgpOwot
ICAgICAgICAKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJu
IFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgICAgICAvLyAnU1ZHQ2lyY2xlRWxlbWVudCcg
ZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUqIGF0dHIpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5QXR0cmlidXRl
Q2hhbmdlKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0
ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1Bh
dGhEYXRhKCkgY29uc3Q7CiAKQEAgLTY1LDUgKzYzLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHQ2lyY2xlRWxlbWVudF9oCi0KLS8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAkocmV2aXNp
b24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CkBAIC00Niw3ICs0Niw3IEBAIFNWR0NsaXBQYXRoRWxlbWVudDo6flNWR0NsaXBQ
YXRoRWxlbWVudCgKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ2xp
cFBhdGhFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgQ2xpcFBhdGhVbml0
cywgY2xpcFBhdGhVbml0cywgU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyLmxvY2FsTmFtZSgp
LCBtX2NsaXBQYXRoVW5pdHMpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDbGlw
UGF0aEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBDbGlwUGF0aFVuaXRz
LCBjbGlwUGF0aFVuaXRzLCBTVkdOYW1lczo6Y2xpcFBhdGhVbml0c0F0dHIsIG1fY2xpcFBhdGhV
bml0cykKIAogdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKQEAgLTY2LDYgKzY2LDMxIEBAIHZvaWQgU1ZHQ2xpcFBh
dGhFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHIKICAgICB9CiB9CiAKK3ZvaWQgU1ZHQ2xpcFBhdGhF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghbV9jbGlwcGVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmNsaXBQYXRoVW5pdHNBdHRyIHx8CisgICAg
ICAgIFNWR1Rlc3RzOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCAKKyAgICAgICAgU1ZH
TGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAg
ICAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpCisgICAgICAgIG1fY2xpcHBlci0+aW52YWxpZGF0ZSgpOworfQorCit2b2lkIFNWR0Ns
aXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAoIW1fY2xpcHBlcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGlwcGVyLT5pbnZhbGlkYXRlKCk7Cit9CisKIFNW
R1Jlc291cmNlKiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKCkKIHsKICAgICBp
ZiAoIW1fY2xpcHBlcikKQEAgLTg4LDcgKzExMyw3IEBAIFNWR1Jlc291cmNlKiBTVkdDbGlwUGF0
aEVsZW1lbnQ6OmNhbnZhc1IKICAgICAgICAgICAgIHBhdGhTdHlsZS0+ZGVyZWYoZG9jdW1lbnQo
KS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKG1fY2xpcHBlci0+
Y2xpcERhdGEoKS5pc0VtcHR5KCkgKSB7CisgICAgaWYgKG1fY2xpcHBlci0+Y2xpcERhdGEoKS5p
c0VtcHR5KCkpIHsKICAgICAgICAgUGF0aCBwYXRoRGF0YTsKICAgICAgICAgcGF0aERhdGEuYWRk
UmVjdChGbG9hdFJlY3QoKSk7CiAgICAgICAgIG1fY2xpcHBlci0+YWRkQ2xpcERhdGEocGF0aERh
dGEsIFJVTEVfRVZFTk9ERCwgYmJveCk7CkBAIC05NywxNyArMTIyLDYgQEAgU1ZHUmVzb3VyY2Uq
IFNWR0NsaXBQYXRoRWxlbWVudDo6Y2FudmFzUgogICAgIHJldHVybiBtX2NsaXBwZXIuZ2V0KCk7
CiB9CiAKLXZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBj
b25zdAotewotICAgIGlmICghbV9jbGlwcGVyIHx8ICFhdHRhY2hlZCgpIHx8IGRvY3VtZW50KCkt
PnBhcnNpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGlwcGVyLT5pbnZhbGlkYXRl
KCk7Ci0gICAgbV9jbGlwcGVyLT5yZXBhaW50Q2xpZW50cygpOwotfQotCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdD
bGlwUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVs
ZW1lbnQuaAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgcHJvamVjdApAQCAtMjQsMTUgKzI0LDE0IEBACiAjZGVmaW5lIFNWR0NsaXBQYXRo
RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VDbGlw
cGVyLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1
ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR0NsaXBQYXRoRWxlbWVudCA6IHB1Ymxp
YyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0xhbmdTcGFjZSwKQEAgLTQxLDE2ICs0MCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHQ2xpcFBhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdDbGlwUGF0aEVsZW1lbnQo
KTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIHZpcnR1YWwgU1ZHUmVzb3VyY2Uq
IGNhbnZhc1Jlc291cmNlKCk7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgcmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAg
Ly8gJ1NWR0NsaXBQYXRoRWxlbWVudCcgZnVuY3Rpb25zCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1
YWwgU1ZHUmVzb3VyY2UqIGNhbnZhc1Jlc291cmNlKCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiB0aGlzOyB9CkBAIC02Nyw1ICs2NSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMyArNDcsMTMgQEAgU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6On5TVgogewogfQogCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgaW50
LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFR5cGUsIHR5cGUsIFNWR05hbWVzOjp0eXBlQXR0
ci5sb2NhbE5hbWUoKSwgbV90eXBlKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIFNWR051bWJlckxpc3QqLCBOdW1iZXJM
aXN0LCBudW1iZXJMaXN0LCBUYWJsZVZhbHVlcywgdGFibGVWYWx1ZXMsIFNWR05hbWVzOjp0YWJs
ZVZhbHVlc0F0dHIubG9jYWxOYW1lKCksIG1fdGFibGVWYWx1ZXMuZ2V0KCkpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwg
ZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTbG9wZSwgc2xvcGUsIFNWR05hbWVzOjpzbG9wZUF0dHIu
bG9jYWxOYW1lKCksIG1fc2xvcGUpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBJ
bnRlcmNlcHQsIGludGVyY2VwdCwgU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIubG9jYWxOYW1lKCks
IG1faW50ZXJjZXB0KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgQW1wbGl0dWRl
LCBhbXBsaXR1ZGUsIFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyLmxvY2FsTmFtZSgpLCBtX2FtcGxp
dHVkZSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEV4cG9uZW50LCBleHBvbmVu
dCwgU1ZHTmFtZXM6OmV4cG9uZW50QXR0ci5sb2NhbE5hbWUoKSwgbV9leHBvbmVudCkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIE9mZnNldCwgb2Zmc2V0LCBTVkdOYW1lczo6b2Zm
c2V0QXR0ci5sb2NhbE5hbWUoKSwgbV9vZmZzZXQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgaW50LCBFbnVtZXJhdGlv
biwgZW51bWVyYXRpb24sIFR5cGUsIHR5cGUsIFNWR05hbWVzOjp0eXBlQXR0ciwgbV90eXBlKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQsIFNWR051bWJlckxpc3QqLCBOdW1iZXJMaXN0LCBudW1iZXJMaXN0LCBUYWJsZVZh
bHVlcywgdGFibGVWYWx1ZXMsIFNWR05hbWVzOjp0YWJsZVZhbHVlc0F0dHIsIG1fdGFibGVWYWx1
ZXMuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTbG9wZSwgc2xvcGUs
IFNWR05hbWVzOjpzbG9wZUF0dHIsIG1fc2xvcGUpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCwgZmxvYXQsIE51bWJlciwg
bnVtYmVyLCBJbnRlcmNlcHQsIGludGVyY2VwdCwgU1ZHTmFtZXM6OmludGVyY2VwdEF0dHIsIG1f
aW50ZXJjZXB0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgQW1wbGl0dWRlLCBh
bXBsaXR1ZGUsIFNWR05hbWVzOjphbXBsaXR1ZGVBdHRyLCBtX2FtcGxpdHVkZSkKK0FOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50
LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEV4cG9uZW50LCBleHBvbmVudCwgU1ZHTmFtZXM6OmV4
cG9uZW50QXR0ciwgbV9leHBvbmVudCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIs
IE9mZnNldCwgb2Zmc2V0LCBTVkdOYW1lczo6b2Zmc2V0QXR0ciwgbV9vZmZzZXQpCiAKIHZvaWQg
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw4ICs1Miw4IEBAIFNWR0N1cnNvckVsZW1lbnQ6On5TVkdDdXJz
b3JFbGVtZW50KCkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHQ3Vyc29yRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdDdXJzb3JFbGVtZW50LCBTVkdMZW5n
dGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIsIG1feCkKK0FOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0N1cnNvckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ciwgbV95KQogCiB2b2lkIFNWR0N1cnNvckVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKQEAg
LTgyLDUgKzgyLDMgQEAgdm9pZCBTVkdDdXJzb3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6Omluc2Vy
dGVkSW50b0RvY3VtZW50KCkKICAgICAgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKICAgICAg
ICAgICAgICgqaXQpLT5idWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogCi0gICAgICAgIFNWR1Jlc291
cmNlOjpyZXBhaW50Q2xpZW50cygqY2xpZW50cyk7CisgICAgICAgIFNWR1Jlc291cmNlOjppbnZh
bGlkYXRlQ2xpZW50cygqY2xpZW50cyk7CiAgICAgfQogfQogCkBAIC0yNDQsOCArMjQ0LDE2IEBA
IGJvb2wgU1ZHRWxlbWVudDo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHQKICAgICByZXR1cm4gRXZl
bnRUYXJnZXROb2RlOjpkaXNwYXRjaEdlbmVyaWNFdmVudCh0aGlzLCBlLCBlYywgdGVtcEV2ZW50
KTsKIH0KIAordm9pZCBTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0
ciwgYm9vbCBwcmVzZXJ2ZURlY2xzKQoreworICAgIEFTU0VSVChhdHRyKTsKKyAgICBpZiAoIWF0
dHIpCisgICAgICAgIHJldHVybjsKKworICAgIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ciwgcHJlc2VydmVEZWNscyk7CisgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyLT5u
YW1lKCkpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKK30KIAotLy8gdmltOnRzPTQ6bm9l
dAorI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyOTk1MCkK
KysrIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsNyArMjQsNiBA
QAogI2RlZmluZSBTVkdFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIlN0eWxlZEVsZW1l
bnQuaCIKQEAgLTU1LDIxICs1NCwyMSBAQCBjbGFzcyBTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBl
clByb3BlcnR5CiA6IHB1YmxpYyBTVkdBbmltYXRlZFRlbXBsYXRlPEJhcmVUeXBlPiBcCiB7IFwK
IHB1YmxpYzogXAotICAgIFNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHkoY29uc3Qg
Q2xhc3NUeXBlKiBlbGVtZW50KTsgXAorICAgIFNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJv
cGVydHkoY29uc3QgQ2xhc3NUeXBlKiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOyBcCiAgICAgdmly
dHVhbCB+U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eSgpIHsgfSBcCiAgICAgdmly
dHVhbCBCYXJlVHlwZSBiYXNlVmFsKCkgY29uc3Q7IFwKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QmFz
ZVZhbChCYXJlVHlwZSBuZXdCYXNlVmFsKTsgXAorICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNlVmFs
KEJhcmVUeXBlKTsgXAogICAgIHZpcnR1YWwgQmFyZVR5cGUgYW5pbVZhbCgpIGNvbnN0OyBcCi0g
ICAgdmlydHVhbCB2b2lkIHNldEFuaW1WYWwoQmFyZVR5cGUgbmV3QW5pbVZhbCk7IFwKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QW5pbVZhbChCYXJlVHlwZSk7IFwKICAgICBcCiBwcm90ZWN0ZWQ6IFwK
ICAgICBDbGFzc1N0b3JhZ2VUeXBlIG1fZWxlbWVudDsgXAogfTsgXAogcHVibGljOiBcCiAgICAg
QmFyZVR5cGUgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0OyBcCi0gICAgdm9pZCBzZXQjI1VwcGVyUHJv
cGVydHkoQmFyZVR5cGUgbmV3VmFsdWUpOyBcCisgICAgdm9pZCBzZXQjI1VwcGVyUHJvcGVydHko
QmFyZVR5cGUpOyBcCiAgICAgQmFyZVR5cGUgTG93ZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKCkgY29u
c3Q7IFwKLSAgICB2b2lkIHNldCMjVXBwZXJQcm9wZXJ0eSMjQmFzZVZhbHVlKEJhcmVUeXBlIG5l
d1ZhbHVlKTsgXAorICAgIHZvaWQgc2V0IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoQmFyZVR5
cGUpOyBcCiAgICAgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFRlbXBsYXRlIyNVcHBlclByb3BlcnR5
PiBMb3dlclByb3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0OyBcCiAgICAgdm9pZCBzdGFydCMjVXBw
ZXJQcm9wZXJ0eSgpIGNvbnN0OyBcCiAgICAgdm9pZCBzdG9wIyNVcHBlclByb3BlcnR5KCk7IFwK
QEAgLTc4LDggKzc3LDkgQEAgcHJpdmF0ZTogXAogICAgIFN0b3JhZ2VUeXBlIG1fIyNMb3dlclBy
b3BlcnR5OwogCiAjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX0lOVEVSTkFM
KENsYXNzTmFtZSwgQ2xhc3NUeXBlLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xh
c3NOYW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3RvcmFnZUdl
dHRlciwgQ29udGV4dEVsZW1lbnQpIFwKLUNsYXNzTmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMj
VXBwZXJQcm9wZXJ0eTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eShjb25zdCBD
bGFzc1R5cGUqIGVsZW1lbnQpIFwKLTogbV9lbGVtZW50KGNvbnN0X2Nhc3Q8Q2xhc3NUeXBlKj4o
ZWxlbWVudCkpIHsgfSBcCitDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJv
cGVydHk6OlNWR0FuaW1hdGVkVGVtcGxhdGUjI1VwcGVyUHJvcGVydHkoY29uc3QgQ2xhc3NUeXBl
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSBcCis6IFNWR0Fu
aW1hdGVkVGVtcGxhdGU8QmFyZVR5cGU+KGF0dHJpYnV0ZU5hbWUpLCBtX2VsZW1lbnQoY29uc3Rf
Y2FzdDxDbGFzc1R5cGUqPihlbGVtZW50KSkgeyB9IFwKK1wKIEJhcmVUeXBlIENsYXNzTmFtZTo6
U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eTo6YmFzZVZhbCgpIGNvbnN0IFwKIHsg
XAogICAgIHJldHVybiBtX2VsZW1lbnQtPkxvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpOyBcCkBA
IC0xNTcsMjYgKzE1NywyNyBAQCBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfSU5URVJO
QUwoCiBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlNfSU5URVJOQUwoQ2xhc3NOYW1lLCBS
ZWZQdHI8Q2xhc3NOYW1lPiwgQmFyZVR5cGUsIFN0b3JhZ2VUeXBlLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KQogCiAjZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJ
VEhfQ09OVEVYVChDbGFzc05hbWUsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFz
c05hbWUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBTdG9yYWdlR2V0
dGVyKSBcCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChDbGFzc05hbWUs
IFNWR0VsZW1lbnQsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFzc05hbWUsIFVw
cGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBTdG9yYWdlR2V0dGVyLCBjb250
ZXh0RWxlbWVudCgpKSBcCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19JTlRFUk5BTChD
bGFzc05hbWUsIFNWR0VsZW1lbnQsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFz
c05hbWUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLmxvY2FsTmFtZSgp
LCBTdG9yYWdlR2V0dGVyLCBjb250ZXh0RWxlbWVudCgpKSBcCiBQYXNzUmVmUHRyPENsYXNzTmFt
ZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eT4gQ2xhc3NOYW1lOjpMb3dlclBy
b3BlcnR5IyNBbmltYXRlZCgpIGNvbnN0IFwKIHsgXAogICAgIGNvbnN0IFNWR0VsZW1lbnQqIGNv
bnRleHQgPSBjb250ZXh0RWxlbWVudCgpOyBcCiAgICAgQVNTRVJUKGNvbnRleHQpOyBcCi0gICAg
cmV0dXJuIGxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxDbGFzc05hbWU6OlNWR0FuaW1hdGVkVGVtcGxh
dGUjI1VwcGVyUHJvcGVydHksIFNWR0VsZW1lbnQ+KGNvbnRleHQsIEF0dHJOYW1lKTsgXAorICAg
IHJldHVybiBsb29rdXBPckNyZWF0ZVdyYXBwZXI8Q2xhc3NOYW1lOjpTVkdBbmltYXRlZFRlbXBs
YXRlIyNVcHBlclByb3BlcnR5LCBTVkdFbGVtZW50Pihjb250ZXh0LCBBdHRyTmFtZSwgQXR0ck5h
bWUubG9jYWxOYW1lKCkpOyBcCiB9CiAKLSNkZWZpbmUgQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xhc3NOYW1l
LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3RvcmFnZUdldHRlcikg
XAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfSU5URVJOQUwoQ2xhc3NOYW1lLCBDbGFz
c05hbWUsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFzc05hbWUsIFVwcGVyUHJv
cGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBTdG9yYWdlR2V0dGVyLCB0aGlzKSBcCisj
ZGVmaW5lIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ1VTVE9NX0lERU5USUZJ
RVIoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xhc3NOYW1lLCBV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgQXR0cklkZW50aWZpZXIsIFN0
b3JhZ2VHZXR0ZXIpIFwKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX0lOVEVSTkFMKENs
YXNzTmFtZSwgQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2VyQ2xhc3NO
YW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZS5sb2NhbE5hbWUoKSwg
U3RvcmFnZUdldHRlciwgdGhpcykgXAogUGFzc1JlZlB0cjxDbGFzc05hbWU6OlNWR0FuaW1hdGVk
VGVtcGxhdGUjI1VwcGVyUHJvcGVydHk+IENsYXNzTmFtZTo6TG93ZXJQcm9wZXJ0eSMjQW5pbWF0
ZWQoKSBjb25zdCBcCiB7IFwKLSAgICByZXR1cm4gbG9va3VwT3JDcmVhdGVXcmFwcGVyPENsYXNz
TmFtZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eSwgQ2xhc3NOYW1lPih0aGlz
LCBBdHRyTmFtZSk7IFwKKyAgICByZXR1cm4gbG9va3VwT3JDcmVhdGVXcmFwcGVyPENsYXNzTmFt
ZTo6U1ZHQW5pbWF0ZWRUZW1wbGF0ZSMjVXBwZXJQcm9wZXJ0eSwgQ2xhc3NOYW1lPih0aGlzLCBB
dHRyTmFtZSwgQXR0cklkZW50aWZpZXIpOyBcCiB9CiAKKyNkZWZpbmUgQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoQ2xhc3NOYW1lLCBCYXJlVHlwZSwgVXBwZXJDbGFzc05hbWUsIExvd2Vy
Q2xhc3NOYW1lLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5LCBBdHRyTmFtZSwgU3RvcmFn
ZUdldHRlcikgXAorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DVVNUT01fSURF
TlRJRklFUihDbGFzc05hbWUsIEJhcmVUeXBlLCBVcHBlckNsYXNzTmFtZSwgTG93ZXJDbGFzc05h
bWUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHksIEF0dHJOYW1lLCBBdHRyTmFtZS5sb2Nh
bE5hbWUoKSwgU3RvcmFnZUdldHRlcikKKwogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNz
IEVjbWE7CisKICAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOwotICAgIGNsYXNzIFNW
R01hdHJpeDsKLSAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50OwogICAgIGNsYXNzIFNWR1NWR0Vs
ZW1lbnQ7CiAKICAgICBjbGFzcyBTVkdFbGVtZW50IDogcHVibGljIFN0eWxlZEVsZW1lbnQgewpA
QCAtMTk0LDkgKzE5NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU1ZHU1ZHRWxl
bWVudCogb3duZXJTVkdFbGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFNWR0VsZW1lbnQqIHZpZXdw
b3J0RWxlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIC8vIEludGVybmFsCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAg
CisKICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3R5bGVkVHJhbnNmb3JtYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0eWxlZExvY2F0YWJsZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0yMjAsNyArMjIwLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCkgeyB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0IHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wg
cHJlc2VydmVEZWNscyA9IGZhbHNlKTsKKwogICAgICAgICB2b2lkIHNlbmRTVkdMb2FkRXZlbnRJ
ZlBvc3NpYmxlKGJvb2wgc2VuZFBhcmVudExvYWRFdmVudHMgPSBmYWxzZSk7CiAKICAgICAgICAg
Ly8gRm9yd2FyZGVkIHByb3BlcnRpZXMgKGRlY2xhcmVkL2RlZmluZWQgYW55d2hlcmUgZWxzZSBp
biB0aGUgaW5oZXJpdGFuY2Ugc3RydWN0dXJlKQpAQCAtMjQ4LDUgKzI1MCwzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHRWxlbWVu
dF9oCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0CkBAIC00OCwxMCArNDgsMTAgQEAgU1ZHRWxsaXBzZUVsZW1lbnQ6On5TVkdF
bGxpcHNlRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBDeCwgY3gsIFNWR05h
bWVzOjpjeEF0dHIubG9jYWxOYW1lKCksIG1fY3gpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgQ3ksIGN5
LCBTVkdOYW1lczo6Y3lBdHRyLmxvY2FsTmFtZSgpLCBtX2N5KQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFJ4LCByeCwgU1ZHTmFtZXM6OnJ4QXR0ci5sb2NhbE5hbWUoKSwgbV9yeCkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwg
bGVuZ3RoLCBSeSwgcnksIFNWR05hbWVzOjpyeUF0dHIubG9jYWxOYW1lKCksIG1fcnkpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLCBtX2N4KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRWxsaXBzZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3Ro
LCBsZW5ndGgsIEN5LCBjeSwgU1ZHTmFtZXM6OmN5QXR0ciwgbV9jeSkKK0FOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBSeCwgcngsIFNWR05hbWVzOjpyeEF0dHIsIG1fcngpCitBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
UnksIHJ5LCBTVkdOYW1lczo6cnlBdHRyLCBtX3J5KQogCiB2b2lkIFNWR0VsbGlwc2VFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC03OCwx
MiArNzgsMjAgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAg
IH0KIH0KIAotdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkg
Y29uc3QKK3ZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5wYXJzaW5n
KCkgJiYgcmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1
ZSk7CisgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOworCisgICAgaWYgKCFyZW5kZXJlcigpKQorICAgICAgICByZXR1cm47CiAK
LSAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdl
KCk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpjeEF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmN5QXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cnhBdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyeUF0dHIgfHwKKyAgICAgICAgU1ZHVGVzdHM6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHU3R5bGVkVHJh
bnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBy
ZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKIH0KIAogUGF0aCBTVkdFbGxpcHNlRWxl
bWVudDo6dG9QYXRoRGF0YSgpIGNvbnN0CkBAIC0xMDEsNSArMTA5LDMgQEAgYm9vbCBTVkdFbGxp
cHNlRWxlbWVudDo6aGFzUmVsYXRpdmVWYWx1ZQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
LQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCShyZXZpc2lv
biAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAg
LTI0LDI4ICsyNCwyNSBAQAogI2RlZmluZSBTVkdFbGxpcHNlRWxlbWVudF9oCiAKICNpZiBFTkFC
TEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2lu
Y2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR0VsbGlwc2VFbGVtZW50IDogcHVi
bGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0xhbmdTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewogICAgIHB1
YmxpYzoKICAgICAgICAgU1ZHRWxsaXBzZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR0VsbGlwc2VFbGVtZW50KCk7CiAgICAgICAg
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3Rz
Ojppc1ZhbGlkKCk7IH0KIAotICAgICAgICAvLyAnU1ZHRWxsaXBzZUVsZW1lbnQnIGZ1bmN0aW9u
cwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKiBhdHRyKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgp
IGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICB2aXJ0dWFsIFBhdGggdG9QYXRoRGF0YSgp
IGNvbnN0OwogCkBAIC02Niw1ICs2MywzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCShyZXZpc2lvbiAyOTk1MCkK
KysrIFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsy
MSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZiBFTkFCTEUoU1ZHKQogI2lu
Y2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKIApAQCAtMzksNyArNDAsNyBA
QCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjp+U1ZHRXh0ZXJuCiB7CiB9CiAKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBib29sLCBCb29sZWFuLCBib29sZWFuLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZEF0dHIubG9jYWxOYW1lKCksIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBib29sLCBCb29sZWFuLCBib29sZWFuLCBFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBTVkdOYW1lczo6ZXh0ZXJuYWxS
ZXNvdXJjZXNSZXF1aXJlZEF0dHIsIG1fZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKIAogYm9v
bCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC01MSw3ICs1MiwxMSBAQCBib29sIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQ6OnBhcnNlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgcmV0dXJuIGF0dHJOYW1lID09IFNWR05hbWVzOjpl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0cjsKK30KKwogfQogCi0vLyB2aW06dHM9NDpub2V0
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0CkBAIC0yMiwxMiArMjIsMTMgQEAKIAogI2lmbmRlZiBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkX2gKICNkZWZpbmUgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
CiAgICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgd3Jv
bmcgZm9yIHNldmVyYWwgcmVhc29uczoKQEAgLTQ1LDggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCk7CiAgICAgICAgIHZp
cnR1YWwgflNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKTsKIAotICAgICAgICAvLyAnU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcgZnVuY3Rpb25zCiAgICAgICAgIGJvb2wgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIGJvb2wgaXNLbm93bkF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCA9IDA7CkBA
IC01OSw1ICs2MCwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDkgKzQxLDkgQEAgU1ZHRkVCbGVuZEVsZW1lbnQ6
On5TVkdGRUJsZW5kRWxlbWVudCgpCiAgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0OwogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUJsZW5kRWxlbWVudCwgU3RyaW5nLCBT
dHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIubG9jYWxOYW1lKCksIG1f
aW4xKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFN0
cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0ci5sb2NhbE5h
bWUoKSwgbV9pbjIpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUJsZW5kRWxl
bWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1vZGUsIG1vZGUsIFNWR05hbWVz
Ojptb2RlQXR0ci5sb2NhbE5hbWUoKSwgbV9tb2RlKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4x
LCBTVkdOYW1lczo6aW5BdHRyLCBtX2luMSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0ZFQmxlbmRFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjIsIGluMiwgU1ZH
TmFtZXM6OmluMkF0dHIsIG1faW4yKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVCbGVuZEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBNb2RlLCBtb2Rl
LCBTVkdOYW1lczo6bW9kZUF0dHIsIG1fbW9kZSkKIAogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQ6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXModGFnTmFtZSwgZG9jKQogICAgICwgbV90eXBlKFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5L
Tk9XTikKLSAgICAsIG1fdmFsdWVzKG5ldyBTVkdOdW1iZXJMaXN0KQorICAgICwgbV92YWx1ZXMo
bmV3IFNWR051bWJlckxpc3QoU1ZHTmFtZXM6OnZhbHVlc0F0dHIpKQogICAgICwgbV9maWx0ZXJF
ZmZlY3QoMCkKIHsKIH0KQEAgLTQ0LDkgKzQ0LDkgQEAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
On5TVkdGRUNvbG9yTWF0cgogICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQsIFN0cmluZywg
U3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2FsTmFtZSgpLCBt
X2luMSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgVHlwZSwgdHlwZSwgU1ZHTmFtZXM6
OnR5cGVBdHRyLmxvY2FsTmFtZSgpLCBtX3R5cGUpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTnVtYmVyTGlzdCosIE51bWJlckxpc3Qs
IG51bWJlckxpc3QsIFZhbHVlcywgdmFsdWVzLCBTVkdOYW1lczo6dmFsdWVzQXR0ci5sb2NhbE5h
bWUoKSwgbV92YWx1ZXMuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
RUNvbG9yTWF0cml4RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNW
R05hbWVzOjppbkF0dHIsIG1faW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBUeXBl
LCB0eXBlLCBTVkdOYW1lczo6dHlwZUF0dHIsIG1fdHlwZSkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOdW1iZXJMaXN0KiwgTnVtYmVy
TGlzdCwgbnVtYmVyTGlzdCwgVmFsdWVzLCB2YWx1ZXMsIFNWR05hbWVzOjp2YWx1ZXNBdHRyLCBt
X3ZhbHVlcy5nZXQoKSkKIAogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6On5T
VkdGRUNvbQogICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFN0cmluZywgU3Ry
aW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2FsTmFtZSgpLCBtX2lu
MSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0
ciwgbV9pbjEpCiAKIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMyArNDYsMTMg
QEAgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojp+U1ZHRkVDb21wb3NpdGVFbAogICAgIGRlbGV0ZSBt
X2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVD
b21wb3NpdGVFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFt
ZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMiwg
aW4yLCBTVkdOYW1lczo6aW4yQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjIpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGludCwgRW51bWVyYXRpb24s
IGVudW1lcmF0aW9uLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgU1ZHTmFtZXM6Om9wZXJhdG9yQXR0
ci5sb2NhbE5hbWUoKSwgbV9fb3BlcmF0b3IpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgSzEsIGsxLCBT
VkdOYW1lczo6azFBdHRyLmxvY2FsTmFtZSgpLCBtX2sxKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEsy
LCBrMiwgU1ZHTmFtZXM6OmsyQXR0ci5sb2NhbE5hbWUoKSwgbV9rMikKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVt
YmVyLCBLMywgazMsIFNWR05hbWVzOjprM0F0dHIubG9jYWxOYW1lKCksIG1fazMpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBOdW1i
ZXIsIG51bWJlciwgSzQsIGs0LCBTVkdOYW1lczo6azRBdHRyLmxvY2FsTmFtZSgpLCBtX2s0KQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTdHJp
bmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ciwgbV9pbjEpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFN0cmlu
ZywgU3RyaW5nLCBzdHJpbmcsIEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0ciwgbV9pbjIpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGludCwg
RW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBfb3BlcmF0b3IsIF9vcGVyYXRvciwgU1ZHTmFtZXM6
Om9wZXJhdG9yQXR0ciwgbV9fb3BlcmF0b3IpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgSzEsIGsxLCBT
VkdOYW1lczo6azFBdHRyLCBtX2sxKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVDb21wb3NpdGVFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEsyLCBrMiwgU1ZHTmFt
ZXM6OmsyQXR0ciwgbV9rMikKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFQ29t
cG9zaXRlRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBLMywgazMsIFNWR05hbWVzOjpr
M0F0dHIsIG1fazMpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgSzQsIGs0LCBTVkdOYW1lczo6azRBdHRy
LCBtX2s0KQogCiB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlICphdHRyKQogewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDkg
KzQ5LDkgQEAgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojp+U1ZHRkVEaWZmdQogICAgIGRl
bGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEs
IGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBOdW1i
ZXIsIG51bWJlciwgRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQsIFNWR05hbWVzOjpk
aWZmdXNlQ29uc3RhbnRBdHRyLmxvY2FsTmFtZSgpLCBtX2RpZmZ1c2VDb25zdGFudCkKLUFOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxv
YXQsIE51bWJlciwgbnVtYmVyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwgU1ZHTmFtZXM6
OnN1cmZhY2VTY2FsZUF0dHIubG9jYWxOYW1lKCksIG1fc3VyZmFjZVNjYWxlKQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTdHJpbmcs
IFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ciwgbV9pbjEpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIGZs
b2F0LCBOdW1iZXIsIG51bWJlciwgRGlmZnVzZUNvbnN0YW50LCBkaWZmdXNlQ29uc3RhbnQsIFNW
R05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyLCBtX2RpZmZ1c2VDb25zdGFudCkKK0FOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQs
IE51bWJlciwgbnVtYmVyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwgU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIsIG1fc3VyZmFjZVNjYWxlKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIs
IEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCwgImtlcm5lbFVuaXRMZW5ndGhY
IiwgbV9rZXJuZWxVbml0TGVuZ3RoWCkKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBLZXJuZWxV
bml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFksICJrZXJuZWxVbml0TGVuZ3RoWSIsIG1fa2Vy
bmVsVW5pdExlbmd0aFkpCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMSArNDEsMTEgQEAg
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50Ojp+U1ZHRkVEaXNwbAogICAgIGRlbGV0ZSBtX2Zp
bHRlckVmZmVjdDsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZH
TmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJp
bmcsIEluMiwgaW4yLCBTVkdOYW1lczo6aW4yQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjIpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGlu
dCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5lbFNl
bGVjdG9yLCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIubG9jYWxOYW1lKCksIG1feENo
YW5uZWxTZWxlY3RvcikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFlDaGFubmVs
U2VsZWN0b3IsIHlDaGFubmVsU2VsZWN0b3IsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0
ci5sb2NhbE5hbWUoKSwgbV95Q2hhbm5lbFNlbGVjdG9yKQotQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1i
ZXIsIFNjYWxlLCBzY2FsZSwgU1ZHTmFtZXM6OnNjYWxlQXR0ci5sb2NhbE5hbWUoKSwgbV9zY2Fs
ZSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIs
IG1faW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3RyaW5nLCBJbjIsIGluMiwgU1ZHTmFtZXM6Omlu
MkF0dHIsIG1faW4yKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgWENoYW5uZWxT
ZWxlY3RvciwgeENoYW5uZWxTZWxlY3RvciwgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRy
LCBtX3hDaGFubmVsU2VsZWN0b3IpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBZ
Q2hhbm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yLCBTVkdOYW1lczo6eUNoYW5uZWxTZWxl
Y3RvckF0dHIsIG1feUNoYW5uZWxTZWxlY3RvcikKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBT
Y2FsZSwgc2NhbGUsIFNWR05hbWVzOjpzY2FsZUF0dHIsIG1fc2NhbGUpCiAKIFNWR0NoYW5uZWxT
ZWxlY3RvclR5cGUgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdHJpbmdUb0NoYW5uZWwo
Y29uc3QgU3RyaW5nJiBrZXkpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBTVkdGRUZsb29kRWxlbWVudDo6flNWR0ZFRmxv
b2RFbGVtZW50KCkKICAgICBkZWxldGUgbV9maWx0ZXJFZmZlY3Q7CiB9CiAKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFRmxvb2RFbGVtZW50LCBTdHJpbmcsIFN0cmluZywgc3Ry
aW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9pbjEpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUZsb29kRWxlbWVudCwgU3RyaW5nLCBTdHJp
bmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIsIG1faW4xKQogCiB2b2lkIFNW
R0ZFRmxvb2RFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNyBAQCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6On5TVkdGRUdhdXNzaWFuCiAgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0OwogfQogCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFN0cmlu
ZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2FsTmFtZSgp
LCBtX2luMSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0
dHIsIG1faW4xKQogQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFN0ZERldmlhdGlvblgsIHN0ZERldmlh
dGlvblgsICJzdGREZXZpYXRpb25YIiwgbV9zdGREZXZpYXRpb25YKQogQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBu
dW1iZXIsIFN0ZERldmlhdGlvblksIHN0ZERldmlhdGlvblksICJzdGREZXZpYXRpb25ZIiwgbV9z
dGREZXZpYXRpb25ZKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lv
biAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNyArNTQsNyBAQCBTVkdGRUltYWdlRWxlbWVudDo6flNWR0ZFSW1hZ2VFbGVt
ZW50KCkKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+ZGVyZWYodGhpcyk7CiB9CiAKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvKiwgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2Vy
dmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHTmFtZXM6OnByZXNlcnZlQXNw
ZWN0UmF0aW9BdHRyLmxvY2FsTmFtZSgpLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8uZ2V0KCkpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUltYWdlRWxlbWVudCwgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8s
IFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR05hbWVzOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvLmdldCgpKQogCiB2b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUq
IGF0dHIpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1
MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDcsMTcgKzQ3LDE3IEBAIFNWR0ZFTGlnaHRFbGVtZW50Ojp+U1ZHRkVMaWdodEVsZW1lbnQo
KQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVu
dCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBBemltdXRoLCBhemltdXRoLCBTVkdOYW1lczo6YXpp
bXV0aEF0dHIubG9jYWxOYW1lKCksIG1fYXppbXV0aCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIEVsZXZhdGlv
biwgZWxldmF0aW9uLCBTVkdOYW1lczo6ZWxldmF0aW9uQXR0ci5sb2NhbE5hbWUoKSwgbV9lbGV2
YXRpb24pCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwg
ZmxvYXQsIE51bWJlciwgbnVtYmVyLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCks
IG1feCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBm
bG9hdCwgTnVtYmVyLCBudW1iZXIsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwg
bV95KQotCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwg
ZmxvYXQsIE51bWJlciwgbnVtYmVyLCBaLCB6LCBTVkdOYW1lczo6ekF0dHIubG9jYWxOYW1lKCks
IG1feikKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBm
bG9hdCwgTnVtYmVyLCBudW1iZXIsIFBvaW50c0F0WCwgcG9pbnRzQXRYLCBTVkdOYW1lczo6cG9p
bnRzQXRYQXR0ci5sb2NhbE5hbWUoKSwgbV9wb2ludHNBdFgpCi1BTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBQb2lu
dHNBdFksIHBvaW50c0F0WSwgU1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIubG9jYWxOYW1lKCksIG1f
cG9pbnRzQXRZKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1l
bnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgUG9pbnRzQXRaLCBwb2ludHNBdFosIFNWR05hbWVz
Ojpwb2ludHNBdFpBdHRyLmxvY2FsTmFtZSgpLCBtX3BvaW50c0F0WikKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIs
IFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQsIFNWR05hbWVzOjpzcGVjdWxhckV4
cG9uZW50QXR0ci5sb2NhbE5hbWUoKSwgbV9zcGVjdWxhckV4cG9uZW50KQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJl
ciwgTGltaXRpbmdDb25lQW5nbGUsIGxpbWl0aW5nQ29uZUFuZ2xlLCBTVkdOYW1lczo6bGltaXRp
bmdDb25lQW5nbGVBdHRyLmxvY2FsTmFtZSgpLCBtX2xpbWl0aW5nQ29uZUFuZ2xlKQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIs
IG51bWJlciwgQXppbXV0aCwgYXppbXV0aCwgU1ZHTmFtZXM6OmF6aW11dGhBdHRyLCBtX2F6aW11
dGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxv
YXQsIE51bWJlciwgbnVtYmVyLCBFbGV2YXRpb24sIGVsZXZhdGlvbiwgU1ZHTmFtZXM6OmVsZXZh
dGlvbkF0dHIsIG1fZWxldmF0aW9uKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
RkVMaWdodEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgWCwgeCwgU1ZHTmFtZXM6OnhB
dHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVu
dCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIsIG1feSkKKwor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZsb2F0LCBO
dW1iZXIsIG51bWJlciwgWiwgeiwgU1ZHTmFtZXM6OnpBdHRyLCBtX3opCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVy
LCBQb2ludHNBdFgsIHBvaW50c0F0WCwgU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIsIG1fcG9pbnRz
QXRYKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVMaWdodEVsZW1lbnQsIGZs
b2F0LCBOdW1iZXIsIG51bWJlciwgUG9pbnRzQXRZLCBwb2ludHNBdFksIFNWR05hbWVzOjpwb2lu
dHNBdFlBdHRyLCBtX3BvaW50c0F0WSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFBvaW50c0F0WiwgcG9pbnRz
QXRaLCBTVkdOYW1lczo6cG9pbnRzQXRaQXR0ciwgbV9wb2ludHNBdFopCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGRUxpZ2h0RWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVy
LCBTcGVjdWxhckV4cG9uZW50LCBzcGVjdWxhckV4cG9uZW50LCBTVkdOYW1lczo6c3BlY3VsYXJF
eHBvbmVudEF0dHIsIG1fc3BlY3VsYXJFeHBvbmVudCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZFTGlnaHRFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIExpbWl0aW5n
Q29uZUFuZ2xlLCBsaW1pdGluZ0NvbmVBbmdsZSwgU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xl
QXR0ciwgbV9saW1pdGluZ0NvbmVBbmdsZSkKIAogdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2
LDcgQEAgU1ZHRkVNZXJnZU5vZGVFbGVtZW50Ojp+U1ZHRkVNZXJnZU5vZGVFbAogewogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRU1lcmdlTm9kZUVsZW1lbnQsIFN0cmlu
ZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdOYW1lczo6aW5BdHRyLmxvY2FsTmFtZSgp
LCBtX2luMSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFTWVyZ2VOb2RlRWxl
bWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIs
IG1faW4xKQogCiB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDkgQEAgU1ZHRkVPZmZzZXRFbGVtZW50
Ojp+U1ZHRkVPZmZzZXRFbGVtZW50KAogICAgIGRlbGV0ZSBtX2ZpbHRlckVmZmVjdDsKIH0KIAot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBTdHJpbmcs
IFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwg
bV9pbjEpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQs
IGZsb2F0LCBOdW1iZXIsIG51bWJlciwgRHgsIGR4LCBTVkdOYW1lczo6ZHhBdHRyLmxvY2FsTmFt
ZSgpLCBtX2R4KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVPZmZzZXRFbGVt
ZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIER5LCBkeSwgU1ZHTmFtZXM6OmR5QXR0ci5sb2Nh
bE5hbWUoKSwgbV9keSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFT2Zmc2V0
RWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0
dHIsIG1faW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVPZmZzZXRFbGVt
ZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIER4LCBkeCwgU1ZHTmFtZXM6OmR4QXR0ciwgbV9k
eCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVudCwgZmxv
YXQsIE51bWJlciwgbnVtYmVyLCBEeSwgZHksIFNWR05hbWVzOjpkeUF0dHIsIG1fZHkpCiAKIHZv
aWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqIGF0dHIpCiB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEwIEBAIFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6On5TVkdGRVNwZWMKICAgICBkZWxldGUgbV9maWx0
ZXJFZmZlY3Q7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEluMSwgaW4xLCBTVkdO
YW1lczo6aW5BdHRyLmxvY2FsTmFtZSgpLCBtX2luMSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJl
ciwgU3BlY3VsYXJDb25zdGFudCwgc3BlY3VsYXJDb25zdGFudCwgU1ZHTmFtZXM6OnNwZWN1bGFy
Q29uc3RhbnRBdHRyLmxvY2FsTmFtZSgpLCBtX3NwZWN1bGFyQ29uc3RhbnQpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBmbG9hdCwg
TnVtYmVyLCBudW1iZXIsIFNwZWN1bGFyRXhwb25lbnQsIHNwZWN1bGFyRXhwb25lbnQsIFNWR05h
bWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ci5sb2NhbE5hbWUoKSwgbV9zcGVjdWxhckV4cG9uZW50
KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTdXJmYWNlU2NhbGUsIHN1cmZhY2VTY2FsZSwg
U1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIubG9jYWxOYW1lKCksIG1fc3VyZmFjZVNjYWxlKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywgSW4xLCBpbjEsIFNWR05hbWVzOjppbkF0dHIsIG1f
aW4xKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCwgZmxvYXQsIE51bWJlciwgbnVtYmVyLCBTcGVjdWxhckNvbnN0YW50LCBzcGVjdWxh
ckNvbnN0YW50LCBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIsIG1fc3BlY3VsYXJDb25z
dGFudCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgU3BlY3VsYXJFeHBvbmVudCwgc3BlY3Vs
YXJFeHBvbmVudCwgU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyLCBtX3NwZWN1bGFyRXhw
b25lbnQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNj
YWxlLCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciwgbV9zdXJmYWNlU2NhbGUpCiBBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBmbG9h
dCwgTnVtYmVyLCBudW1iZXIsIEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCwg
Imtlcm5lbFVuaXRMZW5ndGhYIiwgbV9rZXJuZWxVbml0TGVuZ3RoWCkKIEFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIGZsb2F0LCBOdW1i
ZXIsIG51bWJlciwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZLCAia2VybmVs
VW5pdExlbmd0aFkiLCBtX2tlcm5lbFVuaXRMZW5ndGhZKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVF
bGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBTVkdGRVRpbGVFbGVtZW50
Ojp+U1ZHRkVUaWxlRWxlbWVudCgpCiAgICAgZGVsZXRlIG1fZmlsdGVyRWZmZWN0OwogfQogCi1B
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVRpbGVFbGVtZW50LCBTdHJpbmcsIFN0
cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ci5sb2NhbE5hbWUoKSwgbV9p
bjEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGRVRpbGVFbGVtZW50LCBTdHJp
bmcsIFN0cmluZywgc3RyaW5nLCBJbjEsIGluMSwgU1ZHTmFtZXM6OmluQXR0ciwgbV9pbjEpCiAK
IHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKiBhdHRyKQogewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMCBAQCBTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50Ojp+U1ZHRkVUdXJidWxlbmNlCiAKIEFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgQmFzZUZyZXF1ZW5j
eVgsIGJhc2VGcmVxdWVuY3lYLCAiYmFzZUZyZXF1ZW5jeVgiLCBtX2Jhc2VGcmVxdWVuY3lYKQog
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgZmxv
YXQsIE51bWJlciwgbnVtYmVyLCBCYXNlRnJlcXVlbmN5WSwgYmFzZUZyZXF1ZW5jeVksICJiYXNl
RnJlcXVlbmN5WSIsIG1fYmFzZUZyZXF1ZW5jeVkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIFNlZWQs
IHNlZWQsIFNWR05hbWVzOjpzZWVkQXR0ci5sb2NhbE5hbWUoKSwgbV9zZWVkKQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgbG9uZywgSW50ZWdl
ciwgaW50ZWdlciwgTnVtT2N0YXZlcywgbnVtT2N0YXZlcywgU1ZHTmFtZXM6Om51bU9jdGF2ZXNB
dHRyLmxvY2FsTmFtZSgpLCBtX251bU9jdGF2ZXMpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlv
biwgU3RpdGNoVGlsZXMsIHN0aXRjaFRpbGVzLCBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyLmxv
Y2FsTmFtZSgpLCBtX3N0aXRjaFRpbGVzKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFR5
cGUsIHR5cGUsIFNWR05hbWVzOjp0eXBlQXR0ci5sb2NhbE5hbWUoKSwgbV90eXBlKQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgZmxvYXQsIE51
bWJlciwgbnVtYmVyLCBTZWVkLCBzZWVkLCBTVkdOYW1lczo6c2VlZEF0dHIsIG1fc2VlZCkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQsIGxvbmcs
IEludGVnZXIsIGludGVnZXIsIE51bU9jdGF2ZXMsIG51bU9jdGF2ZXMsIFNWR05hbWVzOjpudW1P
Y3RhdmVzQXR0ciwgbV9udW1PY3RhdmVzKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFN0
aXRjaFRpbGVzLCBzdGl0Y2hUaWxlcywgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgbV9zdGl0
Y2hUaWxlcykKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBUeXBlLCB0eXBlLCBTVkdOYW1l
czo6dHlwZUF0dHIsIG1fdHlwZSkKIAogdm9pZCBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTIgKzYyLDEyIEBAIFNWR0ZpbHRl
ckVsZW1lbnQ6On5TVkdGaWx0ZXJFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRp
b24sIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cywgU1ZHTmFtZXM6OmZpbHRlclVuaXRzQXR0ci5s
b2NhbE5hbWUoKSwgbV9maWx0ZXJVbml0cykKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR0ZpbHRlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQcmltaXRp
dmVVbml0cywgcHJpbWl0aXZlVW5pdHMsIFNWR05hbWVzOjpwcmltaXRpdmVVbml0c0F0dHIubG9j
YWxOYW1lKCksIG1fcHJpbWl0aXZlVW5pdHMpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBTVkdO
YW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNW
R05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5J
VElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgs
IHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX3dpZHRoKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLmxvY2FsTmFt
ZSgpLCBtX2hlaWdodCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVs
ZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBGaWx0ZXJVbml0cywgZmlsdGVy
VW5pdHMsIFNWR05hbWVzOjpmaWx0ZXJVbml0c0F0dHIsIG1fZmlsdGVyVW5pdHMpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9u
LCBlbnVtZXJhdGlvbiwgUHJpbWl0aXZlVW5pdHMsIHByaW1pdGl2ZVVuaXRzLCBTVkdOYW1lczo6
cHJpbWl0aXZlVW5pdHNBdHRyLCBtX3ByaW1pdGl2ZVVuaXRzKQorQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
WCwgeCwgU1ZHTmFtZXM6OnhBdHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdO
YW1lczo6eUF0dHIsIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRl
ckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFt
ZXM6OndpZHRoQXR0ciwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0ZpbHRlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgbV9oZWlnaHQpCiBBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBJbnRlZ2VyLCBpbnRlZ2VyLCBGaWx0ZXJS
ZXNYLCBmaWx0ZXJSZXNYLCAiZmlsdGVyUmVzWCIsIG1fZmlsdGVyUmVzWCkKIEFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR0ZpbHRlckVsZW1lbnQsIGxvbmcsIEludGVnZXIsIGludGVn
ZXIsIEZpbHRlclJlc1ksIGZpbHRlclJlc1ksICJmaWx0ZXJSZXNZIiwgbV9maWx0ZXJSZXNZKQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaXRUb1ZpZXdCb3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29y
ZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdGaXRUb1Zp
ZXdCb3guaCIKIApAQCAtNDQsOCArNDUsOCBAQCBTVkdGaXRUb1ZpZXdCb3g6On5TVkdGaXRUb1Zp
ZXdCb3goKQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NPTlRF
WFQoU1ZHRml0VG9WaWV3Qm94LCBGbG9hdFJlY3QsIFJlY3QsIHJlY3QsIFZpZXdCb3gsIHZpZXdC
b3gsIFNWR05hbWVzOjp2aWV3Qm94QXR0ci5sb2NhbE5hbWUoKSwgbV92aWV3Qm94KQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DT05URVhUKFNWR0ZpdFRvVmlld0JveCwgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyosIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0
UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR05hbWVz
OjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ci5sb2NhbE5hbWUoKSwgbV9wcmVzZXJ2ZUFzcGVjdFJh
dGlvLmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlNfV0lUSF9DT05URVhUKFNW
R0ZpdFRvVmlld0JveCwgRmxvYXRSZWN0LCBSZWN0LCByZWN0LCBWaWV3Qm94LCB2aWV3Qm94LCBT
VkdOYW1lczo6dmlld0JveEF0dHIsIG1fdmlld0JveCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TX1dJVEhfQ09OVEVYVChTVkdGaXRUb1ZpZXdCb3gsIFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIsIG1fcHJlc2VydmVBc3BlY3RSYXRpby5nZXQoKSkKIAogYm9vbCBTVkdGaXRUb1Zp
ZXdCb3g6OnBhcnNlVmlld0JveChjb25zdCBVQ2hhciomIGMsIGNvbnN0IFVDaGFyKiBlbmQsIGZs
b2F0JiB4LCBmbG9hdCYgeSwgZmxvYXQmIHcsIGZsb2F0JiBoLCBib29sIHZhbGlkYXRlKQogewpA
QCAtMTEwLDggKzExMSwxMiBAQCBib29sIFNWR0ZpdFRvVmlld0JveDo6cGFyc2VNYXBwZWRBdHRy
aWJ1CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFNWR0ZpdFRvVmlld0JveDo6aXNLbm93
bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICByZXR1cm4g
KGF0dHJOYW1lID09IFNWR05hbWVzOjp2aWV3Qm94QXR0ciB8fAorICAgICAgICAgICAgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKTsKIH0KIAotI2VuZGlmIC8v
IEVOQUJMRShTVkcpCit9CiAKLS8vIHZpbTp0cz00Om5vZXQKKyNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9z
dmcvU1ZHRml0VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDExICsyMiwxMiBAQAogCiAjaWZuZGVmIFNW
R0ZpdFRvVmlld0JveF9oCiAjZGVmaW5lIFNWR0ZpdFRvVmlld0JveF9oCi0jaWYgRU5BQkxFKFNW
RykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbzsKIApAQCAtNDAsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtIHZpZXdCb3hUb1ZpZXdUcmFuc2Zv
cm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25zdDsKIAogICAgICAgICBi
b29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICBib29s
IGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29u
c3QgPSAwOwpAQCAtNTMsNSArNTUsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFNWR0ZpdFRvVmlld0JveF9oCi0KLS8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTAgQEAgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6
On5TVkdGb3JlaWduT2JqZQogewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwg
U1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgp
LCBtX3dpZHRoKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdO
YW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxl
bmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLCBtX3kpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLCBtX3dpZHRoKQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgbV9o
ZWlnaHQpCiAKIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdHRWxlbWVudC5jcHAJKHJldmlz
aW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBA
IC01Miw2ICs1MiwyOSBAQCB2b2lkIFNWR0dFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
CiAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQogCit2b2lkIFNWR0dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghcmVuZGVy
ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpj
bGlwUGF0aFVuaXRzQXR0ciB8fAorICAgICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkgfHwgCisgICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICByZW5kZXJlcigpLT5zZXRO
ZWVkc0xheW91dCh0cnVlKTsKK30KKwordm9pZCBTVkdHRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KCkKK3sKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KCk7CisKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNM
YXlvdXQodHJ1ZSk7Cit9CisKIFJlbmRlck9iamVjdCogU1ZHR0VsZW1lbnQ6OmNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIHJldHVy
biBuZXcgKGFyZW5hKSBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyKHRoaXMpOwpAQCAt
NjAsNSArODMsMyBAQCBSZW5kZXJPYmplY3QqIFNWR0dFbGVtZW50OjpjcmVhdGVSZW5kZXJlCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0dFbGVt
ZW50LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUg
cHJvamVjdApAQCAtMjQsMTkgKzI0LDE3IEBACiAjZGVmaW5lIFNWR0dFbGVtZW50X2gKIAogI2lm
IEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgi
CiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHR0VsZW1lbnQgOiBwdWJs
aWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFu
Z1NwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQKLSAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdHRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZH
R0VsZW1lbnQoKTsKQEAgLTQ0LDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAg
dmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgp
OyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0
dHJpYnV0ZSopOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQo
KTsKIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCkBAIC02Miw1ICs2MiwzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC00
NCw3ICs0NCw3IEBAIFNWR0dyYWRpZW50RWxlbWVudDo6U1ZHR3JhZGllbnRFbGVtZW50KGMKICAg
ICAsIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgbV9zcHJlYWRNZXRob2Qo
MCkKICAgICAsIG1fZ3JhZGllbnRVbml0cyhTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JK
RUNUQk9VTkRJTkdCT1gpCi0gICAgLCBtX2dyYWRpZW50VHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zv
cm1MaXN0KCkpCisgICAgLCBtX2dyYWRpZW50VHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0
KFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIpKQogewogfQogCkBAIC01Miw5ICs1Miw5
IEBAIFNWR0dyYWRpZW50RWxlbWVudDo6flNWR0dyYWRpZW50RWxlbWVudCgKIHsKIH0KIAotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsIEVudW1l
cmF0aW9uLCBlbnVtZXJhdGlvbiwgR3JhZGllbnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHTmFt
ZXM6OmdyYWRpZW50VW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX2dyYWRpZW50VW5pdHMpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIFNWR1RyYW5zZm9y
bUxpc3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBHcmFkaWVudFRyYW5zZm9ybSwg
Z3JhZGllbnRUcmFuc2Zvcm0sIFNWR05hbWVzOjpncmFkaWVudFRyYW5zZm9ybUF0dHIubG9jYWxO
YW1lKCksIG1fZ3JhZGllbnRUcmFuc2Zvcm0uZ2V0KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9u
LCBTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZHTmFtZXM6OnNwcmVhZE1ldGhvZEF0dHIu
bG9jYWxOYW1lKCksIG1fc3ByZWFkTWV0aG9kKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHR3JhZGllbnRFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgR3Jh
ZGllbnRVbml0cywgZ3JhZGllbnRVbml0cywgU1ZHTmFtZXM6OmdyYWRpZW50VW5pdHNBdHRyLCBt
X2dyYWRpZW50VW5pdHMpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdHcmFkaWVu
dEVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0
LCBHcmFkaWVudFRyYW5zZm9ybSwgZ3JhZGllbnRUcmFuc2Zvcm0sIFNWR05hbWVzOjpncmFkaWVu
dFRyYW5zZm9ybUF0dHIsIG1fZ3JhZGllbnRUcmFuc2Zvcm0uZ2V0KCkpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdHcmFkaWVudEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVu
dW1lcmF0aW9uLCBTcHJlYWRNZXRob2QsIHNwcmVhZE1ldGhvZCwgU1ZHTmFtZXM6OnNwcmVhZE1l
dGhvZEF0dHIsIG1fc3ByZWFkTWV0aG9kKQogCiB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpAQCAtODYsMTMgKzg2
LDI4IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHIKICAgICB9CiB9
CiAKLXZvaWQgU1ZHR3JhZGllbnRFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25z
dAordm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFtX3Jlc291cmNlIHx8ICFhdHRhY2hl
ZCgpIHx8IGRvY3VtZW50KCktPnBhcnNpbmcoKSkKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghbV9yZXNvdXJjZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9yZXNvdXJjZS0+aW52YWxpZGF0ZSgpOwotICAgIG1fcmVzb3Vy
Y2UtPnJlcGFpbnRDbGllbnRzKCk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpncmFk
aWVudFVuaXRzQXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6Z3JhZGllbnRU
cmFuc2Zvcm1BdHRyIHx8CisgICAgICAgIGF0dHJOYW1lID09IFNWR05hbWVzOjpzcHJlYWRNZXRo
b2RBdHRyIHx8CisgICAgICAgIFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgIG1fcmVzb3VyY2UtPmludmFsaWRhdGUoKTsKK30K
Kwordm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCit7CisgICAgU1ZH
U3R5bGVkRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAobV9yZXNvdXJjZSkK
KyAgICAgICAgbV9yZXNvdXJjZS0+aW52YWxpZGF0ZSgpOwogfQogCiBSZW5kZXJPYmplY3QqIFNW
R0dyYWRpZW50RWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5hLCBSZW5k
ZXJTdHlsZSopCkBAIC0xMTUsMzYgKzEzMCw0NyBAQCBTVkdSZXNvdXJjZSogU1ZHR3JhZGllbnRF
bGVtZW50OjpjYW52YXNSCiBWZWN0b3I8U1ZHR3JhZGllbnRTdG9wPiBTVkdHcmFkaWVudEVsZW1l
bnQ6OmJ1aWxkU3RvcHMoKSBjb25zdAogewogICAgIFZlY3RvcjxTVkdHcmFkaWVudFN0b3A+IHN0
b3BzOwotCi0gICAgLy8gRklYTUU6IE1hbnVhbCBzdHlsZSByZXNvbHV0aW9uIGlzIGEgaGFjawog
ICAgIFJlbmRlclN0eWxlKiBncmFkaWVudFN0eWxlID0gMDsKKwogICAgIGZvciAoTm9kZSogbiA9
IGZpcnN0Q2hpbGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgU1ZHRWxl
bWVudCogZWxlbWVudCA9IDA7Ci0gICAgICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSkKLSAgICAg
ICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obik7CisgICAgICAgIFNW
R0VsZW1lbnQqIGVsZW1lbnQgPSBuLT5pc1NWR0VsZW1lbnQoKSA/IHN0YXRpY19jYXN0PFNWR0Vs
ZW1lbnQqPihuKSA6IDA7CisKICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNHcmFk
aWVudFN0b3AoKSkgewogICAgICAgICAgICAgU1ZHU3RvcEVsZW1lbnQqIHN0b3AgPSBzdGF0aWNf
Y2FzdDxTVkdTdG9wRWxlbWVudCo+KGVsZW1lbnQpOwogICAgICAgICAgICAgZmxvYXQgc3RvcE9m
ZnNldCA9IHN0b3AtPm9mZnNldCgpOwogCi0gICAgICAgICAgICBpZiAoIXN0b3AtPnJlbmRlcmVy
KCkgJiYgIWdyYWRpZW50U3R5bGUpCi0gICAgICAgICAgICAgICAgZ3JhZGllbnRTdHlsZSA9IGNv
bnN0X2Nhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Kj4odGhpcyktPnN0eWxlRm9yUmVuZGVyZXIocGFy
ZW50KCktPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgQ29sb3IgY29sb3I7CisgICAgICAgICAg
ICBmbG9hdCBvcGFjaXR5OworCisgICAgICAgICAgICBpZiAoc3RvcC0+cmVuZGVyZXIoKSkgewor
ICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBzdG9wU3R5bGUgPSBzdG9wLT5yZW5kZXJlcigp
LT5zdHlsZSgpOworICAgICAgICAgICAgICAgIGNvbG9yID0gc3RvcFN0eWxlLT5zdmdTdHlsZSgp
LT5zdG9wQ29sb3IoKTsKKyAgICAgICAgICAgICAgICBvcGFjaXR5ID0gc3RvcFN0eWxlLT5zdmdT
dHlsZSgpLT5zdG9wT3BhY2l0eSgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyBJZiB0aGVyZSBpcyBubyByZW5kZXJlciBmb3IgdGhpcyBzdG9wIGVsZW1lbnQsIHRo
ZW4gYSBwYXJlbnQgZWxlbWVudAorICAgICAgICAgICAgICAgIC8vIHNldCBkaXNwbGF5PSJub25l
IiAtIGllLiA8ZyBkaXNwbGF5PSJub25lIj48bGluZWFyR3JhZGllbnQ+PHN0b3A+Li4KKyAgICAg
ICAgICAgICAgICAvLyBVbmZvcnR1bmF0ZWx5IHdlIGhhdmUgdG8gbWFudWFsbHkgcmVidWlsZCB0
aGUgc3RvcCBzdHlsZS4gU2VlIHBzZXJ2ZXJzLWdyYWQtMTktYi5zdmcKKyAgICAgICAgICAgICAg
ICBpZiAoIWdyYWRpZW50U3R5bGUpCisgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50U3R5bGUg
PSBjb25zdF9jYXN0PFNWR0dyYWRpZW50RWxlbWVudCo+KHRoaXMpLT5zdHlsZUZvclJlbmRlcmVy
KHBhcmVudCgpLT5yZW5kZXJlcigpKTsKKworICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBz
dG9wU3R5bGUgPSBzdG9wLT5yZXNvbHZlU3R5bGUoZ3JhZGllbnRTdHlsZSk7CisKKyAgICAgICAg
ICAgICAgICBjb2xvciA9IHN0b3BTdHlsZS0+c3ZnU3R5bGUoKS0+c3RvcENvbG9yKCk7CisgICAg
ICAgICAgICAgICAgb3BhY2l0eSA9IHN0b3BTdHlsZS0+c3ZnU3R5bGUoKS0+c3RvcE9wYWNpdHko
KTsKIAotICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHN0b3BTdHlsZSA9IHN0b3AtPnJlc29sdmVT
dHlsZShncmFkaWVudFN0eWxlKTsKLSAgICAgICAgICAgIENvbG9yIGMgPSBzdG9wU3R5bGUtPnN2
Z1N0eWxlKCktPnN0b3BDb2xvcigpOwotICAgICAgICAgICAgZmxvYXQgb3BhY2l0eSA9IHN0b3BT
dHlsZS0+c3ZnU3R5bGUoKS0+c3RvcE9wYWNpdHkoKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgc3RvcHMuYXBwZW5kKG1ha2VHcmFkaWVudFN0b3Aoc3RvcE9mZnNldCwgbWFrZVJHQkEoYy5y
ZWQoKSwgYy5ncmVlbigpLCBjLmJsdWUoKSwgaW50KG9wYWNpdHkgKiAyNTUuKSkpKTsKLSAgICAg
ICAgICAgIHN0b3BTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CisgICAg
ICAgICAgICAgICAgc3RvcFN0eWxlLT5kZXJlZihkb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RvcHMuYXBwZW5kKG1ha2VHcmFkaWVudFN0
b3Aoc3RvcE9mZnNldCwgbWFrZVJHQkEoY29sb3IucmVkKCksIGNvbG9yLmdyZWVuKCksIGNvbG9y
LmJsdWUoKSwgaW50KG9wYWNpdHkgKiAyNTUuKSkpKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGlmIChncmFkaWVudFN0eWxlKQogICAgICAgICBncmFkaWVudFN0eWxlLT5kZXJlZihkb2N1bWVu
dCgpLT5yZW5kZXJBcmVuYSgpKTsKKwogICAgIHJldHVybiBzdG9wczsKIH0KIAogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHR3JhZGll
bnRFbGVtZW50LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDE5ICsyNCwxOSBAQAogI2RlZmluZSBTVkdHcmFk
aWVudEVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR1BhaW50U2Vy
dmVyR3JhZGllbnQuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgi
CiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5j
ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdHcmFkaWVudEVsZW1l
bnQ7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKKwogICAgIGNsYXNzIFNWR0dyYWRpZW50
RWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVx
dWlyZWQgewogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBTVkdHcmFkaWVudFR5cGUgewogICAg
ICAgICAgICAgU1ZHX1NQUkVBRE1FVEhPRF9VTktOT1dOID0gMCwKQEAgLTQ5LDggKzQ5LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdHcmFkaWVudEVsZW1lbnQo
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBj
b25zdDsKLSAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKCk7CiAgICAgICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CiAKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJj
ZSogY2FudmFzUmVzb3VyY2UoKTsKQEAgLTc5LDUgKzgwLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDYgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KIApA
QCAtNTYsMTEgKzU2LDExIEBAIFNWR0ltYWdlRWxlbWVudDo6flNWR0ltYWdlRWxlbWVudCgpCiB7
CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgp
LCBtX3gpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUo
KSwgbV95KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHSW1hZ2VFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0
dHIubG9jYWxOYW1lKCksIG1fd2lkdGgpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhT
VkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCi1BTklNQVRFRF9Q
Uk9QRVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8qLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFz
cGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIubG9jYWxOYW1lKCksIG1fcHJlc2VydmVBc3BlY3RSYXRpby5nZXQoKSkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0ltYWdlRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFksIHksIFNWR05hbWVzOjp5QXR0ciwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHSW1hZ2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lk
dGgsIFNWR05hbWVzOjp3aWR0aEF0dHIsIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdo
dCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdJbWFnZUVsZW1lbnQsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8q
LCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRp
b0F0dHIsIG1fcHJlc2VydmVBc3BlY3RSYXRpby5nZXQoKSkKIAogdm9pZCBTVkdJbWFnZUVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSAqYXR0cikKIHsKQEAgLTg5
LDIxICs4OSwzMyBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikpIHsK
LSAgICAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkubWF0Y2hlcyhYTGlua05hbWVzOjpocmVmQXR0
cikgJiYgYXR0YWNoZWQoKSkKLSAgICAgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnVwZGF0ZUZy
b21FbGVtZW50KCk7CisgICAgICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIFNW
R1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
ICAgICB9CiB9CiAKLXZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2Uo
KSBjb25zdAordm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5wYXJzaW5n
KCkgJiYgcmVuZGVyZXIoKSkKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisKKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGJvb2wgaXNVUklBdHRyaWJ1dGUgPSBTVkdVUklSZWZlcmVuY2U6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpOworCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp4MUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0ciB8fAorICAgICAgICBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5MkF0
dHIgfHwKKyAgICAgICAgU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8Cisg
ICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAg
ICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkgfHwKKyAgICAgICAgaXNVUklBdHRyaWJ1dGUgfHwKKyAgICAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIHJl
bmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpOworICAgICAgICBpZiAoaXNVUklB
dHRyaWJ1dGUpCisgICAgICAgICAgICBtX2ltYWdlTG9hZGVyLnVwZGF0ZUZyb21FbGVtZW50KCk7
CisgICAgfQogfQogCiBib29sIFNWR0ltYWdlRWxlbWVudDo6aGFzUmVsYXRpdmVWYWx1ZXMoKSBj
b25zdApAQCAtMTMzLDUgKzE0NSwzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjphdHRhY2goKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU1ZHSW1hZ2VFbGVt
ZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHSW1h
Z2VMb2FkZXIuaCIKQEAgLTMyLDI3ICszMSwyNCBAQAogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAj
aW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1l
c3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOwogICAg
IGNsYXNzIFNWR0xlbmd0aDsKLSAgICBjbGFzcyBTVkdEb2N1bWVudDsKIAogICAgIGNsYXNzIFNW
R0ltYWdlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlCi0gICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UgewogICAgIHB1YmxpYzoK
ICAgICAgICAgU1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogICAgICAgICB2aXJ0dWFsIH5TVkdJbWFnZUVsZW1lbnQoKTsKICAgICAgICAgCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQo
KTsgfQogCi0gICAgICAgIC8vICdTVkdJbWFnZUVsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIApAQCAtODMsNSArNzksMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0xhbmdTcGFjZS5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2Vi
Q29yZS9zdmcvU1ZHTGFuZ1NwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtNzYsOCArNzYsMTIgQEAg
Ym9vbCBTVkdMYW5nU3BhY2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorYm9vbCBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgcmV0dXJuIChhdHRyTmFtZS5tYXRjaGVzKFhNTE5h
bWVzOjpsYW5nQXR0cikgfHwKKyAgICAgICAgICAgIGF0dHJOYW1lLm1hdGNoZXMoWE1MTmFtZXM6
OnNwYWNlQXR0cikpOwogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKK30KIAotLy8gdmltOnRz
PTQ6bm9ldAorI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMYW5n
U3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuaAkocmV2aXNp
b24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdMYW5nU3BhY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MjQsMTkgKzI0LDE4IEBACiAjZGVmaW5lIFNWR0xhbmdTcGFjZV9oCiAKICNpZiBFTkFCTEUoU1ZH
KQotCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGNsYXNzIE1hcHBlZEF0dHJpYnV0ZTsKKyAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwogCiAg
ICAgY2xhc3MgU1ZHTGFuZ1NwYWNlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0xhbmdTcGFj
ZSgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdMYW5nU3BhY2UoKTsKIAotICAgICAgICAvLyAnU1ZH
TGFuZ1NwYWNlJyBmdW5jdGlvbnMKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiB4bWxsYW5n
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0WG1sbGFuZyhjb25zdCBBdG9taWNTdHJpbmcmIHht
bExhbmcpOwogCkBAIC00NCw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzZXRYbWxzcGFjZShjb25zdCBBdG9taWNTdHJpbmcmIHhtbFNwYWNlKTsKIAogICAgICAg
ICBib29sIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICBi
b29sIGlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgQXRvbWljU3RyaW5nIG1fbGFuZzsKQEAgLTU0LDUgKzU0LDMgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdMYW5n
U3BhY2VfaAotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMZW5ndGhM
aXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAkocmV2
aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5p
a29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
IAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjksOCArMjks
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0xlbmd0aExpc3Q6OlNWR0xlbmd0aExp
c3QoKQotICAgIDogU1ZHUE9ETGlzdDxTVkdMZW5ndGg+KCkKK1NWR0xlbmd0aExpc3Q6OlNWR0xl
bmd0aExpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICA6IFNWR1BP
RExpc3Q8U1ZHTGVuZ3RoPihhdHRyaWJ1dGVOYW1lKQogewogfQogCkBAIC02Miw1ICs2MiwzIEBA
IHZvaWQgU1ZHTGVuZ3RoTGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiAKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xl
bmd0aExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHJl
dmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CkBAIC0yNCwxNiArMjQsMTQgQEAKICNkZWZpbmUgU1ZHTGVuZ3RoTGlzdF9oCiAKICNpZiBFTkFC
TEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHTGlzdC5oIgog
Ci1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJsaWMg
U1ZHUE9ETGlzdDxTVkdMZW5ndGg+Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgU1ZHTGVuZ3RoTGlzdCA6IHB1YmxpYyBTVkdQT0RMaXN0PFNWR0xlbmd0aD4gewogICAg
IHB1YmxpYzoKLSAgICAgICAgU1ZHTGVuZ3RoTGlzdCgpOworICAgICAgICBTVkdMZW5ndGhMaXN0
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCB+U1ZHTGVuZ3RoTGlzdCgp
OwogCiAgICAgICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU1ZHU3R5
bGVkRWxlbWVudCogY29udGV4dCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKTsKQEAgLTQzLDUgKzQxLDMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYKLQot
Ly8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5
NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtv
bGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAg
LTQ4LDEwICs0OCwxMCBAQCBTVkdMaW5lRWxlbWVudDo6flNWR0xpbmVFbGVtZW50KCkKIHsKIH0K
IAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ci5sb2NhbE5hbWUoKSwg
bV94MSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZMSwgeTEsIFNWR05hbWVzOjp5MUF0dHIubG9jYWxOYW1l
KCksIG1feTEpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgyLCBTVkdOYW1lczo6eDJBdHRyLmxvY2Fs
TmFtZSgpLCBtX3gyKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1l
bnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5MiwgU1ZHTmFtZXM6OnkyQXR0ci5s
b2NhbE5hbWUoKSwgbV95MikKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVF
bGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0
dHIsIG1feDEpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lRWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTEsIHkxLCBTVkdOYW1lczo6eTFBdHRyLCBtX3kx
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZUVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFgyLCB4MiwgU1ZHTmFtZXM6OngyQXR0ciwgbV94MikKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIsIG1feTIpCiAKIHZvaWQgU1ZHTGlu
ZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsK
QEAgLTc1LDEyICs3NSwyMCBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0CiAgICAgfQogfQogCi12b2lkIFNWR0xpbmVFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFu
Z2UoKSBjb25zdAordm9pZCBTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoIWRvY3VtZW50KCktPnBhcnNp
bmcoKSAmJiByZW5kZXJlcigpKQotICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0
cnVlKTsKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CisKKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybjsK
IAotICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFu
Z2UoKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6eTFBdHRyIHx8CisgICAgICAgIGF0dHJOYW1lID09IFNWR05hbWVzOjp4MkF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0ciB8fAorICAgICAgICBTVkdUZXN0czo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAg
IHJlbmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCiBQYXRoIFNWR0xpbmVFbGVt
ZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKQEAgLTk4LDUgKzEwNiwzIEBAIGJvb2wgU1ZHTGluZUVs
ZW1lbnQ6Omhhc1JlbGF0aXZlVmFsdWVzKCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24gMjk5NTAp
CisrKyBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgog
CiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwyOSArMjQs
MjcgQEAKICNkZWZpbmUgU1ZHTGluZUVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2lu
Y2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJTVkdMYW5n
U3BhY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR1Rlc3RzLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKICAgICBjbGFzcyBTVkdMZW5ndGg7CisKICAgICBjbGFzcyBTVkdMaW5lRWxlbWVu
dCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdMYW5nU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFNWR0xpbmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OwogICAgICAgICB2aXJ0dWFsIH5TVkdMaW5lRWxlbWVudCgpOwogICAgICAgICAKICAgICAgICAg
dmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgp
OyB9CiAKLSAgICAgICAgLy8gJ1NWR0xpbmVFbGVtZW50JyBmdW5jdGlvbnMKLSAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAKICAgICAgICAgdmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIApAQCAt
NjksNSArNjcsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
ICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAg
ICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtNTEsMTAgKzUxLDEw
IEBAIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6flNWR0xpbmVhckdyYWQKIHsKIH0KIAotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdM
ZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMSwgeDEsIFNWR05hbWVzOjp4MUF0dHIubG9jYWxOYW1l
KCksIG1feDEpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkxLCB5MSwgU1ZHTmFtZXM6Onkx
QXR0ci5sb2NhbE5hbWUoKSwgbV95MSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWDIsIHgy
LCBTVkdOYW1lczo6eDJBdHRyLmxvY2FsTmFtZSgpLCBtX3gyKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwg
bGVuZ3RoLCBZMiwgeTIsIFNWR05hbWVzOjp5MkF0dHIubG9jYWxOYW1lKCksIG1feTIpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgxLCB4MSwgU1ZHTmFtZXM6OngxQXR0ciwgbV94MSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR0xpbmVhckdyYWRpZW50RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWTEsIHkxLCBTVkdOYW1lczo6eTFBdHRyLCBtX3kxKQor
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYMiwgeDIsIFNWR05hbWVzOjp4MkF0dHIsIG1feDIp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFkyLCB5MiwgU1ZHTmFtZXM6OnkyQXR0ciwgbV95
MikKIAogdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKQEAgLTcwLDYgKzcwLDE4IEBAIHZvaWQgU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHAKICAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBTVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCit7CisgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKKworICAgIGlmICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp4MUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Onkx
QXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjp5MkF0dHIpCisgICAgICAgIG1fcmVzb3VyY2UtPmludmFsaWRhdGUoKTsK
K30KKwogdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkR3JhZGllbnQoKSBjb25z
dAogewogICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0gY29sbGVjdEdy
YWRpZW50UHJvcGVydGllcygpOwpAQCAtMTUwLDUgKzE2MiwzIEBAIExpbmVhckdyYWRpZW50QXR0
cmlidXRlcyBTVkdMaW5lYXJHcmFkaWUKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5o
CShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwg
MjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIEtERSBwcm9qZWN0CkBAIC0yNCwyMiArMjQsMjAgQEAKICNkZWZpbmUgU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdHcmFkaWVu
dEVsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KwogICAgIHN0cnVjdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXM7CiAgICAgY2xhc3MgU1ZHTGVu
Z3RoOwogCi0gICAgY2xhc3MgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50IDogcHVibGljIFNWR0dy
YWRpZW50RWxlbWVudAotICAgIHsKKyAgICBjbGFzcyBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQg
OiBwdWJsaWMgU1ZHR3JhZGllbnRFbGVtZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR0xp
bmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAg
ICAgICAgdmlydHVhbCB+U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KCk7CiAKLSAgICAgICAgLy8g
J1NWR0xpbmVhckdyYWRpZW50RWxlbWVudCcgZnVuY3Rpb25zCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIHZvaWQgYnVpbGRHcmFkaWVudCgpIGNvbnN0OwpA
QCAtNjEsNSArNTksMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGlzdC5oCShyZXZpc2lvbiAyOTk1MCkK
KysrIFdlYkNvcmUvc3ZnL1NWR0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMTggKzI0LDE4IEBACiAjZGVm
aW5lIFNWR0xpc3RfaAogCiAjaWYgRU5BQkxFKFNWRykKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU1ZHTGlzdFRyYWl0cy5o
IgogCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlICJTVkdMaXN0VHJhaXRz
LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKKwogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEl0ZW0+Ci0gICAgc3RydWN0IFNWR0xpc3RUeXBlT3BlcmF0aW9u
cwotICAgIHsKKyAgICBzdHJ1Y3QgU1ZHTGlzdFR5cGVPcGVyYXRpb25zIHsKICAgICAgICAgc3Rh
dGljIEl0ZW0gbnVsbEl0ZW0oKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU1ZHTGlz
dFRyYWl0czxVc2VzRGVmYXVsdEluaXRpYWxpemVyPEl0ZW0+Ojp2YWx1ZSwgSXRlbT46Om51bGxJ
dGVtKCk7CkBAIC00MywxNSArNDMsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH07CiAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgotICAgIGNsYXNzIFNWR0xpc3QgOiBwdWJsaWMg
UmVmQ291bnRlZDxTVkdMaXN0PEl0ZW0+ID4KLSAgICB7CisgICAgY2xhc3MgU1ZHTGlzdCA6IHB1
YmxpYyBSZWZDb3VudGVkPFNWR0xpc3Q8SXRlbT4gPiB7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
dHlwZWRlZiBTVkdMaXN0VHlwZU9wZXJhdGlvbnM8SXRlbT4gVHlwZU9wZXJhdGlvbnM7CiAKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFNWR0xpc3QoKSB7IH0KKyAgICAgICAgU1ZHTGlzdChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKSAKKyAgICAgICAgICAgIDogbV9hc3NvY2lhdGVk
QXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAg
ICAgICB2aXJ0dWFsIH5TVkdMaXN0KCkgeyBtX3ZlY3Rvci5jbGVhcigpOyB9CiAKKyAgICAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2Fzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lOyB9CisKICAgICAgICAgdW5zaWduZWQgaW50
IG51bWJlck9mSXRlbXMoKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KICAgICAg
ICAgdm9pZCBjbGVhcihFeGNlcHRpb25Db2RlICYpIHsgbV92ZWN0b3IuY2xlYXIoKTsgfQogCkBA
IC0xMzAsMTEgKzEzNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBWZWN0b3I8SXRlbT4gbV92ZWN0b3I7CisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIG1fYXNzb2NpYXRlZEF0dHJpYnV0ZU5hbWU7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEl0ZW0+Ci0gICAgY2xhc3MgU1ZHUE9ETGlzdEl0ZW0gOiBwdWJsaWMgUmVmQ291bnRl
ZDxTVkdQT0RMaXN0SXRlbTxJdGVtPiA+Ci0gICAgeworICAgIGNsYXNzIFNWR1BPRExpc3RJdGVt
IDogcHVibGljIFJlZkNvdW50ZWQ8U1ZHUE9ETGlzdEl0ZW08SXRlbT4gPiB7CiAgICAgcHVibGlj
OgogICAgICAgICBTVkdQT0RMaXN0SXRlbSgpIDogbV9pdGVtKCkgeyB9CiAgICAgICAgIFNWR1BP
RExpc3RJdGVtKGNvbnN0IEl0ZW0mIGl0ZW0pIDogbV9pdGVtKGl0ZW0pIHsgfQpAQCAtMTU0LDcg
KzE1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTVkdQT0RMaXN0IDogcHVi
bGljIFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJdGVtPEl0ZW0+ID4gPgogICAgIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFNWR1BPRExpc3QoKSA6IFNWR0xpc3Q8UmVmUHRyPFNWR1BPRExpc3RJ
dGVtPEl0ZW0+ID4gPigpIHsgfQorICAgICAgICBTVkdQT0RMaXN0KGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUpIDogU1ZHTGlzdDxSZWZQdHI8U1ZHUE9ETGlzdEl0ZW08SXRlbT4g
PiA+KGF0dHJpYnV0ZU5hbWUpIHsgfQogCiAgICAgICAgIEl0ZW0gaW5pdGlhbGl6ZShJdGVtIG5l
d0l0ZW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICB7CkBAIC0yNDIsNSArMjQ3LDMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBT
VkdMaXN0X2gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTU4LDEzICs1OCwxMyBAQCBTVkdNYXJr
ZXJFbGVtZW50Ojp+U1ZHTWFya2VyRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgs
IFJlZlgsIHJlZlgsIFNWR05hbWVzOjpyZWZYQXR0ci5sb2NhbE5hbWUoKSwgbV9yZWZYKQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgUmVmWSwgcmVmWSwgU1ZHTmFtZXM6OnJlZllBdHRyLmxvY2FsTmFtZSgp
LCBtX3JlZlkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVtZW50
LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgTWFya2VyVW5pdHMsIG1hcmtlclVuaXRz
LCBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyLmxvY2FsTmFtZSgpLCBtX21hcmtlclVuaXRzKQot
QU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgTWFya2VyV2lkdGgsIG1hcmtlcldpZHRoLCBTVkdOYW1lczo6bWFy
a2VyV2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBtX21hcmtlcldpZHRoKQotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgTWFya2VySGVpZ2h0LCBtYXJrZXJIZWlnaHQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRy
LmxvY2FsTmFtZSgpLCBtX21hcmtlckhlaWdodCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBPcmll
bnRUeXBlLCBvcmllbnRUeXBlLCAib3JpZW50VHlwZSIsIG1fb3JpZW50VHlwZSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xlKiwgQW5nbGUs
IGFuZ2xlLCBPcmllbnRBbmdsZSwgb3JpZW50QW5nbGUsICJvcmllbnRBbmdsZSIsIG1fb3JpZW50
QW5nbGUuZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXJrZXJFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBSZWZYLCByZWZYLCBTVkdOYW1lczo6cmVm
WEF0dHIsIG1fcmVmWCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVs
ZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFJlZlksIHJlZlksIFNWR05hbWVzOjpy
ZWZZQXR0ciwgbV9yZWZZKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFya2Vy
RWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1hcmtlclVuaXRzLCBtYXJr
ZXJVbml0cywgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgbV9tYXJrZXJVbml0cykKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIE1hcmtlcldpZHRoLCBtYXJrZXJXaWR0aCwgU1ZHTmFtZXM6Om1hcmtlcldp
ZHRoQXR0ciwgbV9tYXJrZXJXaWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNW
R01hcmtlckVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIE1hcmtlckhlaWdodCwg
bWFya2VySGVpZ2h0LCBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgbV9tYXJrZXJIZWlnaHQp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NVU1RPTV9JREVOVElGSUVSKFNW
R01hcmtlckVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBPcmllbnRUeXBl
LCBvcmllbnRUeXBlLCBTVkdOYW1lczo6b3JpZW50QXR0ciwgIm9yaWVudFR5cGUiLCBtX29yaWVu
dFR5cGUpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OU19XSVRIX0NVU1RPTV9JREVOVElG
SUVSKFNWR01hcmtlckVsZW1lbnQsIFNWR0FuZ2xlKiwgQW5nbGUsIGFuZ2xlLCBPcmllbnRBbmds
ZSwgb3JpZW50QW5nbGUsIFNWR05hbWVzOjpvcmllbnRBdHRyLCAib3JpZW50QW5nbGUiLCBtX29y
aWVudEFuZ2xlLmdldCgpKQogCiB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKQEAgLTk5LDYgKzk5LDM4IEBAIHZvaWQg
U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICB9CiB9CiAKK3ZvaWQgU1ZH
TWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKK3sKKyAgICBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKKworICAgIGlmICghbV9tYXJrZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6bWFya2VyVW5pdHNBdHRyIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpyZWZYQXR0ciB8fAorICAgICAgICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVmWUF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciB8fAorICAgICAgICBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6b3JpZW50QXR0ciB8fAorICAgICAgICBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0ZpdFRvVmlld0JveDo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHU3R5bGVkRWxlbWVudDo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAg
ICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKKyAgICAgICAgCisgICAg
ICAgIG1fbWFya2VyLT5pbnZhbGlkYXRlKCk7CisgICAgfQorfQorCit2b2lkIFNWR01hcmtlckVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKCk7CisKKyAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+
c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisKKyAgICBpZiAobV9tYXJrZXIpCisgICAgICAgIG1fbWFy
a2VyLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50
VG9BdXRvKCkKIHsKICAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKFNWR19NQVJLRVJfT1JJRU5U
X0FVVE8pOwpAQCAtMTQwLDIzICsxNzIsNiBAQCBSZW5kZXJPYmplY3QqIFNWR01hcmtlckVsZW1l
bnQ6OmNyZWF0ZVJlCiAgICAgcmV0dXJuIG1hcmtlckNvbnRhaW5lcjsKIH0KIAotdm9pZCBTVkdN
YXJrZXJFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdAotewotICAgIGlmICgh
bV9tYXJrZXIgfHwgIWF0dGFjaGVkKCkgfHwgZG9jdW1lbnQoKS0+cGFyc2luZygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZW5kZXJTVkdWaWV3cG9ydENvbnRhaW5lciogbWFya2VyQ29udGFp
bmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIqPihyZW5kZXJlcigp
KTsKLQotICAgIC8vIE5PVEU6IFRoaXMgaXMgYSB0eXBpY2FsIGNhc2UsIHdoZXJlIHByb3BlciAi
YXR0cmlidXRlQ2hhbmdlZCIgdXNhZ2Ugd291bGQgcmVkdWNlIHRoZSBudW1iZXIgb2YgdXBkYXRl
cyBuZWVkZWQuCi0gICAgaWYgKG1hcmtlckNvbnRhaW5lcikKLSAgICAgICAgbWFya2VyQ29udGFp
bmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsKLQotICAgIG1fbWFya2VyLT5pbnZhbGlkYXRlKCk7
Ci0gICAgbV9tYXJrZXItPnJlcGFpbnRDbGllbnRzKCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJ
KHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Cisg
ICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwyMyArMjQsMjEgQEAKICNkZWZpbmUgU1ZHTWFya2Vy
RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VNYXJr
ZXIuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5jbHVk
ZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVk
ZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNl
IFdlYkNvcmUgeworCiAgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgY2xhc3MgU1ZHQW5nbGU7CiAg
ICAgCiAgICAgY2xhc3MgU1ZHTWFya2VyRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmlld0Jv
eAotICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmll
d0JveCB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIFNWR01hcmtlclVuaXRzVHlwZSB7CiAg
ICAgICAgICAgICBTVkdfTUFSS0VSVU5JVFNfVU5LTk9XTiAgICAgICAgICAgPSAwLApAQCAtNTcs
MTIgKzU1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIFNWR01hcmtlckVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR01h
cmtlckVsZW1lbnQoKTsKIAotICAgICAgICAvLyAnU1ZHTWFya2VyRWxlbWVudCcgZnVuY3Rpb25z
CiAgICAgICAgIHZvaWQgc2V0T3JpZW50VG9BdXRvKCk7CiAgICAgICAgIHZvaWQgc2V0T3JpZW50
VG9BbmdsZShTVkdBbmdsZSopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0
dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVu
ZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2aXJ0dWFsIFNWR1Jl
c291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwpAQCAtOTAsNSArODgsMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
OCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDUgQWxleGFuZGVyIEtlbGxldHQgPGx5cGFub3ZAa2RlLm9yZz4KIApA
QCAtNjgsMTMgKzY4LDEyIEBAIFNWR01hc2tFbGVtZW50Ojp+U1ZHTWFza0VsZW1lbnQoKQogewog
fQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgaW50LCBF
bnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1hc2tVbml0cywgbWFza1VuaXRzLCBTVkdOYW1lczo6
bWFza1VuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9tYXNrVW5pdHMpCi1BTklNQVRFRF9QUk9QRVJU
WV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRp
b24sIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR05hbWVzOjptYXNrQ29u
dGVudFVuaXRzQXR0ci5sb2NhbE5hbWUoKSwgbV9tYXNrQ29udGVudFVuaXRzKQotCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRyLmxvY2FsTmFtZSgpLCBt
X3dpZHRoKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNW
R0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0
QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9O
UyhTVkdNYXNrRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1hc2tVbml0
cywgbWFza1VuaXRzLCBTVkdOYW1lczo6bWFza1VuaXRzQXR0ciwgbV9tYXNrVW5pdHMpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdNYXNrRWxlbWVudCwgaW50LCBFbnVtZXJhdGlv
biwgZW51bWVyYXRpb24sIE1hc2tDb250ZW50VW5pdHMsIG1hc2tDb250ZW50VW5pdHMsIFNWR05h
bWVzOjptYXNrQ29udGVudFVuaXRzQXR0ciwgbV9tYXNrQ29udGVudFVuaXRzKQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ciwgbV94KQorQU5JTUFURURfUFJPUEVSVFlfREVG
SU5JVElPTlMoU1ZHTWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHks
IFNWR05hbWVzOjp5QXR0ciwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
TWFza0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZH
TmFtZXM6OndpZHRoQXR0ciwgbV93aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR01hc2tFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdo
dCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIG1faGVpZ2h0KQogCiB2b2lkIFNWR01hc2tFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC0xMDks
NiArMTA4LDM0IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAg
ICB9CiB9CiAKK3ZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CisKKyAgICBpZiAoIW1fbWFza2VyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hc2tVbml0c0F0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyIHx8CisgICAgICAgIGF0
dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIg
fHwKKyAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aGVpZ2h0QXR0ciB8fAorICAgICAgICBTVkdVUklSZWZlcmVuY2U6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR1Rlc3RzOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICBtX21hc2tlci0+aW52YWxpZGF0ZSgpOwor
fQorCit2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKQoreworICAgIFNWR1N0
eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpOworCisgICAgaWYgKCFtX21hc2tlcikKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9tYXNrZXItPmludmFsaWRhdGUoKTsKK30KKwogYXV0b19w
dHI8SW1hZ2VCdWZmZXI+IFNWR01hc2tFbGVtZW50OjpkcmF3TWFza2VyQ29udGVudChjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIEZsb2F0UmVjdCYgbWFza0Rlc3RSZWN0KSBjb25zdAogeyAg
ICAKICAgICAvLyBEZXRlcm1pbmUgc3BlY2lmaWVkIG1hc2sgc2l6ZQpAQCAtMTk0LDE5ICsyMjEs
NiBAQCBTVkdSZXNvdXJjZSogU1ZHTWFza0VsZW1lbnQ6OmNhbnZhc1Jlc291CiAgICAgcmV0dXJu
IG1fbWFza2VyLmdldCgpOwogfQogCi12b2lkIFNWR01hc2tFbGVtZW50Ojpub3RpZnlBdHRyaWJ1
dGVDaGFuZ2UoKSBjb25zdAotewotICAgIGlmICghYXR0YWNoZWQoKSB8fCBkb2N1bWVudCgpLT5w
YXJzaW5nKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAobV9tYXNrZXIpIHsKLSAg
ICAgICAgbV9tYXNrZXItPmludmFsaWRhdGUoKTsKLSAgICAgICAgbV9tYXNrZXItPnJlcGFpbnRD
bGllbnRzKCk7Ci0gICAgfQotfQotCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0vLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9uIDI5OTUwKQorKysg
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NiBAQAogI2RlZmluZSBTVkdNYXNrRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5j
bHVkZSAiU1ZHUmVzb3VyY2VNYXNrZXIuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCkBAIC0zMSwyOCArMzAsMjcg
QEAKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgog
Ci1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIEF0dHJpYnV0ZTsKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwogICAgIGNsYXNzIFNWR0xlbmd0aDsKKwogICAgIGNsYXNzIFNWR01hc2tFbGVt
ZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR0xhbmdTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewogICAgIHB1YmxpYzoKICAgICAg
ICAgU1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAg
ICAgIHZpcnR1YWwgflNWR01hc2tFbGVtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIC8v
ICdTVkdNYXNrRWxlbWVudCcgZnVuY3Rpb25zCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3Jl
YXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2aXJ0dWFs
IFNWR1Jlc291cmNlKiBjYW52YXNSZXNvdXJjZSgpOwotICAgICAgICAKKwogICAgICAgICBzdGQ6
OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBkcmF3TWFza2VyQ29udGVudChjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldFJlY3QsIEZsb2F0UmVjdCYgbWFza1JlY3QpIGNvbnN0OwogCiAgICAgcHJvdGVjdGVk
OgpAQCAtNzcsNSArNzUsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdO
dW1iZXJMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNw
cAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjks
OCArMjksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR051bWJlckxpc3Q6OlNWR051
bWJlckxpc3QoKQotICAgIDogU1ZHTGlzdDxmbG9hdD4oKQorU1ZHTnVtYmVyTGlzdDo6U1ZHTnVt
YmVyTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQorICAgIDogU1ZHTGlz
dDxmbG9hdD4oYXR0cmlidXRlTmFtZSkKIHsKIH0KIApAQCAtNTYsNiArNTYsNCBAQCB2b2lkIFNW
R051bWJlckxpc3Q6OnBhcnNlKGNvbnN0IFN0cmluZyYgCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9l
dAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR051bWJlckxp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdOdW1iZXJMaXN0LmgJKHJldmlzaW9u
IDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBa
aW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAg
ICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwxNyArMjQsMTUgQEAK
ICNkZWZpbmUgU1ZHTnVtYmVyTGlzdF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAi
U1ZHTGlzdC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdlYkNvcmUgewor
CiAgICAgY2xhc3MgU3RyaW5nOwogCi0gICAgY2xhc3MgU1ZHTnVtYmVyTGlzdCA6IHB1YmxpYyBT
VkdMaXN0PGZsb2F0PgotICAgIHsKKyAgICBjbGFzcyBTVkdOdW1iZXJMaXN0IDogcHVibGljIFNW
R0xpc3Q8ZmxvYXQ+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFNWR051bWJlckxpc3QoKTsKKyAg
ICAgICAgU1ZHTnVtYmVyTGlzdChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1
YWwgflNWR051bWJlckxpc3QoKTsKIAogICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYg
dmFsdWUpOwpAQCAtNDQsNSArNDIsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtNTYsNyArNTYsNyBAQCBTVkdQYXRoRWxlbWVudDo6
flNWR1BhdGhFbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUGF0aEVsZW1lbnQsIGZsb2F0LCBOdW1iZXIsIG51bWJlciwgUGF0aExlbmd0aCwgcGF0aExl
bmd0aCwgU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyLmxvY2FsTmFtZSgpLCBtX3BhdGhMZW5ndGgp
CitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXRoRWxlbWVudCwgZmxvYXQsIE51
bWJlciwgbnVtYmVyLCBQYXRoTGVuZ3RoLCBwYXRoTGVuZ3RoLCBTVkdOYW1lczo6cGF0aExlbmd0
aEF0dHIsIG1fcGF0aExlbmd0aCkKIAogZmxvYXQgU1ZHUGF0aEVsZW1lbnQ6OmdldFRvdGFsTGVu
Z3RoKCkKIHsKQEAgLTE5MywxOCArMTkzLDI1IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXQKICAgICB9CiB9CiAKLXZvaWQgU1ZHUGF0aEVsZW1lbnQ6Om5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpIGNvbnN0Cit2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmICghZG9jdW1l
bnQoKS0+cGFyc2luZygpICYmIHJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyKCktPnNldE5l
ZWRzTGF5b3V0KHRydWUpOworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghcmVuZGVyZXIoKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Om5vdGlmeUF0
dHJpYnV0ZUNoYW5nZSgpOworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyIHx8CisgICAgICAgIFNWR1Rlc3Rz
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdMYW5nU3BhY2U6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAg
ICAgcmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKIFNWR1BhdGhTZWdMaXN0
KiBTVkdQYXRoRWxlbWVudDo6cGF0aFNlZ0xpc3QoKSBjb25zdAogewogICAgIGlmICghbV9wYXRo
U2VnTGlzdCkKLSAgICAgICAgbV9wYXRoU2VnTGlzdCA9IG5ldyBTVkdQYXRoU2VnTGlzdCgpOwor
ICAgICAgICBtX3BhdGhTZWdMaXN0ID0gbmV3IFNWR1BhdGhTZWdMaXN0KFNWR05hbWVzOjpkQXR0
cik7CiAKICAgICByZXR1cm4gbV9wYXRoU2VnTGlzdC5nZXQoKTsKIH0KQEAgLTIzNSw1ICsyNDIs
MyBAQCBQYXRoIFNWR1BhdGhFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uc3QKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
aAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IEtERSBwcm9qZWN0CkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR1BhdGhFbGVtZW50X2gK
IAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdBbmltYXRlZFBhdGhEYXRhLmgiCiAj
aW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0xh
bmdTcGFjZS5oIgpAQCAtOTQsOCArOTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgU1ZHUGF0aFNlZ0xpc3QqIGFuaW1hdGVkUGF0aFNlZ0xpc3QoKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCBTVkdQYXRoU2VnTGlzdCogYW5pbWF0ZWROb3JtYWxpemVkUGF0aFNlZ0xp
c3QoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJp
YnV0ZUNoYW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICB2aXJ0dWFsIFBhdGgg
dG9QYXRoRGF0YSgpIGNvbnN0OwogCkBAIC0xMTYsNSArMTE1LDMgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHUGF0aFNlZy5oCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWcuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUs
IDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgcHJvamVjdApAQCAtMjQsOCArMjQsOSBAQAogI2RlZmluZSBTVkdQYXRoU2VnX2gK
IAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgIlNWR05hbWVzLmgiCisKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZQpAQCAtNjUsMTEgKzY2LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IHZpcnR1YWwgdW5zaWduZWQgc2hvcnQgcGF0aFNlZ1R5cGUoKSBjb25zdCB7IHJldHVybiBQQVRI
U0VHX1VOS05PV047IH0KICAgICAgICAgdmlydHVhbCBTdHJpbmcgcGF0aFNlZ1R5cGVBc0xldHRl
cigpIGNvbnN0IHsgcmV0dXJuICIiOyB9CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gIiI7IH0KKworICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBh
c3NvY2lhdGVkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIFNWR05hbWVzOjpkQXR0cjsg
fQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNw
cAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMg
U2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotU1ZHUGF0aFNlZ0xpc3Q6OlNWR1BhdGhTZWdMaXN0KCkKLSAgICA6IFNW
R0xpc3Q8UmVmUHRyPFNWR1BhdGhTZWc+ID4oKQorU1ZHUGF0aFNlZ0xpc3Q6OlNWR1BhdGhTZWdM
aXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgOiBTVkdMaXN0PFJl
ZlB0cjxTVkdQYXRoU2VnPiA+KGF0dHJpYnV0ZU5hbWUpCiB7CiB9CiAKQEAgLTEzOCw1ICsxMzgs
MyBAQCBQYXRoIFNWR1BhdGhTZWdMaXN0Ojp0b1BhdGhEYXRhKCkKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdGhT
ZWdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3QuaAkocmV2
aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjZGVmaW5lIFNWR1BhdGhTZWdMaXN0X2gKIAogI2lmIEVO
QUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFNlZy5o
IgogCkBAIC0zNCw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAKICAgICBjbGFzcyBT
VkdQYXRoU2VnTGlzdCA6IHB1YmxpYyBTVkdMaXN0PFJlZlB0cjxTVkdQYXRoU2VnPiA+IHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFNWR1BhdGhTZWdMaXN0KCk7CisgICAgICAgIFNWR1BhdGhTZWdM
aXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICAgICAgdmlydHVhbCB+U1ZHUGF0aFNlZ0xp
c3QoKTsKIAogICAgICAgICB1bnNpZ25lZCBnZXRQYXRoU2VnQXRMZW5ndGgoZG91YmxlKTsKQEAg
LTQ1LDUgKzQ0LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtNjMsNyArNjMsNyBAQCBTVkdQ
YXR0ZXJuRWxlbWVudDo6U1ZHUGF0dGVybkVsZW1lbnQoY29uCiAgICAgLCBtX2hlaWdodCh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KQogICAgICwgbV9wYXR0ZXJuVW5pdHMoU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKQogICAgICwgbV9wYXR0ZXJuQ29udGVudFVu
aXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkKLSAgICAsIG1f
cGF0dGVyblRyYW5zZm9ybShuZXcgU1ZHVHJhbnNmb3JtTGlzdCgpKQorICAgICwgbV9wYXR0ZXJu
VHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0KFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3Jt
QXR0cikpCiB7CiB9CiAKQEAgLTcxLDEzICs3MSwxMyBAQCBTVkdQYXR0ZXJuRWxlbWVudDo6flNW
R1BhdHRlcm5FbGVtZW50KCkKIHsKIH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMo
U1ZHUGF0dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQYXR0ZXJu
VW5pdHMsIHBhdHRlcm5Vbml0cywgU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIubG9jYWxOYW1l
KCksIG1fcGF0dGVyblVuaXRzKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0
dGVybkVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBQYXR0ZXJuQ29udGVu
dFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzLCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0
c0F0dHIubG9jYWxOYW1lKCksIG1fcGF0dGVybkNvbnRlbnRVbml0cykKLUFOSU1BVEVEX1BST1BF
UlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVu
Z3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIubG9jYWxOYW1lKCksIG1feCkKLUFOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwg
bGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkKLUFOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fd2lkdGgpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVu
dCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpo
ZWlnaHRBdHRyLmxvY2FsTmFtZSgpLCBtX2hlaWdodCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlz
dCwgdHJhbnNmb3JtTGlzdCwgUGF0dGVyblRyYW5zZm9ybSwgcGF0dGVyblRyYW5zZm9ybSwgU1ZH
TmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3BhdHRlcm5UcmFuc2Zv
cm0uZ2V0KCkpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVu
dCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIFBhdHRlcm5Vbml0cywgcGF0dGVyblVu
aXRzLCBTVkdOYW1lczo6cGF0dGVyblVuaXRzQXR0ciwgbV9wYXR0ZXJuVW5pdHMpCitBTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdQYXR0ZXJuRWxlbWVudCwgaW50LCBFbnVtZXJhdGlv
biwgZW51bWVyYXRpb24sIFBhdHRlcm5Db250ZW50VW5pdHMsIHBhdHRlcm5Db250ZW50VW5pdHMs
IFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0ciwgbV9wYXR0ZXJuQ29udGVudFVuaXRz
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ciwgbV94KQorQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0ciwgbV95KQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5n
dGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgbV93aWR0aCkKK0FOSU1BVEVE
X1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIG1faGVpZ2h0
KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR1Ry
YW5zZm9ybUxpc3QqLCBUcmFuc2Zvcm1MaXN0LCB0cmFuc2Zvcm1MaXN0LCBQYXR0ZXJuVHJhbnNm
b3JtLCBwYXR0ZXJuVHJhbnNmb3JtLCBTVkdOYW1lczo6cGF0dGVyblRyYW5zZm9ybUF0dHIsIG1f
cGF0dGVyblRyYW5zZm9ybS5nZXQoKSkKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpAQCAtMTI1LDYgKzEyNSwz
NSBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgfQogfQog
Cit2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIFNWR1N0eWxlZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoYXR0ck5hbWUpOworCisgICAgaWYgKCFtX3Jlc291cmNlKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdHRlcm5Db250ZW50VW5pdHNBdHRyIHx8CisgICAgICAg
IGF0dHJOYW1lID09IFNWR05hbWVzOjpwYXR0ZXJuVHJhbnNmb3JtQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyIHx8CisgICAg
ICAgIGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIgfHwKKyAgICAgICAgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkgfHwgCisgICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdTdHlsZWRFbGVtZW50Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkKKyAgICAgICAgbV9yZXNvdXJjZS0+aW52YWxpZGF0ZSgpOworfQorCit2
b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKQoreworICAgIFNWR1N0eWxl
ZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpOworCisgICAgaWYgKCFtX3Jlc291cmNlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3Jlc291cmNlLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQg
U1ZHUGF0dGVybkVsZW1lbnQ6OmJ1aWxkUGF0dGVybihjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QpIGNvbnN0CiB7CiAgICAgUGF0dGVybkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IGNvbGxlY3RQ
YXR0ZXJuUHJvcGVydGllcygpOwpAQCAtMjMzLDE1ICsyNjIsNiBAQCB2b2lkIFNWR1BhdHRlcm5F
bGVtZW50OjpidWlsZFBhdHRlcm4oY29uCiAgICAgbV9yZXNvdXJjZS0+c2V0VGlsZShwYXR0ZXJu
SW1hZ2UpOwogfQogCi12b2lkIFNWR1BhdHRlcm5FbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFu
Z2UoKSBjb25zdAotewotICAgIGlmICghbV9yZXNvdXJjZSB8fCAhYXR0YWNoZWQoKSB8fCBkb2N1
bWVudCgpLT5wYXJzaW5nKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVzb3VyY2UtPmlu
dmFsaWRhdGUoKTsKLSAgICBtX3Jlc291cmNlLT5yZXBhaW50Q2xpZW50cygpOwotfQotCiBSZW5k
ZXJPYmplY3QqIFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSog
YXJlbmEsIFJlbmRlclN0eWxlKikKIHsKICAgICBSZW5kZXJTVkdDb250YWluZXIqIHBhdHRlcm5D
b250YWluZXIgPSBuZXcgKGFyZW5hKSBSZW5kZXJTVkdDb250YWluZXIodGhpcyk7CkBAIC0zMDgs
NSArMzI4LDMgQEAgUGF0dGVybkF0dHJpYnV0ZXMgU1ZHUGF0dGVybkVsZW1lbnQ6OmNvbAogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUg
U1ZHUGF0dGVybkVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR1Bh
aW50U2VydmVyUGF0dGVybi5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQuaCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKQEAgLTM0LDEyICszMywxMSBAQAog
I2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17Citu
YW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBzdHJ1Y3QgUGF0dGVybkF0dHJpYnV0ZXM7CiAgCiAg
ICAgY2xhc3MgU1ZHTGVuZ3RoOwotICAgIGNsYXNzIFNWR1BhdHRlcm5FbGVtZW50OwogICAgIGNs
YXNzIFNWR1RyYW5zZm9ybUxpc3Q7CiAKICAgICBjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudCA6IHB1
YmxpYyBTVkdTdHlsZWRFbGVtZW50LApAQCAtNDcsMTcgKzQ1LDE2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94Ci0g
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmlld0Jv
eCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdQYXR0ZXJuRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHUGF0dGVybkVsZW1lbnQo
KTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1
cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIC8vICdTVkdQYXR0ZXJuRWxlbWVu
dCcgZnVuY3Rpb25zCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShN
YXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNo
YW5nZSgpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5n
ZWQoKTsKIAogICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogICAgICAgICB2aXJ0dWFsIFNWR1Jlc291cmNlKiBj
YW52YXNSZXNvdXJjZSgpOwpAQCAtOTEsNSArODgsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1BvaW50TGlzdC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtMjYsMTAgKzI2LDEwIEBACiAKICNpbmNsdWRlICJTVkdQb2ludExp
c3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVNWR1BvaW50TGlzdDo6U1ZHUG9pbnRMaXN0KCkKLSAgICA6IFNWR1BPRExpc3Q8RmxvYXRQb2lu
dD4oKQorU1ZHUG9pbnRMaXN0OjpTVkdQb2ludExpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
cmlidXRlTmFtZSkKKyAgICA6IFNWR1BPRExpc3Q8RmxvYXRQb2ludD4oYXR0cmlidXRlTmFtZSkK
IHsKIH0KIApAQCAtMzcsNiArMzcsNiBAQCBTVkdQb2ludExpc3Q6On5TVkdQb2ludExpc3QoKQog
ewogfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykKK30KIAotLy8gdmltOnRzPTQ6bm9ldAorI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkocmV2aXNpb24gMjk5NTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMTggKzI0LDE0IEBACiAj
ZGVmaW5lIFNWR1BvaW50TGlzdF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZH
TGlzdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsK
LSAgICBjbGFzcyBTVkdFbGVtZW50OworbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3Mg
U1ZHUG9pbnRMaXN0IDogcHVibGljIFNWR1BPRExpc3Q8RmxvYXRQb2ludD4KLSAgICB7CisgICAg
Y2xhc3MgU1ZHUG9pbnRMaXN0IDogcHVibGljIFNWR1BPRExpc3Q8RmxvYXRQb2ludD4gewogICAg
IHB1YmxpYzoKLSAgICAgICAgU1ZHUG9pbnRMaXN0KCk7CisgICAgICAgIFNWR1BvaW50TGlzdChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgflNWR1BvaW50TGlzdCgpOwog
ICAgIH07CiAKQEAgLTQzLDUgKzM5LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTQwLDggKzQwLDggQEAgU1ZHUG9seUVsZW1lbnQ6
OlNWR1BvbHlFbGVtZW50KGNvbnN0IFF1YQogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgU1ZHQW5pbWF0ZWRQb2ludHMoKQor
ICAgICwgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzKGZhbHNlKQogewotICAgIG1faWdub3JlQXR0
cmlidXRlQ2hhbmdlcyA9IGZhbHNlOwogfQogCiBTVkdQb2x5RWxlbWVudDo6flNWR1BvbHlFbGVt
ZW50KCkKQEAgLTUxLDcgKzUxLDcgQEAgU1ZHUG9seUVsZW1lbnQ6On5TVkdQb2x5RWxlbWVudCgp
CiBTVkdQb2ludExpc3QqIFNWR1BvbHlFbGVtZW50Ojpwb2ludHMoKSBjb25zdAogewogICAgIGlm
ICghbV9wb2ludHMpCi0gICAgICAgIG1fcG9pbnRzID0gbmV3IFNWR1BvaW50TGlzdCgpOworICAg
ICAgICBtX3BvaW50cyA9IG5ldyBTVkdQb2ludExpc3QoU1ZHTmFtZXM6OnBvaW50c0F0dHIpOwog
CiAgICAgcmV0dXJuIG1fcG9pbnRzLmdldCgpOwogfQpAQCAtNjgsNyArNjgsOCBAQCB2b2lkIFNW
R1BvbHlFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9
PSBTVkdOYW1lczo6cG9pbnRzQXR0cikgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICAgICAgcG9pbnRzKCktPmNsZWFyKGVjKTsKLSAgICAgICAgaWYgKCFwb2ludHNMaXN0RnJv
bVNWR0RhdGEocG9pbnRzKCksIHZhbHVlKSAmJiAhbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzKSB7
CisKKyAgICAgICAgaWYgKCFwb2ludHNMaXN0RnJvbVNWR0RhdGEocG9pbnRzKCksIHZhbHVlKSkg
ewogICAgICAgICAgICAgcG9pbnRzKCktPmNsZWFyKGVjKTsKICAgICAgICAgICAgIGRvY3VtZW50
KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+cmVwb3J0RXJyb3IoIlByb2JsZW0gcGFyc2luZyBw
b2ludHM9XCIiICsgdmFsdWUgKyAiXCIiKTsKICAgICAgICAgfQpAQCAtODMsNDAgKzg0LDQ4IEBA
IHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXQKICAgICB9CiB9CiAKLXZv
aWQgU1ZHUG9seUVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0Cit2b2lkIFNW
R1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIGlmIChtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMgfHwgZG9jdW1lbnQo
KS0+cGFyc2luZygpKQorICAgIGlmIChtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXMpCisgICAgICAg
IHJldHVybjsKKworICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIGlmICghcmVuZGVyZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzID0gdHJ1ZTsKLSAgICBpZiAocmVu
ZGVyZXIoKSkKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpIHsKKyAg
ICAgICAgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzID0gdHJ1ZTsKICAgICAgICAgcmVuZGVyZXIo
KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
CiAKLSAgICAvLyBTcGVjOiBBZGRpdGlvbmFsbHksIHRoZSAncG9pbnRzJyBhdHRyaWJ1dGUgb24g
dGhlIG9yaWdpbmFsIGVsZW1lbnQKLSAgICAvLyBhY2Nlc3NlZCB2aWEgdGhlIFhNTCBET00gKGUu
Zy4sIHVzaW5nIHRoZSBnZXRBdHRyaWJ1dGUoKSBtZXRob2QgY2FsbCkKLSAgICAvLyB3aWxsIHJl
ZmxlY3QgYW55IGNoYW5nZXMgbWFkZSB0byBwb2ludHMuCi0gICAgU3RyaW5nIF9wb2ludHM7Ci0g
ICAgaW50IGxlbiA9IHBvaW50cygpLT5udW1iZXJPZkl0ZW1zKCk7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBsZW47ICsraSkgewotICAgICAgICBGbG9hdFBvaW50IHAgPSBwb2ludHMoKS0+Z2V0
SXRlbShpLCBlYyk7Ci0gICAgICAgIF9wb2ludHMgKz0gU3RyaW5nOjpmb3JtYXQoIiUuNmxnICUu
NmxnICIsIHAueCgpLCBwLnkoKSk7Ci0gICAgfQotICAgIAotICAgIFJlZlB0cjxBdHRyPiBhdHRy
ID0gY29uc3RfY2FzdDxTVkdQb2x5RWxlbWVudCo+KHRoaXMpLT5nZXRBdHRyaWJ1dGVOb2RlKFNW
R05hbWVzOjpwb2ludHNBdHRyLmxvY2FsTmFtZSgpKTsKLSAgICBpZiAoYXR0cikgewogICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgYXR0ci0+c2V0VmFsdWUoX3BvaW50cywg
ZWMpOwotICAgIH0KIAotICAgIG1faWdub3JlQXR0cmlidXRlQ2hhbmdlcyA9IGZhbHNlOworICAg
ICAgICAvLyBTcGVjOiBBZGRpdGlvbmFsbHksIHRoZSAncG9pbnRzJyBhdHRyaWJ1dGUgb24gdGhl
IG9yaWdpbmFsIGVsZW1lbnQKKyAgICAgICAgLy8gYWNjZXNzZWQgdmlhIHRoZSBYTUwgRE9NIChl
LmcuLCB1c2luZyB0aGUgZ2V0QXR0cmlidXRlKCkgbWV0aG9kIGNhbGwpCisgICAgICAgIC8vIHdp
bGwgcmVmbGVjdCBhbnkgY2hhbmdlcyBtYWRlIHRvIHBvaW50cy4KKyAgICAgICAgU3RyaW5nIF9w
b2ludHM7CisgICAgICAgIGludCBsZW4gPSBwb2ludHMoKS0+bnVtYmVyT2ZJdGVtcygpOworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICBGbG9hdFBv
aW50IHAgPSBwb2ludHMoKS0+Z2V0SXRlbShpLCBlYyk7CisgICAgICAgICAgICBfcG9pbnRzICs9
IFN0cmluZzo6Zm9ybWF0KCIlLjZsZyAlLjZsZyAiLCBwLngoKSwgcC55KCkpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKFJlZlB0cjxBdHRyPiBhdHRyID0gY29uc3RfY2FzdDxTVkdQb2x5RWxl
bWVudCo+KHRoaXMpLT5nZXRBdHRyaWJ1dGVOb2RlKFNWR05hbWVzOjpwb2ludHNBdHRyLmxvY2Fs
TmFtZSgpKSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgICAg
ICBhdHRyLT5zZXRWYWx1ZShfcG9pbnRzLCBlYyk7CisgICAgICAgIH0KIAotICAgIFNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKTsKKyAgICAgICAg
bV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoU1ZHVGVzdHM6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAg
ICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkg
fHwKKyAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKQorICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsK
IH0KIAogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5oCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1Bv
bHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTI0LDMzICsyNCwzMCBAQAogI2RlZmlu
ZSBTVkdQb2x5RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRQb2ludHMuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgi
CiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHUG9seUVsZW1lbnQgOiAg
cHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHTGFuZ1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdBbmltYXRlZFBvaW50cwotICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU1ZHQW5pbWF0ZWRQb2ludHMgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
UG9seUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZp
cnR1YWwgflNWR1BvbHlFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgICAg
ICAvLyBEZXJpdmVkIGZyb206ICdTVkdBbmltYXRlZFBvaW50cycKICAgICAgICAgdmlydHVhbCBT
VkdQb2ludExpc3QqIHBvaW50cygpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNWR1BvaW50TGlz
dCogYW5pbWF0ZWRQb2ludHMoKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsgCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOyAKKyAgICAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkgeyBy
ZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAg
LTU5LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCBjb25zdCBT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIG11dGFibGUgYm9vbCBtX2lnbm9yZUF0dHJpYnV0ZUNoYW5nZXM7
CisgICAgICAgIGJvb2wgbV9pZ25vcmVBdHRyaWJ1dGVDaGFuZ2VzIDogMTsKICAgICAgICAgbXV0
YWJsZSBSZWZQdHI8U1ZHUG9pbnRMaXN0PiBtX3BvaW50czsKIAogICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9GT1JXQVJEX0RFQ0xBUkFUSU9OUyhTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkKQpAQCAtNjksNSArNjYsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdQb2x5Z29uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUG9seWdv
bkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BvbHlnb25F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtNTksNSArNTksMyBAQCBQYXRoIFNWR1BvbHlnb25F
bGVtZW50Ojp0b1BhdGhEYXRhKCkgY29uCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCi0v
LyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQb2x5Z29uRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1BvbHlnb25FbGVtZW50LmgJKHJldmlzaW9uIDI5
OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHUG9seWdvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNA
a2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAt
MjQsMTMgKzI0LDExIEBACiAjZGVmaW5lIFNWR1BvbHlnb25FbGVtZW50X2gKIAogI2lmIEVOQUJM
RShTVkcpCi0KICNpbmNsdWRlICJTVkdQb2x5RWxlbWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZQotewotICAgIGNsYXNzIFNWR1BvbHlnb25FbGVtZW50IDogcHVibGljIFNWR1BvbHlFbGVtZW50
Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU1ZHUG9seWdvbkVsZW1l
bnQgOiBwdWJsaWMgU1ZHUG9seUVsZW1lbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUG9s
eWdvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZp
cnR1YWwgflNWR1BvbHlnb25FbGVtZW50KCk7CkBAIC00Miw1ICs0MCwzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdQb2x5bGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC01OCw1
ICs1OCwzIEBAIFBhdGggU1ZHUG9seWxpbmVFbGVtZW50Ojp0b1BhdGhEYXRhKCkgY28KIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Bv
bHlsaW5lRWxlbWVudC5oCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BvbHls
aW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwxMyArMjQsMTEgQEAKICNkZWZpbmUgU1ZH
UG9seWxpbmVFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpCi0KICNpbmNsdWRlICJTVkdQb2x5
RWxlbWVudC5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZQotewotICAgIGNsYXNzIFNWR1BvbHlsaW5l
RWxlbWVudCA6ICBwdWJsaWMgU1ZHUG9seUVsZW1lbnQKLSAgICB7CituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyAgICBjbGFzcyBTVkdQb2x5bGluZUVsZW1lbnQgOiBwdWJsaWMgU1ZHUG9seUVsZW1l
bnQgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHUG9seWxpbmVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdQb2x5bGluZUVsZW1l
bnQoKTsKQEAgLTQyLDUgKzQwLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
UHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcv
U1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdp
bGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNp
bmNsdWRlICJjb25maWcuaCIKKwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5oIgogCkBAIC0yMDQsNSArMjA1LDQgQEAgQWZmaW5lVHJhbnNmb3JtIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OgogCiB9CiAKLS8vIHZpbTp0cz00Om5vZXQKICNlbmRpZiAv
LyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAkocmV2
aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTI0LDkgKzI0LDEwIEBACiAjZGVmaW5lIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9faAogCiAj
aWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPFBsYXRm
b3JtU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzMsNiArNzQsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIEhlbHBlcgogICAgICAgICBib29sIHBhcnNl
UHJlc2VydmVBc3BlY3RSYXRpbyhjb25zdCBVQ2hhciomIGN1cnJQYXJhbSwgY29uc3QgVUNoYXIq
IGVuZCwgYm9vbCB2YWxpZGF0ZSA9IHRydWUpOwogCisgICAgICAgIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGFzc29jaWF0ZWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gU1ZHTmFtZXM6OnBy
ZXNlcnZlQXNwZWN0UmF0aW9BdHRyOyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHVuc2ln
bmVkIHNob3J0IG1fYWxpZ247CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IG1fbWVldE9yU2xpY2U7
CkBAIC04Myw0ICs4NiwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQogI2VuZGlmIC8vIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9faAogCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlz
aW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4g
PHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgcHJvamVjdApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZsb2F0Q29udmVy
c2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJSYWRpYWxHcmFkaWVu
dEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTVkdM
ZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhaW50U2VydmVy
UmFkaWFsR3JhZGllbnQuaCIKQEAgLTU2LDExICs1NywxMSBAQCBTVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQ6On5TVkdSYWRpYWxHcmFkCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJ
T05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwg
Q3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLmxvY2FsTmFtZSgpLCBtX2N4KQotQU5JTUFURURfUFJP
UEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExl
bmd0aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIubG9jYWxOYW1lKCksIG1fY3kp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQs
IFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEZ4LCBmeCwgU1ZHTmFtZXM6OmZ4QXR0ci5sb2Nh
bE5hbWUoKSwgbV9meCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdy
YWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgRnksIGZ5LCBTVkdOYW1l
czo6ZnlBdHRyLmxvY2FsTmFtZSgpLCBtX2Z5KQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBS
LCByLCBTVkdOYW1lczo6ckF0dHIubG9jYWxOYW1lKCksIG1fcikKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgs
IGxlbmd0aCwgQ3gsIGN4LCBTVkdOYW1lczo6Y3hBdHRyLCBtX2N4KQorQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBDeSwgY3ksIFNWR05hbWVzOjpjeUF0dHIsIG1fY3kpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIEZ4LCBmeCwgU1ZHTmFtZXM6OmZ4QXR0ciwgbV9meCkKK0FOSU1BVEVEX1BS
T1BFUlRZX0RFRklOSVRJT05TKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBM
ZW5ndGgsIGxlbmd0aCwgRnksIGZ5LCBTVkdOYW1lczo6ZnlBdHRyLCBtX2Z5KQorQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBSLCByLCBTVkdOYW1lczo6ckF0dHIsIG1fcikKIAogdm9pZCBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSogYXR0cikKIHsKQEAgLTgwLDYgKzgxLDE4IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjpwYXJzZU1hcHAKICAgICAgICAgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIAordm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAgU1ZH
R3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIGlm
ICghbV9yZXNvdXJjZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpjeEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0ciB8fAorICAgICAg
ICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZnlBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpm
eUF0dHIgfHwKKyAgICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKQorICAgICAgICBt
X3Jlc291cmNlLT5pbnZhbGlkYXRlKCk7Cit9CiAKIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVt
ZW50OjpidWlsZEdyYWRpZW50KCkgY29uc3QKIHsKQEAgLTE3MSw1ICsxODQsMyBAQCBSYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMgU1ZHUmFkaWFsR3JhZGllCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuaAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBp
cyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjQsMjIgKzI0LDIwIEBACiAjZGVmaW5lIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAi
U1ZHR3JhZGllbnRFbGVtZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKICAgICBzdHJ1Y3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzOwogICAgIGNs
YXNzIFNWR0xlbmd0aDsKIAotICAgIGNsYXNzIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCA6IHB1
YmxpYyBTVkdHcmFkaWVudEVsZW1lbnQKLSAgICB7CisgICAgY2xhc3MgU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50IDogcHVibGljIFNWR0dyYWRpZW50RWxlbWVudCB7CiAgICAgcHVibGljOgogICAg
ICAgICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CiAgICAgICAgIHZpcnR1YWwgflNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCgpOwogCi0g
ICAgICAgIC8vICdTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkR3JhZGllbnQo
KSBjb25zdDsKQEAgLTYyLDUgKzYwLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JlY3RF
bGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKKwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHUmVjdEVsZW1lbnQuaCIK
IApAQCAtNDgsMTIgKzQ5LDEyIEBAIFNWR1JlY3RFbGVtZW50Ojp+U1ZHUmVjdEVsZW1lbnQoKQog
ewogfQogCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgp
LCBtX3gpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgp
LCBtX3kpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LmxvY2FsTmFtZSgpLCBtX3dpZHRoKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZH
UmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBT
VkdOYW1lczo6aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCi1BTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgUngsIHJ4LCBTVkdOYW1lczo6cnhBdHRyLmxvY2FsTmFtZSgpLCBtX3J4KQotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHUmVjdEVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBs
ZW5ndGgsIFJ5LCByeSwgU1ZHTmFtZXM6OnJ5QXR0ci5sb2NhbE5hbWUoKSwgbV9yeSkKK0FOSU1B
VEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBYLCB4LCBTVkdOYW1lczo6eEF0dHIsIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZ
LCB5LCBTVkdOYW1lczo6eUF0dHIsIG1feSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgs
IFNWR05hbWVzOjp3aWR0aEF0dHIsIG1fd2lkdGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBo
ZWlnaHQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBtX2hlaWdodCkKK0FOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1JlY3RFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBS
eCwgcngsIFNWR05hbWVzOjpyeEF0dHIsIG1fcngpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklU
SU9OUyhTVkdSZWN0RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgUnksIHJ5LCBT
VkdOYW1lczo6cnlBdHRyLCBtX3J5KQogCiB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpCiB7CkBAIC04OCwxMiArODksMjAgQEAg
dm9pZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dAogICAgIH0KIH0KIAotdm9p
ZCBTVkdSZWN0RWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKK3ZvaWQgU1ZH
UmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCgpLT5wYXJzaW5nKCkgJiYgcmVuZGVyZXIoKSkK
KyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CisKKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnlBdHRyIHx8CisgICAgICAgIGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIgfHwKKyAgICAgICAgU1ZHVGVzdHM6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQogICAgICAgICByZW5k
ZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlKTsKLSAgICAKLSAgICBTVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7CiB9CiAKIFBhdGggU1ZHUmVj
dEVsZW1lbnQ6OnRvUGF0aERhdGEoKSBjb25zdApAQCAtMTIwLDUgKzEyOSwzIEBAIGJvb2wgU1ZH
UmVjdEVsZW1lbnQ6Omhhc1JlbGF0aXZlVmFsdWVzKCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkocmV2aXNpb24g
Mjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwy
OCArMjQsMjUgQEAKICNkZWZpbmUgU1ZHUmVjdEVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykK
LQogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQuaCIKICNpbmNsdWRlICJT
VkdMYW5nU3BhY2UuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdSZWN0RWxlbWVudCA6IHB1YmxpYyBTVkdTdHls
ZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3Bh
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAotICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1JlY3RF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFs
IH5TVkdSZWN0RWxlbWVudCgpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9CiAKLSAgICAgICAgLy8g
J1NWR1JlY3RFbGVtZW50JyBmdW5jdGlvbnMKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOworICAgICAgICB2aXJ0dWFsIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICAgICAg
dmlydHVhbCBQYXRoIHRvUGF0aERhdGEoKSBjb25zdDsKIApAQCAtNjgsNSArNjUsMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsMTAgKzg4
LDEwIEBAIFNWR1NWR0VsZW1lbnQ6On5TVkdTVkdFbGVtZW50KCkKICAgICBkb2N1bWVudCgpLT5h
Y2Nlc3NTVkdFeHRlbnNpb25zKCktPnJlbW92ZVRpbWVDb250YWluZXIodGhpcyk7CiB9CiAKLUFO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0aCwgTGVu
Z3RoLCBsZW5ndGgsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2NhbE5hbWUoKSwgbV94KQotQU5J
TUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5n
dGgsIGxlbmd0aCwgWSwgeSwgU1ZHTmFtZXM6OnlBdHRyLmxvY2FsTmFtZSgpLCBtX3kpCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0
aCwgbGVuZ3RoLCBXaWR0aCwgd2lkdGgsIFNWR05hbWVzOjp3aWR0aEF0dHIubG9jYWxOYW1lKCks
IG1fd2lkdGgpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBIZWlnaHQsIGhlaWdodCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIubG9jYWxOYW1lKCksIG1faGVpZ2h0KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElP
TlMoU1ZHU1ZHRWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFt
ZXM6OnhBdHRyLCBtX3gpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTVkdFbGVt
ZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIsIG1f
eSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgbV93
aWR0aCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1NWR0VsZW1lbnQsIFNWR0xl
bmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6aGVpZ2h0QXR0
ciwgbV9oZWlnaHQpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgU1ZHU1ZHRWxlbWVudDo6Y29udGVu
dFNjcmlwdFR5cGUoKSBjb25zdAogewpAQCAtMjY1LDEwICsyNjUsOCBAQCB2b2lkIFNWR1NWR0Vs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGlmIChTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShh
dHRyKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cikgJiYgcmVuZGVyZXIoKSkgewotICAgICAgICAgICAg
cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisgICAgICAgIGlmIChTVkdGaXRUb1Zp
ZXdCb3g6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CiAgICAgICAgIGlmIChTVkdab29tQW5kUGFuOjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKSkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjc2LDYgKzI3NCwyNCBAQCB2b2lk
IFNWR1NWR0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlCiAgICAgfQogfQogCit2b2lkIFNW
R1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCit7CisgICAgU1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CisKKyAgICBpZiAoIXJlbmRlcmVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlB
dHRyIHx8CisgICAgICAgIGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIgfHwKKyAgICAgICAgU1ZHVGVzdHM6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpIHx8CisgICAgICAgIFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAgICAgICAgU1ZHRml0VG9WaWV3Qm94Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdab29tQW5kUGFuOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0
TmVlZHNMYXlvdXQodHJ1ZSk7Cit9CisKIHVuc2lnbmVkIGxvbmcgU1ZHU1ZHRWxlbWVudDo6c3Vz
cGVuZFJlZHJhdyh1bnNpZ25lZCBsb25nIC8qIG1heF93YWl0X21pbGxpc2Vjb25kcyAqLykKIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lIChzZWUgYnVnIDExMjc1KQpAQCAtNDc2LDE4ICs0
OTIsNiBAQCBib29sIFNWR1NWR0VsZW1lbnQ6OmlzT3V0ZXJtb3N0U1ZHKCkgY29uCiAgICAgcmV0
dXJuICFwYXJlbnROb2RlKCktPmlzU1ZHRWxlbWVudCgpOwogfQogCi12b2lkIFNWR1NWR0VsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMp
Ci17Ci0gICAgaWYgKGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6eEF0dHIgfHwKLSAgICAgICAg
YXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjp5QXR0ciB8fAotICAgICAgICBhdHRyLT5uYW1lKCkg
PT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fAotICAgICAgICBhdHRyLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgcmVu
ZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0KLSAgICBTVkdTdHlsZWRFbGVtZW50Ojph
dHRyaWJ1dGVDaGFuZ2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwotfQotCiBBZmZpbmVUcmFuc2Zv
cm0gU1ZHU1ZHRWxlbWVudDo6dmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgs
IGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0CiB7CiAgICAgRmxvYXRSZWN0IHZpZXdCb3hSZWN0OwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMg
PSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSB2aWV3
Qm94VG9WaWV3VHJhbnNmb3JtKGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkgY29u
c3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAg
ICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR0dyYWRp
ZW50U3RvcC5oIgorI2luY2x1ZGUgIlNWR0dyYWRpZW50RWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQxLDcgKzQyLDcgQEAgU1ZHU3Rv
cEVsZW1lbnQ6On5TVkdTdG9wRWxlbWVudCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1N0b3BFbGVtZW50LCBmbG9hdCwgTnVtYmVyLCBudW1iZXIsIE9mZnNldCwg
b2Zmc2V0LCBTVkdOYW1lczo6b2Zmc2V0QXR0ci5sb2NhbE5hbWUoKSwgbV9vZmZzZXQpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdTdG9wRWxlbWVudCwgZmxvYXQsIE51bWJlciwg
bnVtYmVyLCBPZmZzZXQsIG9mZnNldCwgU1ZHTmFtZXM6Om9mZnNldEF0dHIsIG1fb2Zmc2V0KQog
CiB2b2lkIFNWR1N0b3BFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqIGF0dHIpCiB7CkBAIC01MSwyNiArNTIsMTcgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dAogICAgICAgICAgICAgc2V0T2Zmc2V0QmFzZVZhbHVlKHZhbHVlLmxl
ZnQodmFsdWUubGVuZ3RoKCkgLSAxKS50b0Zsb2F0KCkgLyAxMDAuMGYpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzZXRPZmZzZXRCYXNlVmFsdWUodmFsdWUudG9GbG9hdCgpKTsKKworICAg
ICAgICBzZXRDaGFuZ2VkKCk7CiAgICAgfSBlbHNlCiAgICAgICAgIFNWR1N0eWxlZEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1SZW5kZXJPYmplY3QqIFNWR1N0b3BF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKiBz
dHlsZSkKK1JlbmRlck9iamVjdCogU1ZHU3RvcEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRl
ckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBuZXcgKGFyZW5hKSBS
ZW5kZXJTVkdHcmFkaWVudFN0b3AodGhpcyk7CiB9CiAKLXZvaWQgU1ZHU3RvcEVsZW1lbnQ6Om5v
dGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0Ci17Ci0gICAgaWYgKCFhdHRhY2hlZCgpIHx8IGRv
Y3VtZW50KCktPnBhcnNpbmcoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29uc3RfY2FzdDxT
VkdTdG9wRWxlbWVudCo+KHRoaXMpLT5yZWNhbGNTdHlsZShGb3JjZSk7Ci0gICAgU1ZHU3R5bGVk
RWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCk7Ci19Ci0KIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0b3BF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuaAkocmV2
aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8
YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0
CkBAIC0yNCwyNCArMjQsMjEgQEAKICNkZWZpbmUgU1ZHU3RvcEVsZW1lbnRfaAogCiAjaWYgRU5B
QkxFKFNWRykKLQogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKIAotbmFtZXNwYWNlIFdl
YkNvcmUKLXsKLSAgICBjbGFzcyBTVkdTdG9wRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVt
ZW50Ci0gICAgeworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU1ZHU3RvcEVsZW1l
bnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdT
dG9wRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmly
dHVhbCB+U1ZHU3RvcEVsZW1lbnQoKTsKLSAgICAgICAgCisKICAgICAgICAgdmlydHVhbCBib29s
IGlzR3JhZGllbnRTdG9wKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0OwogCiAgICAgICAgIHZp
cnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0
eWxlKik7Ci0gICAgICAgIAorCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR1N0b3BFbGVtZW50LCBmbG9hdCwgZmxvYXQsIE9mZnNldCwgb2Zm
c2V0KQogICAgIH07CkBAIC01MCw1ICs0NywzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR1N0cmluZ0xpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0
cmluZ0xpc3QuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1N0cmluZ0xp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAg
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9q
ZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisKICNpZiBF
TkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1N0cmluZ0xpc3QuaCIKIApAQCAtMjgsOCArMjksOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR1N0cmluZ0xpc3Q6OlNWR1N0cmluZ0xpc3Qo
KQotICAgIDogU1ZHTGlzdDxTdHJpbmc+KCkKK1NWR1N0cmluZ0xpc3Q6OlNWR1N0cmluZ0xpc3Qo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICA6IFNWR0xpc3Q8U3RyaW5n
PihhdHRyaWJ1dGVOYW1lKQogewogfQogCkBAIC02OCw1ICs2OSwzIEBAIHZvaWQgU1ZHU3RyaW5n
TGlzdDo6cGFyc2UoY29uc3QgU3RyaW5nJiAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgJKHJldmlzaW9uIDI5OTUwKQor
KysgV2ViQ29yZS9zdmcvU1ZHU3RyaW5nTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwyMSArMjQsMTcgQEAKICNkZWZpbmUg
U1ZHU3RyaW5nTGlzdF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJTVkdMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
ICAgIGNsYXNzIFNWR1N0cmluZ0xpc3QgOiBwdWJsaWMgU1ZHTGlzdDxTdHJpbmc+Ci0gICAgewor
ICAgIGNsYXNzIFNWR1N0cmluZ0xpc3QgOiBwdWJsaWMgU1ZHTGlzdDxTdHJpbmc+IHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFNWR1N0cmluZ0xpc3QoKTsKKyAgICAgICAgU1ZHU3RyaW5nTGlzdChj
b25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgICAgIHZpcnR1YWwgflNWR1N0cmluZ0xpc3QoKTsK
LSAgICAgICAgCi0gICAgICAgIC8vIEludGVybmFsCi0gICAgICAgIHZvaWQgcmVzZXQoY29uc3Qg
U3RyaW5nJiBzdHIpOwogCisgICAgICAgIHZvaWQgcmVzZXQoY29uc3QgU3RyaW5nJiBzdHIpOwog
ICAgICAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYgZGF0YSwgVUNoYXIgZGVsaW1pdGVyID0g
JywnKTsKICAgICB9OwogCkBAIC00Niw1ICs0MiwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHU3RyaW5nTGlzdF9oCi0KLS8vIHZp
bTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsYWJsZS5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2Vi
Q29yZS9zdmcvU1ZHU3R5bGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxk
Zm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMSw2ICsyMSw3IEBACiAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCisKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1N0eWxhYmxlLmgiCiAK
QEAgLTM2LDYgKzM3LDQgQEAgU1ZHU3R5bGFibGU6On5TVkdTdHlsYWJsZSgpCiAKIH0KIAotLy8g
dmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1N0eWxhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGFibGUuaAko
cmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsYWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlr
b2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiw4
ICsyMiw4IEBACiAKICNpZm5kZWYgU1ZHU3R5bGFibGVfaAogI2RlZmluZSBTVkdTdHlsYWJsZV9o
Ci0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzEsMjAgKzMxLDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDU1NWYWx1ZTsKICAgICBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uOwogICAgIGNsYXNzIFN0cmluZzsKKyAgICBjbGFzcyBRdWFsaWZpZWROYW1lOwog
CiAgICAgY2xhc3MgU1ZHU3R5bGFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3R5bGFi
bGUoKTsKICAgICAgICAgdmlydHVhbCB+U1ZHU3R5bGFibGUoKTsKIAotICAgICAgICAvLyAnU1ZH
U3R5bGFibGUnIGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24q
IHN0eWxlKCkgPSAwOwotICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpID0gMDsKKyAgICAgICAgdmly
dHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHU3R5bGFibGVfaAotCi0vLyB2aW06dHM9NDpu
b2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApA
QCAtNTQsNyArNTQsNyBAQCBTVkdTdHlsZWRFbGVtZW50Ojp+U1ZHU3R5bGVkRWxlbWVudCgpCiAg
ICAgU1ZHUmVzb3VyY2U6OnJlbW92ZUNsaWVudCh0aGlzKTsKIH0KIAotQU5JTUFURURfUFJPUEVS
VFlfREVGSU5JVElPTlMoU1ZHU3R5bGVkRWxlbWVudCwgU3RyaW5nLCBTdHJpbmcsIHN0cmluZywg
Q2xhc3NOYW1lLCBjbGFzc05hbWUsIEhUTUxOYW1lczo6Y2xhc3NBdHRyLmxvY2FsTmFtZSgpLCBt
X2NsYXNzTmFtZSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1N0eWxlZEVsZW1l
bnQsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIENsYXNzTmFtZSwgY2xhc3NOYW1lLCBIVE1MTmFt
ZXM6OmNsYXNzQXR0ciwgbV9jbGFzc05hbWUpCiAKIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVu
ZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSogc3R5bGUpCiB7CkBAIC0xNzgsMjAgKzE3OCw1MCBA
QCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgU1ZHRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLXZvaWQgU1ZHU3R5bGVkRWxlbWVu
dDo6bm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkgY29uc3QKK2Jvb2wgU1ZHU3R5bGVkRWxlbWVudDo6
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKKyAgICAv
LyBSZWNvZ25pemUgYWxsIHN0eWxlIHJlbGF0ZWQgU1ZHIENTUyBwcm9wZXJ0aWVzCisgICAgaW50
IHByb3BJZCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVO
YW1lKGF0dHJOYW1lKTsKKyAgICBpZiAocHJvcElkID4gMCkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICByZXR1cm4gKGF0dHJOYW1lID09IEhUTUxOYW1lczo6aWRBdHRyIHx8IGF0dHJOYW1l
ID09IEhUTUxOYW1lczo6c3R5bGVBdHRyKTsgCit9CisKK3ZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAg
ICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKKworICAgIC8vIElm
IHdlJ3JlIHRoZSBjaGlsZCBvZiBhIHJlc291cmNlIGVsZW1lbnQsIGJlIHN1cmUgdG8gaW52YWxp
ZGF0ZSBpdC4KKyAgICBpbnZhbGlkYXRlUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluKCk7CisKICAg
ICBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMgPSBkb2N1bWVudCgpLT5hY2Nlc3NT
VkdFeHRlbnNpb25zKCk7CiAgICAgaWYgKCFleHRlbnNpb25zKQogICAgICAgICByZXR1cm47CiAK
KyAgICAvLyBUT0RPOiBGaXggYnVnIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDMwIChTVkdFbGVtZW50SW5zdGFuY2VzIHNob3VsZCByZWJ1aWxkIHRoZW1zZWx2ZXMg
bGF6aWx5KQorCiAgICAgLy8gSW4gY2FzZSB3ZSdyZSByZWZlcmVuY2VkIGJ5IGEgPHVzZT4gZWxl
bWVudCwgd2UgaGF2ZSBlbGVtZW50IGluc3RhbmNlcyByZWdpc3RlcmVkCiAgICAgLy8gdG8gdXMg
aW4gdGhlIFNWR0RvY3VtZW50RXh0ZW5zaW9ucy4gSWYgbm90aWZ5QXR0cmlidXRlQ2hhbmdlKCkg
aXMgY2FsbGVkLCB3ZSBuZWVkCiAgICAgLy8gdG8gcmVjdXJzaXZlbHkgdXBkYXRlIGFsbCBjaGls
ZHJlbiBpbmNsdWRpbmcgb3Vyc2VsdmVzLgogICAgIHVwZGF0ZUVsZW1lbnRJbnN0YW5jZShleHRl
bnNpb25zKTsKK30KIAotICAgIC8vIElmIHdlJ3JlIGEgY2hpbGQgb2YgYW4gZWxlbWVudCBjcmVh
dGluZyBhICJyZXNvdXJjZSIgKGllLiA8cGF0dGVybj4gY2hpbGQpCi0gICAgLy8gdGhlbiB3ZSBo
YXZlIHRvIG5vdGlmeSBvdXIgcGFyZW50IHJlc291cmNlIHRoYXQgd2UgY2hhbmdlZC4KLSAgICBu
b3RpZnlSZXNvdXJjZVBhcmVudElmRXhpc3RhbnQoKTsKK3ZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6
aW52YWxpZGF0ZVJlc291cmNlc0luQW5jZXN0b3JDaGFpbigpIGNvbnN0Cit7CisgICAgTm9kZSog
bm9kZSA9IHBhcmVudE5vZGUoKTsKKyAgICB3aGlsZSAobm9kZSkgeworICAgICAgICBpZiAoIW5v
ZGUtPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgU1ZHRWxl
bWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihub2RlKTsKKyAgICAgICAg
aWYgKFNWR1N0eWxlZEVsZW1lbnQqIHN0eWxlZEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdTdHls
ZWRFbGVtZW50Kj4oZWxlbWVudC0+aXNTdHlsZWQoKSA/IGVsZW1lbnQgOiAwKSkgeworICAgICAg
ICAgICAgaWYgKFNWR1Jlc291cmNlKiByZXNvdXJjZSA9IHN0eWxlZEVsZW1lbnQtPmNhbnZhc1Jl
c291cmNlKCkpCisgICAgICAgICAgICAgICAgcmVzb3VyY2UtPmludmFsaWRhdGUoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgfQogfQogCiB2
b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCkBAIC0yMDQsMjYgKzIzNCwx
NCBAQCB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCiAgICAgaWYgKCFl
eHRlbnNpb25zKQogICAgICAgICByZXR1cm47CiAKKyAgICAvLyBUT0RPOiBGaXggYnVnIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDMwIChTVkdFbGVtZW50SW5zdGFu
Y2VzIHNob3VsZCByZWJ1aWxkIHRoZW1zZWx2ZXMgbGF6aWx5KQorCiAgICAgLy8gSW4gY2FzZSB3
ZSdyZSByZWZlcmVuY2VkIGJ5IGEgPHVzZT4gZWxlbWVudCwgd2UgaGF2ZSBlbGVtZW50IGluc3Rh
bmNlcyByZWdpc3RlcmVkCiAgICAgLy8gdG8gdXMgaW4gdGhlIFNWR0RvY3VtZW50RXh0ZW5zaW9u
cy4gSWYgY2hpbGRyZW5DaGFuZ2VkKCkgaXMgY2FsbGVkLCB3ZSBuZWVkCiAgICAgLy8gdG8gcmVj
dXJzaXZlbHkgdXBkYXRlIGFsbCBjaGlsZHJlbiBpbmNsdWRpbmcgb3Vyc2VsdmVzLgogICAgIHVw
ZGF0ZUVsZW1lbnRJbnN0YW5jZShleHRlbnNpb25zKTsKIH0KIAotdm9pZCBTVkdTdHlsZWRFbGVt
ZW50Ojpub3RpZnlSZXNvdXJjZVBhcmVudElmRXhpc3RhbnQoKSBjb25zdAotewotICAgIE5vZGUq
IG5vZGUgPSBwYXJlbnROb2RlKCk7Ci0gICAgd2hpbGUgKG5vZGUpIHsKLSAgICAgICAgaWYgKG5v
ZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmxpbmVhckdyYWRpZW50VGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKFNWR05hbWVzOjpyYWRpYWxHcmFkaWVudFRhZykgfHwKLSAgICAgICAgICAgIG5vZGUt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdHRlcm5UYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OmNsaXBQYXRoVGFnKSB8fAotICAgICAgICAgICAgbm9kZS0+aGFzVGFnTmFtZShTVkdO
YW1lczo6bWFya2VyVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjptYXNrVGFnKSkg
ewotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG5vZGUpLT5ub3RpZnlBdHRy
aWJ1dGVDaGFuZ2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGUgPSBub2RlLT5wYXJlbnRO
b2RlKCk7Ci0gICAgfQotfQotCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OnVwZGF0ZUVsZW1lbnRJ
bnN0YW5jZShTVkdEb2N1bWVudEV4dGVuc2lvbnMqIGV4dGVuc2lvbnMpIGNvbnN0CiB7CiAgICAg
U1ZHU3R5bGVkRWxlbWVudCogbm9uQ29uc3RUaGlzID0gY29uc3RfY2FzdDxTVkdTdHlsZWRFbGVt
ZW50Kj4odGhpcyk7CkBAIC0yNTAsMTYgKzI2OCw2IEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6
dXBkYXRlRWxlbWVudEluc3QKICAgICAgICAgKCppdDIpLT51cGRhdGVJbnN0YW5jZShub25Db25z
dFRoaXMpOwogfQogCi12b2lkIFNWR1N0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0
cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMpCi17Ci0gICAgLy8gRklYTUU6IEV2ZW50
dWFsbHkgc3ViY2xhc3NlcyBmcm9tIFNWR0VsZW1lbnQgc2hvdWxkIGltcGxlbWVudAotICAgIC8v
IGF0dHJpYnV0ZUNoYW5nZWQoKSBpbnN0ZWFkIG9mIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpCi0g
ICAgLy8gVGhpcyBpcyBhIHF1aWNrIGZpeCB0byBhbGxvdyBkeW5hbWljIHVwZGF0ZXMgb2YgU1ZH
IGVsZW1lbnRzCi0gICAgLy8gYnV0IHdpbGwgcmVzdWx0IGluIHNsb3dlciBkeW5hbWljLXVwZGF0
ZSBwZXJmb3JtYW5jZSB0aGFuIG5lY2Vzc2FyeS4KLSAgICBTVkdFbGVtZW50OjphdHRyaWJ1dGVD
aGFuZ2VkKGF0dHIsIHByZXNlcnZlRGVjbHMpOwotICAgIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgp
OwotfQotCiBSZW5kZXJTdHlsZSogU1ZHU3R5bGVkRWxlbWVudDo6cmVzb2x2ZVN0eWxlKFJlbmRl
clN0eWxlKiBwYXJlbnRTdHlsZSkKIHsKICAgICBpZiAocmVuZGVyZXIoKSkgewpAQCAtMjg4LDUg
KzI5NiwzIEBAIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6ZGV0YWNoKCkKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0
eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50
LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCw3ICsyNCw2IEBACiAjZGVmaW5lIFNWR1N0eWxl
ZEVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKLQogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9y
bS5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCkBAIC0zNCw5
ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFJlbmRlclBhdGg7
Ci0KLSAgICBjbGFzcyBTVkdTdHlsZWRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsIHB1Ymxp
YyBTVkdTdHlsYWJsZSB7CisgICAgY2xhc3MgU1ZHU3R5bGVkRWxlbWVudCA6IHB1YmxpYyBTVkdF
bGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHU3R5bGFibGUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHU3R5bGVkRWxlbWVudCgpOwpA
QCAtNDQsMjUgKzQyLDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBi
b29sIGlzU3R5bGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgICAgICAv
LyAnU1ZHU3R5bGFibGUnIGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5hbWUpOwogICAg
ICAgICB2aXJ0dWFsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgeyByZXR1cm4gU3R5bGVk
RWxlbWVudDo6c3R5bGUoKTsgfQogCisgICAgICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJik7CisKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdSZXNvdXJjZSogY2FudmFzUmVz
b3VyY2UoKSB7IHJldHVybiAwOyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIGJvb2wgbWFw
VG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiwgTWFwcGVkQXR0cmlidXRlRW50cnkmKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJp
YnV0ZSopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBj
b25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpOwotICAgICAgICB2
b2lkIG5vdGlmeVJlc291cmNlUGFyZW50SWZFeGlzdGFudCgpIGNvbnN0OworICAgICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVz
ZXJ2ZURlY2xzID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KCk7CiAKICAgICAgICAgLy8gQ2VudHJhbGl6ZWQgcGxhY2UgdG8gZm9yY2UgYSBtYW51YWwgc3R5
bGUgcmVzb2x1dGlvbi4gSGFja3kgYnV0IG5lZWRlZCBmb3Igbm93LgogICAgICAgICBSZW5kZXJT
dHlsZSogcmVzb2x2ZVN0eWxlKFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7Ci0gICAgICAgIAor
CisgICAgICAgIHZvaWQgaW52YWxpZGF0ZVJlc291cmNlc0luQW5jZXN0b3JDaGFpbigpIGNvbnN0
OyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKICAgICAgICAgCiAgICAg
cHJvdGVjdGVkOgpAQCAtODAsNSArNzgsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmIC8vIFNWR1N0eWxlZEVsZW1lbnQKLQotLy8gdmltOnRz
PTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJt
YW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShT
VkcpCi0KICNpbmNsdWRlICJTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LmgiCiAKICNpbmNsdWRl
ICJSZW5kZXJQYXRoLmgiCkBAIC03MCw2ICs2OSw0IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW4KIAogfQogCi0vLyB2aW06dHM9NDpub2V0CiAjZW5kaWYgLy8gRU5B
QkxFKFNWRykKLQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQuaAko
cmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QK
QEAgLTIyLDggKzIyLDggQEAKIAogI2lmbmRlZiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50X2gK
ICNkZWZpbmUgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWRykKIAor
I2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCiAjaW5jbHVkZSAiU1ZH
U3R5bGVkRWxlbWVudC5oIgogCkBAIC0zMSwxNCArMzEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKIAotICAgIGNsYXNzIFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwgdmlydHVhbCBwdWJsaWMgU1ZHTG9j
YXRhYmxlIHsKKyAgICBjbGFzcyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50IDogcHVibGljIFNW
R1N0eWxlZEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZp
cnR1YWwgcHVibGljIFNWR0xvY2F0YWJsZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAg
ICAgICB2aXJ0dWFsIH5TVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KCk7CiAgICAgICAgIAogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRMb2NhdGFibGUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICAgICAgLy8gJ1NWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQnIGZ1bmN0aW9ucwog
ICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVzdFZpZXdwb3J0RWxlbWVudCgp
IGNvbnN0OwogCkBAIC01MSw1ICs1MSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudF9oCi0K
LS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFuc2Zv
cm1hYmxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3
aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29s
YXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlz
IHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3Jt
YWJsZUVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHIuaCIKQEAgLTM5LDcgKzM4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6OlNWR1N0eWxl
ZFRyYW5zZm9ybWFibGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUsIGRvYykK
ICAgICAsIFNWR1RyYW5zZm9ybWFibGUoKQotICAgICwgbV90cmFuc2Zvcm0obmV3IFNWR1RyYW5z
Zm9ybUxpc3QoKSkKKyAgICAsIG1fdHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0KFNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyKSkKIHsKIH0KIApAQCAtNDcsNyArNDYsNyBAQCBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudDo6flNWR1N0eWxlCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZ
X0RFRklOSVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LCBTVkdUcmFuc2Zvcm1M
aXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNmb3JtLCB0cmFuc2Zvcm0s
IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3RyYW5zZm9ybS5nZXQoKSkK
K0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVt
ZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJh
bnNmb3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBtX3RyYW5zZm9ybS5n
ZXQoKSkKIAogQWZmaW5lVHJhbnNmb3JtIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojpn
ZXRDVE0oKSBjb25zdAogewpAQCAtNzQsMTUgKzczLDE4IEBAIHZvaWQgU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OnBhcnMKICAKICAgICAgICAgaWYgKCFTVkdUcmFuc2Zvcm1hYmxlOjpw
YXJzZVRyYW5zZm9ybUF0dHJpYnV0ZShsb2NhbFRyYW5zZm9ybXMsIGF0dHItPnZhbHVlKCkpKQog
ICAgICAgICAgICAgbG9jYWxUcmFuc2Zvcm1zLT5jbGVhcihlYyk7Ci0gICAgICAgIGVsc2Ugewor
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZXRUcmFuc2Zvcm1CYXNlVmFsdWUobG9jYWxUcmFu
c2Zvcm1zKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUpOyAvLyBzaG91bGQgcmVhbGx5IGJlIGluIHNl
dFRyYW5zZm9ybQotICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIFNWR1N0eWxlZExvY2F0
YWJsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCitib29sIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQoreworICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAgICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVt
ZW50Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKTsKK30KKwogU1ZHRWxlbWVudCogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQ6Om5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdAog
ewogICAgIHJldHVybiBTVkdUcmFuc2Zvcm1hYmxlOjpuZWFyZXN0Vmlld3BvcnRFbGVtZW50KHRo
aXMpOwpAQCAtOTgsMTMgKzEwMCw2IEBAIEZsb2F0UmVjdCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudDoKICAgICByZXR1cm4gU1ZHVHJhbnNmb3JtYWJsZTo6Z2V0QkJveCh0aGlzKTsKIH0K
IAotdm9pZCBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6bm90aWZ5QXR0cmlidXRlQ2hh
bmdlKCkgY29uc3QKLXsKLSAgICBpZiAocmVuZGVyZXIoKSkKLSAgICAgICAgcmVuZGVyZXIoKS0+
c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6bm90
aWZ5QXR0cmlidXRlQ2hhbmdlKCk7Ci19Ci0KIFJlbmRlck9iamVjdCogU1ZHU3R5bGVkVHJhbnNm
b3JtYWJsZUVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVy
U3R5bGUqIHN0eWxlKQogewogICAgIC8vIEJ5IGRlZmF1bHQsIGFueSBzdWJjbGFzcyBpcyBleHBl
Y3RlZCB0byBkbyBwYXRoLWJhc2VkIGRyYXdpbmcKQEAgLTExNCw1ICsxMDksMyBAQCBSZW5kZXJP
YmplY3QqIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
U1ZHKQotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZFRy
YW5zZm9ybWFibGVFbGVtZW50LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8
d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMg
ZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsMjcgKzIyLDI0IEBACiAKICNp
Zm5kZWYgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRfaAogI2RlZmluZSBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcp
CiAjaW5jbHVkZSAiU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Ry
YW5zZm9ybWFibGUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgQWZmaW5l
VHJhbnNmb3JtOwotICAgIGNsYXNzIEF0dHJpYnV0ZTsKLSAgICBjbGFzcyBOb2RlOwotICAgIGNs
YXNzIFN0cmluZ0ltcGw7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKIAotICAgIGNsYXNz
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJs
ZUVsZW1lbnQsIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlIHsKKyAgICBjbGFzcyBTVkdTdHlsZWRU
cmFuc2Zvcm1hYmxlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1RyYW5z
Zm9ybWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZpcnR1YWwg
flNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KCk7CiAgICAgICAgIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
Ci0gICAgICAgIC8vIERlcml2ZWQgZnJvbTogJ1NWR0xvY2F0YWJsZScKICAgICAgICAgdmlydHVh
bCBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgQWZmaW5l
VHJhbnNmb3JtIGdldFNjcmVlbkNUTSgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1l
bnQqIG5lYXJlc3RWaWV3cG9ydEVsZW1lbnQoKSBjb25zdDsKQEAgLTUzLDE0ICs1MCwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGdldEJCb3goKSBj
b25zdDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7CisgICAgICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJik7CiAKICAgICAgICAgLy8gImJhc2UgY2xhc3MiIG1ldGhvZHMgZm9yIGFsbCB0aGUg
ZWxlbWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCiAgICAgICAgIHZpcnR1YWwgUGF0aCB0b1Bh
dGhEYXRhKCkgY29uc3QgeyByZXR1cm4gUGF0aCgpOyB9CiAgICAgICAgIHZpcnR1YWwgUGF0aCB0
b0NsaXBQYXRoKCkgY29uc3QgeyByZXR1cm4gdG9QYXRoRGF0YSgpOyB9CiAgICAgICAgIHZpcnR1
YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxl
Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0
OwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsIFNWR1RyYW5zZm9ybUxpc3QqLCBSZWZQ
dHI8U1ZHVHJhbnNmb3JtTGlzdD4sIFRyYW5zZm9ybSwgdHJhbnNmb3JtKQogICAgIH07CkBAIC02
OSw1ICs2NSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CiAjZW5kaWYgLy8gU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnRfaAotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHVGVzdHMuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NW
R1Rlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgor
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHpp
bW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5o
IgorCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdUZXN0cy5oIgogCkBAIC00Myw3ICs0
NCw3IEBAIFNWR1Rlc3RzOjp+U1ZHVGVzdHMoKQogU1ZHU3RyaW5nTGlzdCogU1ZHVGVzdHM6OnJl
cXVpcmVkRmVhdHVyZXMoKSBjb25zdAogewogICAgIGlmICghbV9mZWF0dXJlcykKLSAgICAgICAg
bV9mZWF0dXJlcyA9IG5ldyBTVkdTdHJpbmdMaXN0KCk7CisgICAgICAgIG1fZmVhdHVyZXMgPSBu
ZXcgU1ZHU3RyaW5nTGlzdChTVkdOYW1lczo6cmVxdWlyZWRGZWF0dXJlc0F0dHIpOwogCiAgICAg
cmV0dXJuIG1fZmVhdHVyZXMuZ2V0KCk7CiB9CkBAIC01MSw3ICs1Miw3IEBAIFNWR1N0cmluZ0xp
c3QqIFNWR1Rlc3RzOjpyZXF1aXJlZEZlYXR1cmUKIFNWR1N0cmluZ0xpc3QqIFNWR1Rlc3RzOjpy
ZXF1aXJlZEV4dGVuc2lvbnMoKSBjb25zdAogewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAg
ICAgICBtX2V4dGVuc2lvbnMgPSBuZXcgU1ZHU3RyaW5nTGlzdCgpOworICAgICAgICBtX2V4dGVu
c2lvbnMgPSBuZXcgU1ZHU3RyaW5nTGlzdChTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0
cik7CiAKICAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgpOwogfQpAQCAtNTksNyArNjAsNyBA
QCBTVkdTdHJpbmdMaXN0KiBTVkdUZXN0czo6cmVxdWlyZWRFeHRlbnNpCiBTVkdTdHJpbmdMaXN0
KiBTVkdUZXN0czo6c3lzdGVtTGFuZ3VhZ2UoKSBjb25zdAogewogICAgIGlmICghbV9zeXN0ZW1M
YW5ndWFnZSkKLSAgICAgICAgbV9zeXN0ZW1MYW5ndWFnZSA9IG5ldyBTVkdTdHJpbmdMaXN0KCk7
CisgICAgICAgIG1fc3lzdGVtTGFuZ3VhZ2UgPSBuZXcgU1ZHU3RyaW5nTGlzdChTVkdOYW1lczo6
c3lzdGVtTGFuZ3VhZ2VBdHRyKTsKIAogICAgIHJldHVybiBtX3N5c3RlbUxhbmd1YWdlLmdldCgp
OwogfQpAQCAtMTA5LDcgKzExMCwxMyBAQCBib29sIFNWR1Rlc3RzOjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFNWR1Rlc3RzOjppc0tub3du
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIHJldHVybiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJlcXVpcmVkRmVhdHVyZXNBdHRyIHx8CisgICAgICAgICAg
ICBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmVxdWlyZWRFeHRlbnNpb25zQXR0ciB8fAorICAgICAg
ICAgICAgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN5c3RlbUxhbmd1YWdlQXR0cik7Cit9CisKIH0K
IAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdUZXN0cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1Rlc3RzLmgJKHJl
dmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHVGVzdHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAg
ICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsOCArMjIsOCBAQAog
CiAjaWZuZGVmIFNWR1Rlc3RzX2gKICNkZWZpbmUgU1ZHVGVzdHNfaAotI2lmIEVOQUJMRShTVkcp
CiAKKyNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMzEsMTMgKzMxLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBj
bGFzcyBNYXBwZWRBdHRyaWJ1dGU7CiAgICAgY2xhc3MgU3RyaW5nOwogICAgIGNsYXNzIFNWR1N0
cmluZ0xpc3Q7CisgICAgY2xhc3MgUXVhbGlmaWVkTmFtZTsKIAogICAgIGNsYXNzIFNWR1Rlc3Rz
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1Rlc3RzKCk7CiAgICAgICAgIHZpcnR1YWwgflNW
R1Rlc3RzKCk7CiAKLSAgICAgICAgLy8gJ1NWR1Rlc3RzJyBmdW5jdGlvbnMKICAgICAgICAgU1ZH
U3RyaW5nTGlzdCogcmVxdWlyZWRGZWF0dXJlcygpIGNvbnN0OwogICAgICAgICBTVkdTdHJpbmdM
aXN0KiByZXF1aXJlZEV4dGVuc2lvbnMoKSBjb25zdDsKICAgICAgICAgU1ZHU3RyaW5nTGlzdCog
c3lzdGVtTGFuZ3VhZ2UoKSBjb25zdDsKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIGlzVmFsaWQoKSBjb25zdDsKICAgICAgICAgCiAgICAgICAgIGJv
b2wgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CisgICAgICAgIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxTVkdTdHJpbmdMaXN0PiBtX2ZlYXR1cmVzOwpAQCAtNTgs
NSArNTksMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQog
I2VuZGlmIC8vIFNWR1Rlc3RzX2gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3LDggKzU3LDgg
QEAgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp+U1ZHVGV4dENvbnRlbnRFbAogewogfQogCi1BTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR0xlbmd0
aCwgTGVuZ3RoLCBsZW5ndGgsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgsIFNWR05hbWVzOjp0ZXh0
TGVuZ3RoQXR0ci5sb2NhbE5hbWUoKSwgbV90ZXh0TGVuZ3RoKQotQU5JTUFURURfUFJPUEVSVFlf
REVGSU5JVElPTlMoU1ZHVGV4dENvbnRlbnRFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVt
ZXJhdGlvbiwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QsIFNWR05hbWVzOjpsZW5ndGhBZGp1
c3RBdHRyLmxvY2FsTmFtZSgpLCBtX2xlbmd0aEFkanVzdCkKK0FOSU1BVEVEX1BST1BFUlRZX0RF
RklOSVRJT05TKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0
aCwgVGV4dExlbmd0aCwgdGV4dExlbmd0aCwgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBtX3Rl
eHRMZW5ndGgpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0Q29udGVudEVs
ZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVudW1lcmF0aW9uLCBMZW5ndGhBZGp1c3QsIGxlbmd0
aEFkanVzdCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIG1fbGVuZ3RoQWRqdXN0KQogCiBz
dGF0aWMgaW5saW5lIGZsb2F0IGN1bW11bGF0ZWRDaGFyYWN0ZXJSYW5nZUxlbmd0aChjb25zdCBW
ZWN0b3I8U1ZHQ2hhcj46Oml0ZXJhdG9yJiBzdGFydCwgY29uc3QgVmVjdG9yPFNWR0NoYXI+Ojpp
dGVyYXRvciYgZW5kLCBTVkdJbmxpbmVUZXh0Qm94KiB0ZXh0Qm94LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0LCBsb25n
IHN0YXJ0UG9zaXRpb24sIGxvbmcgbGVuZ3RoLCBib29sIGlzVmVydGljYWxUZXh0LCBsb25nJiBh
dENoYXJhY3RlcikKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5jcHAJKHJldmlzaW9uIDI5OTUwKQor
KysgV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgog
ICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3Jn
PgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR1RleHRFbGVtZW50OjpTVkdUZXh0RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudCh0YWdOYW1lLCBkb2MpCiAgICAgLCBTVkdUcmFuc2Zvcm1h
YmxlKCkKLSAgICAsIG1fdHJhbnNmb3JtKG5ldyBTVkdUcmFuc2Zvcm1MaXN0KCkpCisgICAgLCBt
X3RyYW5zZm9ybShuZXcgU1ZHVHJhbnNmb3JtTGlzdChTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikp
CiB7CiB9CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgU1ZHVGV4dEVsZW1lbnQ6On5TVkdUZXh0RWxlbWVu
dCgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRFbGVtZW50
LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJhbnNm
b3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLmxvY2FsTmFtZSgpLCBtX3Ry
YW5zZm9ybS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRFbGVt
ZW50LCBTVkdUcmFuc2Zvcm1MaXN0KiwgVHJhbnNmb3JtTGlzdCwgdHJhbnNmb3JtTGlzdCwgVHJh
bnNmb3JtLCB0cmFuc2Zvcm0sIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLCBtX3RyYW5zZm9ybS5n
ZXQoKSkKIAogdm9pZCBTVkdUZXh0RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogewpAQCAtMTEzLDUgKzExMywzIEBAIGJvb2wgU1ZHVGV4dEVsZW1l
bnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmUKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KLS8v
IHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dEVsZW1lbnQuaAkocmV2aXNpb24gMjk5NTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdUZXh0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiwyMyArMjIsMjEgQEAKIAogI2lmbmRl
ZiBTVkdUZXh0RWxlbWVudF9oCiAjZGVmaW5lIFNWR1RleHRFbGVtZW50X2gKLSNpZiBFTkFCTEUo
U1ZHKQogCisjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtYWJsZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29y
ZQoteworbmFtZXNwYWNlIFdlYkNvcmUgeworCiAgICAgY2xhc3MgU1ZHVGV4dEVsZW1lbnQgOiBw
dWJsaWMgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdUcmFuc2Zvcm1hYmxlCi0gICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR1RyYW5zZm9ybWFibGUgewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZH
VGV4dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgICAgIHZp
cnR1YWwgflNWR1RleHRFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogCi0gICAgICAgICAvLyAnU1ZHVGV4dEVs
ZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIFNWR0VsZW1lbnQqIG5lYXJlc3RWaWV3
cG9ydEVsZW1lbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBTVkdFbGVtZW50KiBmYXJ0aGVz
dFZpZXdwb3J0RWxlbWVudCgpIGNvbnN0OwogCkBAIC02Miw1ICs2MCwzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5v
ZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw5ICs0OCw5IEBAIFNWR1RleHRQYXRoRWxlbWVudDo6flNWR1RleHRQYXRoRWxlbWVudCgKIHsK
IH0KIAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBhdGhFbGVtZW50LCBT
VkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQsIFNWR05h
bWVzOjpzdGFydE9mZnNldEF0dHIubG9jYWxOYW1lKCksIG1fc3RhcnRPZmZzZXQpCi1BTklNQVRF
RF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIGludCwgRW51bWVyYXRp
b24sIGVudW1lcmF0aW9uLCBNZXRob2QsIG1ldGhvZCwgU1ZHTmFtZXM6Om1ldGhvZEF0dHIubG9j
YWxOYW1lKCksIG1fbWV0aG9kKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4
dFBhdGhFbGVtZW50LCBpbnQsIEVudW1lcmF0aW9uLCBlbnVtZXJhdGlvbiwgU3BhY2luZywgc3Bh
Y2luZywgU1ZHTmFtZXM6OnNwYWNpbmdBdHRyLmxvY2FsTmFtZSgpLCBtX3NwYWNpbmcpCitBTklN
QVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIFN0YXJ0T2Zmc2V0LCBzdGFydE9mZnNldCwgU1ZHTmFtZXM6OnN0YXJ0
T2Zmc2V0QXR0ciwgbV9zdGFydE9mZnNldCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1RleHRQYXRoRWxlbWVudCwgaW50LCBFbnVtZXJhdGlvbiwgZW51bWVyYXRpb24sIE1ldGhv
ZCwgbWV0aG9kLCBTVkdOYW1lczo6bWV0aG9kQXR0ciwgbV9tZXRob2QpCitBTklNQVRFRF9QUk9Q
RVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UGF0aEVsZW1lbnQsIGludCwgRW51bWVyYXRpb24sIGVu
dW1lcmF0aW9uLCBTcGFjaW5nLCBzcGFjaW5nLCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIG1fc3Bh
Y2luZykKIAogdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSogYXR0cikKIHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCShy
ZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKiBzdHlsZSkg
eyByZXR1cm4gU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7IH0KICAgICAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKQEAgLTIxLDYgKzIxLDcgQEAKICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKKwogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dC5oIgogCkBAIC0zMiwxMSArMzMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdUZXh0
UG9zaXRpb25pbmdFbGVtZW50OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdUZXh0Q29udGVudEVs
ZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV94KG5ldyBTVkdMZW5ndGhMaXN0KQotICAgICwg
bV95KG5ldyBTVkdMZW5ndGhMaXN0KQotICAgICwgbV9keChuZXcgU1ZHTGVuZ3RoTGlzdCkKLSAg
ICAsIG1fZHkobmV3IFNWR0xlbmd0aExpc3QpCi0gICAgLCBtX3JvdGF0ZShuZXcgU1ZHTnVtYmVy
TGlzdCkKKyAgICAsIG1feChuZXcgU1ZHTGVuZ3RoTGlzdChTVkdOYW1lczo6eEF0dHIpKQorICAg
ICwgbV95KG5ldyBTVkdMZW5ndGhMaXN0KFNWR05hbWVzOjp5QXR0cikpCisgICAgLCBtX2R4KG5l
dyBTVkdMZW5ndGhMaXN0KFNWR05hbWVzOjpkeEF0dHIpKQorICAgICwgbV9keShuZXcgU1ZHTGVu
Z3RoTGlzdChTVkdOYW1lczo6ZHlBdHRyKSkKKyAgICAsIG1fcm90YXRlKG5ldyBTVkdOdW1iZXJM
aXN0KFNWR05hbWVzOjpyb3RhdGVBdHRyKSkKIHsKIH0KIApAQCAtNDQsMTEgKzQ1LDExIEBAIFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6On5TVkdUZXh0UG9zaXQKIHsKIH0KIAotQU5JTUFURURf
UFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3Ro
TGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExpc3QsIFgsIHgsIFNWR05hbWVzOjp4QXR0ci5sb2Nh
bE5hbWUoKSwgbV94LmdldCgpKQotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVuZ3RoTGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExp
c3QsIFksIHksIFNWR05hbWVzOjp5QXR0ci5sb2NhbE5hbWUoKSwgbV95LmdldCgpKQotQU5JTUFU
RURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTGVu
Z3RoTGlzdCosIExlbmd0aExpc3QsIGxlbmd0aExpc3QsIER4LCBkeCwgU1ZHTmFtZXM6OmR4QXR0
ci5sb2NhbE5hbWUoKSwgbV9keC5nZXQoKSkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05T
KFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBs
ZW5ndGhMaXN0LCBEeSwgZHksIFNWR05hbWVzOjpkeUF0dHIubG9jYWxOYW1lKCksIG1fZHkuZ2V0
KCkpCi1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LCBTVkdOdW1iZXJMaXN0KiwgTnVtYmVyTGlzdCwgbnVtYmVyTGlzdCwgUm90YXRlLCByb3Rh
dGUsIFNWR05hbWVzOjpyb3RhdGVBdHRyLmxvY2FsTmFtZSgpLCBtX3JvdGF0ZS5nZXQoKSkKK0FO
SU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5ndGhMaXN0LCBYLCB4LCBTVkdOYW1lczo6eEF0
dHIsIG1feC5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhMaXN0LCBsZW5ndGhMaXN0LCBZ
LCB5LCBTVkdOYW1lczo6eUF0dHIsIG1feS5nZXQoKSkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklO
SVRJT05TKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR0xlbmd0aExpc3QqLCBMZW5ndGhM
aXN0LCBsZW5ndGhMaXN0LCBEeCwgZHgsIFNWR05hbWVzOjpkeEF0dHIsIG1fZHguZ2V0KCkpCitB
TklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBT
VkdMZW5ndGhMaXN0KiwgTGVuZ3RoTGlzdCwgbGVuZ3RoTGlzdCwgRHksIGR5LCBTVkdOYW1lczo6
ZHlBdHRyLCBtX2R5LmdldCgpKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTnVtYmVyTGlzdCosIE51bWJlckxpc3QsIG51bWJlckxp
c3QsIFJvdGF0ZSwgcm90YXRlLCBTVkdOYW1lczo6cm90YXRlQXR0ciwgbV9yb3RhdGUuZ2V0KCkp
CiAKIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewpAQCAtNjgsNiArNjksNCBAQCB2b2lkIFNWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQ6OnBhcnNlTWFwCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCi0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+
CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CkBAIC0yMiwyMiArMjIsMjAgQEAKIAogI2lmbmRlZiBTVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50X2gKICNkZWZpbmUgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudF9oCi0jaWYgRU5B
QkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAg
ICBjbGFzcyBTVkdMZW5ndGhMaXN0OwogICAgIGNsYXNzIFNWR051bWJlckxpc3Q7CiAKLSAgICBj
bGFzcyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxl
bWVudAotICAgIHsKKyAgICBjbGFzcyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50IDogcHVibGlj
IFNWR1RleHRDb250ZW50RWxlbWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdUZXh0UG9z
aXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAg
ICB2aXJ0dWFsIH5TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50KCk7CiAKLSAgICAgICAgLy8gJ1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKICAgICBwcml2YXRlOgpA
QCAtNTIsNSArNTAsMyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm1MaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0
LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjMs
NyArMjMsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykKLQogI2lu
Y2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKQEAgLTMyLDggKzMxLDggQEAKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVNWR1RyYW5zZm9ybUxpc3Q6OlNWR1RyYW5zZm9ybUxpc3QoKQotICAg
IDogU1ZHUE9ETGlzdDxTVkdUcmFuc2Zvcm0+KCkKK1NWR1RyYW5zZm9ybUxpc3Q6OlNWR1RyYW5z
Zm9ybUxpc3QoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICA6IFNWR1BP
RExpc3Q8U1ZHVHJhbnNmb3JtPihhdHRyaWJ1dGVOYW1lKQogewogfQogCkBAIC04NCw1ICs4Mywz
IEBAIFNWR1RyYW5zZm9ybSBTVkdUcmFuc2Zvcm1MaXN0Ojpjb25jYXRlbmEKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1RyYW5zZm9ybUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1M
aXN0LmgJKHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yNCwx
NiArMjQsMTQgQEAKICNkZWZpbmUgU1ZHVHJhbnNmb3JtTGlzdF9oCiAKICNpZiBFTkFCTEUoU1ZH
KQotCiAjaW5jbHVkZSAiU1ZHTGlzdC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdUcmFuc2Zvcm1MaXN0IDogcHVibGlj
IFNWR1BPRExpc3Q8U1ZHVHJhbnNmb3JtPgotICAgIHsKKyAgICBjbGFzcyBTVkdUcmFuc2Zvcm1M
aXN0IDogcHVibGljIFNWR1BPRExpc3Q8U1ZHVHJhbnNmb3JtPiB7CiAgICAgcHVibGljOgotICAg
ICAgICBTVkdUcmFuc2Zvcm1MaXN0KCk7CisgICAgICAgIFNWR1RyYW5zZm9ybUxpc3QoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIH5TVkdUcmFuc2Zvcm1MaXN0KCk7CiAK
ICAgICAgICAgU1ZHVHJhbnNmb3JtIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXgoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJikgY29uc3Q7CkBAIC00OCw1ICs0NiwzIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHVHJhbnNmb3JtTGlz
dF9oCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCShy
ZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNyBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJr
aXQub3JnPgogCkBAIC0yMiw2ICsyMiw3IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisK
ICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKIApAQCAtMjIy
LDggKzIyMywxMSBAQCBib29sIFNWR1RyYW5zZm9ybWFibGU6OnBhcnNlVHJhbnNmb3JtQXR0CiAg
ICAgcmV0dXJuICFkZWxpbVBhcnNlZDsKIH0KIAorYm9vbCBTVkdUcmFuc2Zvcm1hYmxlOjppc0tu
b3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIHJldHVy
biBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cjsKIH0KIAotLy8gdmltOnRzPTQ6
bm9ldAotI2VuZGlmIC8vIEVOQUJMRShTVkcpCit9CiAKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtYWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1RyYW5zZm9ybWFibGUuaAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1hYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hA
a2RlLm9yZz4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgS0RFIHByb2plY3QKQEAgLTIyLDE3ICsyMiwxOCBAQAogCiAjaWZuZGVmIFNW
R1RyYW5zZm9ybWFibGVfaAogI2RlZmluZSBTVkdUcmFuc2Zvcm1hYmxlX2gKLSNpZiBFTkFCTEUo
U1ZHKQogCisjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgotI2luY2x1ZGUgPFBsYXRmb3JtU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLSAgICBjbGFzcyBBdG9taWNTdHJpbmc7CiAgICAgY2xh
c3MgQWZmaW5lVHJhbnNmb3JtOworICAgIGNsYXNzIEF0b21pY1N0cmluZzsKICAgICBjbGFzcyBT
VkdUcmFuc2Zvcm07CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKKyAgICBjbGFzcyBRdWFs
aWZpZWROYW1lOwogCiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtYWJsZSA6IHZpcnR1YWwgcHVibGlj
IFNWR0xvY2F0YWJsZSB7CiAgICAgcHVibGljOgpAQCAtNDcsMTEgKzQ4LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIGdldFNjcmVlbkNUTShjb25zdCBT
VkdFbGVtZW50KikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5z
Zm9ybSBhbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QgPSAwOworCisgICAgICAgIGJvb2wg
aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdU
cmFuc2Zvcm1hYmxlX2gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
VVJJUmVmZXJlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVu
Y2UuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1VSSVJlZmVyZW5jZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC0xOSw2ICsxOSw3IEBACiAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCisKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5j
ZS5oIgogCkBAIC0zNiw3ICszNyw3IEBAIFNWR1VSSVJlZmVyZW5jZTo6flNWR1VSSVJlZmVyZW5j
ZSgpCiB7CiB9CiAKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TX1dJVEhfQ09OVEVYVChT
VkdVUklSZWZlcmVuY2UsIFN0cmluZywgU3RyaW5nLCBzdHJpbmcsIEhyZWYsIGhyZWYsIFhMaW5r
TmFtZXM6OmhyZWZBdHRyLmxvY2FsTmFtZSgpLCBtX2hyZWYpCitBTklNQVRFRF9QUk9QRVJUWV9E
RUZJTklUSU9OU19XSVRIX0NPTlRFWFQoU1ZHVVJJUmVmZXJlbmNlLCBTdHJpbmcsIFN0cmluZywg
c3RyaW5nLCBIcmVmLCBocmVmLCBYTGlua05hbWVzOjpocmVmQXR0ciwgbV9ocmVmKQogCiBib29s
IFNWR1VSSVJlZmVyZW5jZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBh
dHRyKQogewpAQCAtNDgsNiArNDksMTEgQEAgYm9vbCBTVkdVUklSZWZlcmVuY2U6OnBhcnNlTWFw
cGVkQXR0cmlidQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBTVkdVUklSZWZlcmVuY2U6
OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7CisgICAg
cmV0dXJuIGF0dHJOYW1lLm1hdGNoZXMoWExpbmtOYW1lczo6aHJlZkF0dHIpOworfQorCiBTdHJp
bmcgU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAg
aWYgKHVybC5zdGFydHNXaXRoKCJ1cmwoIikpIHsgLy8gVVJJIFJlZmVyZW5jZXMsIGllLiBmaWxs
OnVybCgjdGFyZ2V0KQpAQCAtNjQsNSArNzAsNCBAQCBTdHJpbmcgU1ZHVVJJUmVmZXJlbmNlOjpn
ZXRUYXJnZXQoY29uc3QgCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2VuZGlmIC8vIEVOQUJM
RShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJD
b3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2ls
ZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgcHJvamVjdApAQCAtMjIsOCArMjIsOCBAQAogCiAjaWZuZGVmIFNWR1VSSVJlZmVy
ZW5jZV9oCiAjZGVmaW5lIFNWR1VSSVJlZmVyZW5jZV9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lm
IEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC0zNSwxMCArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR1VS
SVJlZmVyZW5jZSgpOwogICAgICAgICB2aXJ0dWFsIH5TVkdVUklSZWZlcmVuY2UoKTsKIAotICAg
ICAgICAvLyAnU1ZHVVJJUmVmZXJlbmNlJyBmdW5jdGlvbnMKICAgICAgICAgYm9vbCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgYm9vbCBpc0tub3duQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgICAgICAvLyBIZWxwZXJzCiAgICAg
ICAgIHN0YXRpYyBTdHJpbmcgZ2V0VGFyZ2V0KGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHBy
b3RlY3RlZDoKQEAgLTUyLDUgKzUxLDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNWRykKICNlbmRpZiAvLyBTVkdVUklSZWZlcmVuY2VfaAotCi0vLyB2aW06dHM9
NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApA
QCAtNjgsMTAgKzY4LDEwIEBAIFNWR1VzZUVsZW1lbnQ6On5TVkdVc2VFbGVtZW50KCkKIHsKIH0K
IAotQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZHTGVuZ3Ro
LCBMZW5ndGgsIGxlbmd0aCwgWCwgeCwgU1ZHTmFtZXM6OnhBdHRyLmxvY2FsTmFtZSgpLCBtX3gp
Ci1BTklNQVRFRF9QUk9QRVJUWV9ERUZJTklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgs
IExlbmd0aCwgbGVuZ3RoLCBZLCB5LCBTVkdOYW1lczo6eUF0dHIubG9jYWxOYW1lKCksIG1feSkK
LUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1lbnQsIFNWR0xlbmd0aCwg
TGVuZ3RoLCBsZW5ndGgsIFdpZHRoLCB3aWR0aCwgU1ZHTmFtZXM6OndpZHRoQXR0ci5sb2NhbE5h
bWUoKSwgbV93aWR0aCkKLUFOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1VzZUVsZW1l
bnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIEhlaWdodCwgaGVpZ2h0LCBTVkdOYW1lczo6
aGVpZ2h0QXR0ci5sb2NhbE5hbWUoKSwgbV9oZWlnaHQpCitBTklNQVRFRF9QUk9QRVJUWV9ERUZJ
TklUSU9OUyhTVkdVc2VFbGVtZW50LCBTVkdMZW5ndGgsIExlbmd0aCwgbGVuZ3RoLCBYLCB4LCBT
VkdOYW1lczo6eEF0dHIsIG1feCkKK0FOSU1BVEVEX1BST1BFUlRZX0RFRklOSVRJT05TKFNWR1Vz
ZUVsZW1lbnQsIFNWR0xlbmd0aCwgTGVuZ3RoLCBsZW5ndGgsIFksIHksIFNWR05hbWVzOjp5QXR0
ciwgbV95KQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwgU1ZH
TGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgV2lkdGgsIHdpZHRoLCBTVkdOYW1lczo6d2lkdGhBdHRy
LCBtX3dpZHRoKQorQU5JTUFURURfUFJPUEVSVFlfREVGSU5JVElPTlMoU1ZHVXNlRWxlbWVudCwg
U1ZHTGVuZ3RoLCBMZW5ndGgsIGxlbmd0aCwgSGVpZ2h0LCBoZWlnaHQsIFNWR05hbWVzOjpoZWln
aHRBdHRyLCBtX2hlaWdodCkKIAogU1ZHRWxlbWVudEluc3RhbmNlKiBTVkdVc2VFbGVtZW50Ojpp
bnN0YW5jZVJvb3QoKSBjb25zdAogewpAQCAtMTE0LDE0ICsxMTQsNiBAQCB2b2lkIFNWR1VzZUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlCiB2b2lkIFNWR1VzZUVsZW1lbnQ6Omluc2VydGVk
SW50b0RvY3VtZW50KCkKIHsKICAgICBTVkdFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudCgp
OwotCi0gICAgU3RyaW5nIGlkID0gU1ZHVVJJUmVmZXJlbmNlOjpnZXRUYXJnZXQoaHJlZigpKTsK
LSAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQo
aWQpOwotICAgIGlmICghdGFyZ2V0RWxlbWVudCkgewotICAgICAgICBkb2N1bWVudCgpLT5hY2Nl
c3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShpZCwgdGhpcyk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwogfQogCkBAIC0x
MzMsMzEgKzEyNSwzNSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
CiAgICAgbV9zaGFkb3dUcmVlUm9vdEVsZW1lbnQgPSAwOwogfQogCi12b2lkIFNWR1VzZUVsZW1l
bnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMp
Cit2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgLy8gQXZvaWQgY2FsbGluZyBTVkdTdHlsZWRFbGVtZW50
OjphdHRyaWJ1dGVDaGFuZ2VkKCksIGFzIGl0IGFsd2F5cyBjYWxscyBub3RpZnlBdHRyaWJ1dGVD
aGFuZ2UuCi0gICAgU1ZHRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChhdHRyLCBwcmVzZXJ2ZURl
Y2xzKTsKKyAgICBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7CiAKICAgICBpZiAoIWF0dGFjaGVkKCkpCi0gICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm47CiAKLSAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdHJlZSBpZiB4L3kvd2lk
dGgvaGVpZ2h0IG9yIHhsaW5rOmhyZWYgY2hhbmdlZC4KLSAgICBpZiAoYXR0ci0+bmFtZSgpID09
IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnlBdHRyIHx8Ci0g
ICAgICAgIGF0dHItPm5hbWUoKSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHItPm5hbWUo
KSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0ciB8fAotICAgICAgICBhdHRyLT5uYW1lKCkubWF0Y2hl
cyhYTGlua05hbWVzOjpocmVmQXR0cikpCisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4
QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIgfHwKKyAgICAgICAgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0
ciB8fAorICAgICAgICBTVkdUZXN0czo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwKKyAg
ICAgICAgU1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fAorICAgICAg
ICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSB8fAorICAgICAgICBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
IHx8CisgICAgICAgIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgeworICAgICAgICAvLyBUT0RPOiBOb3cgdGhhdCB3ZSdyZSBhd2FyZSBv
ZiB0aGUgYXR0cmlidXRlIG5hbWUsIHdlIGNhbiBmaW5hbGx5IG9wdGltaXplCisgICAgICAgIC8v
IHVwZGF0aW5nIDx1c2U+IGF0dHJpYnV0ZXMgLSB0byBub3QgcmVjbG9uZSBldmVyeSB0aW1lLgog
ICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgIGVsc2UgaWYgKG1fc2hhZG93VHJl
ZVJvb3RFbGVtZW50KQotICAgICAgICBtX3NoYWRvd1RyZWVSb290RWxlbWVudC0+c2V0Q2hhbmdl
ZCgpOworCisgICAgICAgIGlmIChtX3NoYWRvd1RyZWVSb290RWxlbWVudCkKKyAgICAgICAgICAg
IG1fc2hhZG93VHJlZVJvb3RFbGVtZW50LT5zZXRDaGFuZ2VkKCk7CisgICAgfQogfQogCi12b2lk
IFNWR1VzZUVsZW1lbnQ6Om5vdGlmeUF0dHJpYnV0ZUNoYW5nZSgpIGNvbnN0Cit2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgpCiB7CiAgICAgaWYgKCFhdHRhY2hlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICAvLyBOT1RFOiBBIGxvdCBvZiByb29tIGZvciBpbXByb3ZtZW50
cyBoZXJlLiBUaGlzIGlzIHRvbyBzbG93LgotICAgIC8vIEl0IGhhcyB0byBiZSBkb25lIGNvcnJl
Y3RseSwgYnkgaW1wbGVtZW50aW5nIGF0dHJpYnV0ZUNoYW5nZWQoKS4KLSAgICBjb25zdF9jYXN0
PFNWR1VzZUVsZW1lbnQqPih0aGlzKS0+YnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKKyAgICBidWls
ZFBlbmRpbmdSZXNvdXJjZSgpOwogCiAgICAgaWYgKG1fc2hhZG93VHJlZVJvb3RFbGVtZW50KQog
ICAgICAgICBtX3NoYWRvd1RyZWVSb290RWxlbWVudC0+c2V0Q2hhbmdlZCgpOwpAQCAtMjQ5LDYg
KzI0NSwxNiBAQCBzdGF0aWMgYm9vbCBzdWJ0cmVlQ29udGFpbnNEaXNhbGxvd2VkRWxlCiAKIHZv
aWQgU1ZHVXNlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogeworICAgIFN0cmluZyBp
ZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGhyZWYoKSk7CisgICAgRWxlbWVudCogdGFy
Z2V0RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsKKworICAgIGlmICgh
dGFyZ2V0RWxlbWVudCkgeworICAgICAgICAvLyBUT0RPOiBXZSB3YW50IHRvIGRlcmVnaXN0ZXIg
YXMgcGVuZGluZyByZXNvdXJjZSwgaWYgb3VyIGhyZWYoKSBjaGFuZ2VkIQorICAgICAgICAvLyBU
T0RPOiBNb3ZlIHRvIHN2Z0F0dHJpYnV0ZUNoYW5nZWQsIG9uY2Ugd2UncmUgZml4aW5nIHVzZSAm
IHRoZSBuZXcgZHluYW1pYyB1cGRhdGUgY29uY2VwdC4KKyAgICAgICAgZG9jdW1lbnQoKS0+YWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UoaWQsIHRoaXMpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCiAgICAgLy8gRG8gbm90IGJ1aWxkIHRoZSBzaGFkb3cvaW5zdGFu
Y2UgdHJlZSBmb3IgPHVzZT4gZWxlbWVudHMgbGl2aW5nIGluIGEgc2hhZG93IHRyZWUuCiAgICAg
Ly8gVGhlIHdpbGwgYmUgZXhwYW5kZWQgc29vbiBhbnl3YXkgLSBzZWUgZXhwYW5kVXNlRWxlbWVu
dHNJblNoYWRvd1RyZWUoKS4KICAgICBOb2RlKiBwYXJlbnQgPSBwYXJlbnROb2RlKCk7CkBAIC0y
NTgsOSArMjY0LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZQog
CiAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpOwogICAgIH0KLQotICAgIFN0
cmluZyBpZCA9IFNWR1VSSVJlZmVyZW5jZTo6Z2V0VGFyZ2V0KGhyZWYoKSk7Ci0gICAgRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsgCisgCiAg
ICAgU1ZHRWxlbWVudCogdGFyZ2V0ID0gMDsKICAgICBpZiAodGFyZ2V0RWxlbWVudCAmJiB0YXJn
ZXRFbGVtZW50LT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgdGFyZ2V0ID0gc3RhdGljX2Nhc3Q8
U1ZHRWxlbWVudCo+KHRhcmdldEVsZW1lbnQpOwpAQCAtODA5LDUgKzgxMywzIEBAIHZvaWQgU1ZH
VXNlRWxlbWVudDo6dHJhbnNmZXJVc2VBdHRyaWJ1dGUKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgJKHJldmlzaW9uIDI5
OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtE
RSBwcm9qZWN0CkBAIC0yNCwxNSArMjQsMTQgQEAKICNkZWZpbmUgU1ZHVXNlRWxlbWVudF9oCiAK
ICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZC5oIgogI2luY2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKICNpbmNsdWRlICJTVkdV
UklSZWZlcmVuY2UuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwogICAgIGNsYXNzIFNWR0VsZW1lbnRJbnN0YW5jZTsKICAgICBjbGFzcyBTVkdMZW5ndGg7
CiAKQEAgLTQwLDggKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgU1ZHTGFuZ1NwYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1VSSVJlZmVyZW5jZQotICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1VSSVJlZmVyZW5jZSB7CiAgICAgcHVibGljOgogICAgICAgICBTVkdVc2VFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdVc2VF
bGVtZW50KCk7CkBAIC01MSwxNiArNDksMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlk
KCk7IH0KIAotICAgICAgICAvLyBEZXJpdmVkIGZyb206ICdFbGVtZW50JwogICAgICAgICB2aXJ0
dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGluZ1Jl
c291cmNlKCk7CiAKLSAgICAgICAgLy8gJ1NWR1VzZUVsZW1lbnQnIGZ1bmN0aW9ucwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBdHRyaWJ1dGVDaGFuZ2UoKSBjb25zdDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZCgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNl
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2Ug
PSBOb0NoYW5nZSk7CiAKICAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRl
cmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKQEAgLTk2LDEwICs5MiwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZQogICAgICAgICB2b2lkIHJlbW92ZURpc2FsbG93ZWRFbGVtZW50c0Zyb21T
dWJ0cmVlKE5vZGUqIGVsZW1lbnQpOwogCiAgICAgICAgIHZvaWQgYnVpbGRTaGFkb3dUcmVlKFNW
R0VsZW1lbnQqIHRhcmdldCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSk7CisK
ICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX1VTRSkKICAgICAgICAgdm9pZCBleHBhbmRV
c2VFbGVtZW50c0luU2hhZG93VHJlZShOb2RlKiBlbGVtZW50KTsKICAgICAgICAgdm9pZCBleHBh
bmRTeW1ib2xFbGVtZW50c0luU2hhZG93VHJlZShOb2RlKiBlbGVtZW50KTsKICNlbmRpZgorCiAg
ICAgICAgIHZvaWQgYXR0YWNoU2hhZG93VHJlZSgpOwogCiAgICAgICAgIC8vICJUcmVlIGNvbm5l
Y3RvciIgCkBAIC0xMTYsNiArMTE0LDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCiAjZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldAotCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAg
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1l
cm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJv
amVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWYg
RU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdWaWV3RWxlbWVudC5oIgogCkBAIC0zMyw3ICszNCw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHVmlld0VsZW1lbnQ6OlNWR1ZpZXdFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50ICpkb2MpCitTVkdWaWV3
RWxlbWVudDo6U1ZHVmlld0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvYykKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jKQogICAgICwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCgpCiAgICAgLCBTVkdGaXRUb1ZpZXdCb3goKQpA
QCAtNDgsMTIgKzQ5LDEyIEBAIFNWR1ZpZXdFbGVtZW50Ojp+U1ZHVmlld0VsZW1lbnQoKQogU1ZH
U3RyaW5nTGlzdCogU1ZHVmlld0VsZW1lbnQ6OnZpZXdUYXJnZXQoKSBjb25zdAogewogICAgIGlm
ICghbV92aWV3VGFyZ2V0KQotICAgICAgICBtX3ZpZXdUYXJnZXQgPSBuZXcgU1ZHU3RyaW5nTGlz
dCgpOworICAgICAgICBtX3ZpZXdUYXJnZXQgPSBuZXcgU1ZHU3RyaW5nTGlzdChTVkdOYW1lczo6
dmlld1RhcmdldEF0dHIpOwogCiAgICAgcmV0dXJuIG1fdmlld1RhcmdldC5nZXQoKTsKIH0KIAot
dm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
ICphdHRyKQordm9pZCBTVkdWaWV3RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKiBhdHRyKQogewogICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnZp
ZXdUYXJnZXRBdHRyKQogICAgICAgICB2aWV3VGFyZ2V0KCktPnJlc2V0KGF0dHItPnZhbHVlKCkp
OwpAQCAtNzAsNCArNzEsMyBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQotCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdW
aWV3RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmgJ
KHJldmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjIsMjkg
KzIyLDI3IEBACiAKICNpZm5kZWYgU1ZHVmlld0VsZW1lbnRfaAogI2RlZmluZSBTVkdWaWV3RWxl
bWVudF9oCi0jaWYgRU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZH
U3R5bGVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQu
aCIKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJTVkdab29tQW5kUGFu
LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBj
bGFzcyBTVkdTdHJpbmdMaXN0OwogICAgIGNsYXNzIFNWR1ZpZXdFbGVtZW50IDogcHVibGljIFNW
R1N0eWxlZEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdGaXRUb1ZpZXdCb3gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZH
Wm9vbUFuZFBhbgotICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkda
b29tQW5kUGFuIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFNWR1ZpZXdFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdWaWV3RWxlbWVu
dCgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUgKmF0dHIpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKik7CiAKLSAgICAgICAgLy8gJ1NWR1ZpZXdFbGVtZW50JyBmdW5j
dGlvbnMKLSAgICAgICAgU1ZHU3RyaW5nTGlzdCAqdmlld1RhcmdldCgpIGNvbnN0OworICAgICAg
ICBTVkdTdHJpbmdMaXN0KiB2aWV3VGFyZ2V0KCkgY29uc3Q7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCkBA
IC02Myw1ICs2MSwzIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZH
KQogI2VuZGlmCi0KLS8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdT
cGVjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAJKHJldmlz
aW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR1ZpZXdTcGVjOjpTVkdW
aWV3U3BlYyhjb25zdCBTVkdTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKICAgICA6IFNWR0Zp
dFRvVmlld0JveCgpCiAgICAgLCBTVkdab29tQW5kUGFuKCkKLSAgICAsIG1fdHJhbnNmb3JtKG5l
dyBTVkdUcmFuc2Zvcm1MaXN0KCkpCisgICAgLCBtX3RyYW5zZm9ybShuZXcgU1ZHVHJhbnNmb3Jt
TGlzdChTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikpCiAgICAgLCBtX2NvbnRleHRFbGVtZW50KGNv
bnRleHRFbGVtZW50KQogewogfQpAQCAtMTc2LDQgKzE3NiwzIEBAIGJvb2wgU1ZHVmlld1NwZWM6
OnBhcnNlVmlld1NwZWMoY29uc3QgU3QKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCi0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHVmlld1NwZWMuaAkocmV2aXNpb24gMjk5NTApCisrKyBXZWJDb3JlL3N2Zy9TVkdWaWV3U3Bl
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwyOSArMjEsMjcgQEAKIAogI2lmbmRlZiBTVkdWaWV3
U3BlY19oCiAjZGVmaW5lIFNWR1ZpZXdTcGVjX2gKLSNpZiBFTkFCTEUoU1ZHKQogCisjaWYgRU5B
QkxFKFNWRykKICNpbmNsdWRlICJTVkdGaXRUb1ZpZXdCb3guaCIKICNpbmNsdWRlICJTVkdab29t
QW5kUGFuLmgiCiAKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3Jl
Ci17CituYW1lc3BhY2UgV2ViQ29yZSB7CisKICAgICBjbGFzcyBTVkdFbGVtZW50OwogICAgIGNs
YXNzIFNWR1NWR0VsZW1lbnQ7CiAgICAgY2xhc3MgU1ZHVHJhbnNmb3JtTGlzdDsKIAogICAgIGNs
YXNzIFNWR1ZpZXdTcGVjIDogcHVibGljIFNWR0ZpdFRvVmlld0JveCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1YmxpYyBTVkdab29tQW5kUGFuCi0gICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR1pvb21BbmRQYW4gewogICAgIHB1YmxpYzoKICAgICAgICAgU1ZHVmll
d1NwZWMoY29uc3QgU1ZHU1ZHRWxlbWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdWaWV3U3Bl
YygpOwogCiAgICAgICAgIGJvb2wgcGFyc2VWaWV3U3BlYyhjb25zdCBTdHJpbmcmKTsKIAotICAg
ICAgICAvLyAnU1ZHVmlld1NwZWMnIGZ1bmN0aW9ucwogICAgICAgICB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBTdHJpbmcmKTsKICAgICAgICAgU1ZHVHJhbnNmb3JtTGlzdCogdHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFuc2Zvcm0uZ2V0KCk7IH0KIApAQCAtNjgsNSArNjYsMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKICNlbmRpZgotCi0vLyB2
aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAkocmV2aXNpb24gMjk5NTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFu
biA8d2lsZGZveEBrZGUub3JnPgorICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdApAQCAtMjEsNiArMjEsNyBAQAogKi8K
IAogI2luY2x1ZGUgImNvbmZpZy5oIgorCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkda
b29tQW5kUGFuLmgiCiAKQEAgLTYxLDYgKzYyLDExIEBAIGJvb2wgU1ZHWm9vbUFuZFBhbjo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgU1ZHWm9vbUFu
ZFBhbjo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sK
KyAgICByZXR1cm4gYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Onpvb21BbmRQYW5BdHRyOworfQorCiBz
dGF0aWMgY29uc3QgVUNoYXIgZGlzYWJsZVtdID0gIHsnZCcsICdpJywgJ3MnLCAnYScsICdiJywg
J2wnLCAnZSd9Owogc3RhdGljIGNvbnN0IFVDaGFyIG1hZ25pZnlbXSA9ICB7J20nLCAnYScsICdn
JywgJ24nLCAnaScsICdmJywgJ3knfTsKIApAQCAtNzgsNiArODQsNCBAQCBib29sIFNWR1pvb21B
bmRQYW46OnBhcnNlWm9vbUFuZFBhbihjb25zCiAKIH0KIAotLy8gdmltOnRzPTQ6bm9ldAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCi0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1pvb21BbmRQYW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdab29tQW5kUGFuLmgJKHJldmlzaW9uIDI5OTUw
KQorKysgV2ViQ29yZS9zdmcvU1ZHWm9vbUFuZFBhbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJt
YW5uIDx3aWxkZm94QGtkZS5vcmc+CisgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CkBAIC0yMiwxMyArMjIsMTQgQEAK
IAogI2lmbmRlZiBTVkdab29tQW5kUGFuX2gKICNkZWZpbmUgU1ZHWm9vbUFuZFBhbl9oCi0jaWYg
RU5BQkxFKFNWRykKIAorI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgTWFwcGVkQXR0cmlidXRlOwor
ICAgIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAKICAgICBjbGFzcyBTVkdab29tQW5kUGFuIHsKICAg
ICBwdWJsaWM6CkBAIC00MSwxMSArNDIsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTVkdab29tQW5kUGFuKCk7CiAgICAgICAgIHZpcnR1YWwgflNWR1pvb21BbmRQYW4oKTsKIAot
ICAgICAgICAvLyAnU1ZHWm9vbUFuZFBhbicgZnVuY3Rpb25zCiAgICAgICAgIHVuc2lnbmVkIHNo
b3J0IHpvb21BbmRQYW4oKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFpvb21BbmRQ
YW4odW5zaWduZWQgc2hvcnQgem9vbUFuZFBhbik7CiAKICAgICAgICAgYm9vbCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKKyAgICAgICAgYm9vbCBpc0tub3duQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogICAgICAgICBib29sIHBhcnNlWm9vbUFuZFBh
bihjb25zdCBVQ2hhciomIHN0YXJ0LCBjb25zdCBVQ2hhciogZW5kKTsKIApAQCAtNTcsNSArNTgs
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2VuZGlm
IC8vIFNWR1pvb21BbmRQYW5faAotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHUmVzb3VyY2UuY3BwCShyZXZpc2lvbiAyOTk1MCkKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1Jlc291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg2
LDYgKzg2LDMyIEBAIFNWR1Jlc291cmNlOjp+U1ZHUmVzb3VyY2UoKQogCiB2b2lkIFNWR1Jlc291
cmNlOjppbnZhbGlkYXRlKCkKIHsKKyAgICBIYXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVnaW4oKTsKKyAgICBjb25zdCBIYXNoU2V0PFNW
R1N0eWxlZEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jbGllbnRzLmVuZCgpOwor
CisgICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBTVkdTdHlsZWRFbGVtZW50
KiBjdXIgPSAqaXQ7CisKKyAgICAgICAgaWYgKGN1ci0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAg
IGN1ci0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CisKKyAgICAgICAgY3VyLT5p
bnZhbGlkYXRlUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluKCk7CisgICAgfQorfQorCit2b2lkIFNW
R1Jlc291cmNlOjppbnZhbGlkYXRlQ2xpZW50cyhIYXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPiBj
bGllbnRzKQoreworICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGNsaWVudHMuYmVnaW4oKTsKKyAgICBjb25zdCBIYXNoU2V0PFNWR1N0eWxlZEVsZW1l
bnQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2xpZW50cy5lbmQoKTsKKworICAgIGZvciAoOyBp
dCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgU1ZHU3R5bGVkRWxlbWVudCogY3VyID0gKml0Owor
CisgICAgICAgIGlmIChjdXItPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBjdXItPnJlbmRlcmVy
KCktPnNldE5lZWRzTGF5b3V0KHRydWUpOworCisgICAgICAgIGN1ci0+aW52YWxpZGF0ZVJlc291
cmNlc0luQW5jZXN0b3JDaGFpbigpOworICAgIH0KIH0KIAogdm9pZCBTVkdSZXNvdXJjZTo6cmVt
b3ZlQ2xpZW50KFNWR1N0eWxlZEVsZW1lbnQqIGl0ZW0pIApAQCAtMTEwLDQzICsxMzYsMjEgQEAg
dm9pZCBTVkdSZXNvdXJjZTo6YWRkQ2xpZW50KFNWR1N0eWxlZEVsZQogewogICAgIGlmIChtX2Ns
aWVudHMuY29udGFpbnMoaXRlbSkpCiAgICAgICAgIHJldHVybjsKLSAgICAgICAgCisKICAgICBt
X2NsaWVudHMuYWRkKGl0ZW0pOwogCiAgICAgUmVzb3VyY2VTZXQqIHRhcmdldCA9IGNsaWVudE1h
cCgpLmdldChpdGVtKTsKICAgICBpZiAoIXRhcmdldCkgCiAgICAgICAgIHRhcmdldCA9IG5ldyBS
ZXNvdXJjZVNldDsKLSAgICAKLSAgICAKKwogICAgIFNWR1Jlc291cmNlVHlwZSB0eXBlID0gcmVz
b3VyY2VUeXBlKCk7CiAgICAgaWYgKFNWR1Jlc291cmNlKiBvbGRSZXNvdXJjZSA9IHRhcmdldC0+
cmVzb3VyY2VzW3R5cGVdKQogICAgICAgICBvbGRSZXNvdXJjZS0+bV9jbGllbnRzLnJlbW92ZShp
dGVtKTsKLSAgICAKKwogICAgIHRhcmdldC0+cmVzb3VyY2VzW3R5cGVdID0gdGhpczsKICAgICBj
bGllbnRNYXAoKS5zZXQoaXRlbSwgdGFyZ2V0KTsKIH0KIAotdm9pZCBTVkdSZXNvdXJjZTo6cmVw
YWludENsaWVudHMoKSBjb25zdAotewotICAgIFNWR1Jlc291cmNlOjpyZXBhaW50Q2xpZW50cyht
X2NsaWVudHMpOwotfQotCi12b2lkIFNWR1Jlc291cmNlOjpyZXBhaW50Q2xpZW50cyhIYXNoU2V0
PFNWR1N0eWxlZEVsZW1lbnQqPiBjbGllbnRzKQotewotICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxl
bWVudCo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNsaWVudHMuYmVnaW4oKTsKLSAgICBjb25zdCBI
YXNoU2V0PFNWR1N0eWxlZEVsZW1lbnQqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2xpZW50cy5l
bmQoKTsKLQotICAgIGZvciAoOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU1ZHU3R5bGVk
RWxlbWVudCogY3VyID0gKml0OwotICAgICAgICBjdXItPnNldENoYW5nZWQoKTsKLQotICAgICAg
ICBpZiAoY3VyLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgY3VyLT5yZW5kZXJlcigpLT5yZXBh
aW50KCk7Ci0KLSAgICAgICAgY3VyLT5ub3RpZnlSZXNvdXJjZVBhcmVudElmRXhpc3RhbnQoKTsK
LSAgICB9Ci19Ci0KIFRleHRTdHJlYW0mIFNWR1Jlc291cmNlOjpleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdAogewogICAgIHJldHVybiB0czsKQEAgLTE3Myw2ICsx
NzcsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAgICAgcmV0
dXJuIHIuZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0cyk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKK30KIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlLmgJKHJl
dmlzaW9uIDI5OTUwKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDIwICsyNywxNyBAQAogI2RlZmluZSBTVkdS
ZXNvdXJjZV9oCiAKICNpZiBFTkFCTEUoU1ZHKQotCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIK
IAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBBdG9taWNTdHJpbmc7IAogICAgIGNsYXNzIERvY3VtZW50OwotICAgIGNsYXNzIFJlbmRl
clBhdGg7Ci0gICAgY2xhc3MgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOwogICAgIGNsYXNzIFNWR1N0
eWxlZEVsZW1lbnQ7CiAgICAgY2xhc3MgVGV4dFN0cmVhbTsKIApAQCAtNzUsMTAgKzcyLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpOwog
CiAgICAgICAgIHZvaWQgYWRkQ2xpZW50KFNWR1N0eWxlZEVsZW1lbnQqKTsKLQotICAgICAgICB2
b2lkIHJlcGFpbnRDbGllbnRzKCkgY29uc3Q7Ci0gICAgICAgIHN0YXRpYyB2b2lkIHJlcGFpbnRD
bGllbnRzKEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+KTsKLSAgICAgICAgCiAgICAgICAgIHZp
cnR1YWwgU1ZHUmVzb3VyY2VUeXBlIHJlc291cmNlVHlwZSgpIGNvbnN0ID0gMDsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgaXNQYWludFNlcnZlcigpIGNvbnN0IHsgcmV0dXJuIHJlc291cmNlVHlw
ZSgpID09IFBhaW50U2VydmVyUmVzb3VyY2VUeXBlOyB9CkBAIC04OSw3ICs4Miw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCisgICAgICAgIHN0YXRpYyB2b2lkIGlu
dmFsaWRhdGVDbGllbnRzKEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+KTsKICAgICAgICAgc3Rh
dGljIHZvaWQgcmVtb3ZlQ2xpZW50KFNWR1N0eWxlZEVsZW1lbnQqKTsKKwogICAgIHByaXZhdGU6
CiAgICAgICAgIEhhc2hTZXQ8U1ZHU3R5bGVkRWxlbWVudCo+IG1fY2xpZW50czsKICAgICB9OwpA
QCAtMTAxLDUgKzk2LDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYKLQogI2VuZGlmIC8vIFNWR1Jlc291cmNlX2gKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlTWFza2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Nyw3ICs0Nyw4IEBAIFNWR1Jlc291cmNlTWFza2VyOjp+U1ZHUmVzb3VyY2VNYXNrZXIo
KQogCiB2b2lkIFNWR1Jlc291cmNlTWFza2VyOjppbnZhbGlkYXRlKCkKIHsKLSAgICBtX21hc2su
Y2xlYXIoKTsKKwlTVkdSZXNvdXJjZTo6aW52YWxpZGF0ZSgpOworCW1fbWFzay5jbGVhcigpOwog
fQogCiBUZXh0U3RyZWFtJiBTVkdSZXNvdXJjZU1hc2tlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihUZXh0U3RyZWFtJiB0cykgY29uc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NW
R1BhaW50U2VydmVyR3JhZGllbnRDZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvY2cvU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudENnLmNwcAkocmV2aXNpb24gMjk5NTApCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdQYWludFNlcnZlckdyYWRpZW50Q2cuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CisgICAgQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAg
LTMyNyw2ICszMjcsOCBAQCBib29sIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OnNldHVwKEdyYXBo
CiAKIHZvaWQgU1ZHUGFpbnRTZXJ2ZXJHcmFkaWVudDo6aW52YWxpZGF0ZSgpCiB7CisJU1ZHUGFp
bnRTZXJ2ZXI6OmludmFsaWRhdGUoKTsKKwogICAgIC8vIEludmFsaWRhdGUgY2FjaGVzCiAgICAg
Q0dTaGFkaW5nUmVsZWFzZShtX3NoYWRpbmdDYWNoZSk7CiAKQEAgLTMzNyw1ICszMzksMyBAQCB2
b2lkIFNWR1BhaW50U2VydmVyR3JhZGllbnQ6OmludmFsaWRhdGUoCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZgotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDI5OTUwKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzIsNyArNzIsNyBAQCBUZXh0U3RyZWFtJiBTVkdGRUltYWdlOjpleHRlcm5hbFJlcHJlc2Vu
CiB2b2lkIFNWR0ZFSW1hZ2U6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSopCiB7CiAgICAgaWYg
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSA9IGZpbHRlcigpKQotICAgICAgICBm
aWx0ZXJSZXNvdXJjZS0+cmVwYWludENsaWVudHMoKTsKKyAgICAgICAgZmlsdGVyUmVzb3VyY2Ut
PmludmFsaWRhdGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="review"
          id="8248"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>