<?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>73073</bug_id>
          
          <creation_ts>2011-11-24 01:41:01 -0800</creation_ts>
          <short_desc>[Chromium] Move the next traunch of headers into public/platform</short_desc>
          <delta_ts>2011-11-27 22:59:33 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>508673</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-24 01:41:01 -0800</bug_when>
    <thetext>[Chromium] Move the next traunch of headers into public/platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508676</commentid>
    <comment_count>1</comment_count>
      <attachid>116488</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-24 01:46:00 -0800</bug_when>
    <thetext>Created attachment 116488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509408</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-26 23:59:58 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509551</commentid>
    <comment_count>3</comment_count>
      <attachid>116488</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-27 20:58:47 -0800</bug_when>
    <thetext>Comment on attachment 116488
Patch

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

&gt; Source/WebKit/chromium/public/WebGraphicsContext3D.h:-129
&gt; -    virtual bool initialize(Attributes, WebView*, bool renderDirectlyToWebView) = 0;

we&apos;re going to want to unwind this dependency on WebView at some point.

&gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:53
&gt; +class WebApplicationCacheHost; // FIXME: Does this belong in platform?

the storage systems are interesting.  one approach is to say yes, but we need to ensure that policy decisions are handled at the Web{Frame,View}Client level instead.  this is what you would do if it was about access to the filesystem or network stack, so why not other subsystems like the appcache or indexed db backend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509576</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-27 22:58:37 -0800</bug_when>
    <thetext>&gt; we&apos;re going to want to unwind this dependency on WebView at some point.

I&apos;ve added a FIXME.

&gt; &gt; Source/WebKit/chromium/public/platform/WebKitPlatformSupport.h:53
&gt; &gt; +class WebApplicationCacheHost; // FIXME: Does this belong in platform?
&gt; 
&gt; the storage systems are interesting.  one approach is to say yes, but we need to ensure that policy decisions are handled at the Web{Frame,View}Client level instead.  this is what you would do if it was about access to the filesystem or network stack, so why not other subsystems like the appcache or indexed db backend?

Makes sense.  I&apos;ll need to study these classes more to see how close we are to make that work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509577</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-27 22:59:33 -0800</bug_when>
    <thetext>Committed r101224: &lt;http://trac.webkit.org/changeset/101224&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116488</attachid>
            <date>2011-11-24 01:46:00 -0800</date>
            <delta_ts>2011-11-27 20:58:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73073-20111124014559.patch</filename>
            <type>text/plain</type>
            <size>179593</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDExMjkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEx
NyBAQAorMjAxMS0xMS0yNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gTW92ZSB0aGUgbmV4dCB0cmF1bmNoIG9mIGhlYWRlcnMgaW50byBwdWJs
aWMvcGxhdGZvcm0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTczMDczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlc2UgaGVhZGVycyBhcmUgYWxsIHRoZSBmb3J3YXJkLWRlY2xhcmVkIGNsYXNzZXMgaW4K
KyAgICAgICAgV2ViS2l0UGxhdGZvcm1TdXBwb3J0IChhbmQgdGhlaXIgZGVwZW5kZW5jaWVzKSB0
aGF0IHdyYXAgY29uY2VwdHMgaW4KKyAgICAgICAgV2ViQ29yZS9wbGF0Zm9ybS4KKworICAgICAg
ICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgZm9yd2FyZC1kZWNsYXJlZCBjbGFzc2VzIGluIFdlYktp
dFBsYXRmb3JtU3VwcG9ydAorICAgICAgICB0aGF0IGNvb3Jlc3BvbmQgdG8gV2ViQ29yZSBjb25j
ZXB0cyBvdXRzaWRlIG9mIFdlYkNvcmUvcGxhdGZvcm0uICBJJ3ZlCisgICAgICAgIG1hcmtlZCB0
aGVzZSB3aXRoIEZJWE1FIGNvbW1lbnRzLiAgV2UnbGwgbmVlZCB0byBzdHVkeSB0aGVtIGluIG1v
cmUKKyAgICAgICAgZGV0YWlsIHRvIHNlZSB3aGV0aGVyIHRoZXkgc2hvdWxkIG1vdmUgaW50byBX
ZWJDb3JlL3BsYXRmb3JtIG9yIHdoZXRoZXIKKyAgICAgICAgd2UgbmVlZCB0byBtb3ZlIHRoZW0g
b3V0IG9mIFdlYktpdFBsYWZvcm1TdXBwb3J0LmguICAoT25lIHBvc3NpYmxlCisgICAgICAgIHJl
c29sdXRpb24gbWlnaHQgYmUgdG8gaW50cm9kdWNpbmcgYSBXZWJLaXRDbGllbnRTdXBwb3J0Lmgg
dG8gaG9sZAorICAgICAgICBzdGF0aWNzIGZvciBjbGllbnQgY29uY2VwdHMpLgorCisgICAgICAg
ICogcHVibGljL1dlYkJsb2JSZWdpc3RyeS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMv
V2ViQ2FudmFzLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJDbGlwYm9hcmQuaDog
UmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYkNvbG9yLmg6IFJlcGxhY2VkLgorICAgICAg
ICAqIHB1YmxpYy9XZWJDb2xvck5hbWUuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dl
YkNvbW1vbldvcmtlckNsaWVudC5oOgorICAgICAgICAqIHB1YmxpYy9XZWJDb21wb3NpdGlvblVu
ZGVybGluZS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViQ29udGV4dE1lbnVEYXRhLmg6CisgICAgICAgICogcHVibGljL1dl
YkNvb2tpZUphci5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViQ3Vyc29ySW5mby5o
OgorICAgICAgICAqIHB1YmxpYy9XZWJEcmFnRGF0YS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBw
dWJsaWMvV2ViRmlsZVN5c3RlbS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRmxv
YXRRdWFkLmg6CisgICAgICAgICogcHVibGljL1dlYkZvbnQuaDoKKyAgICAgICAgKiBwdWJsaWMv
V2ViRnJhbWUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAg
KiBwdWJsaWMvV2ViR2VvbG9jYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgICogcHVibGljL1dl
Ykdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmg6CisgICAgICAgICogcHVibGlj
L1dlYkdyYXBoaWNzQ29udGV4dDNELmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJI
VFRQQm9keS5oOgorICAgICAgICAqIHB1YmxpYy9XZWJJbWFnZS5oOiBSZXBsYWNlZC4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcHVibGljL1dlYkxheWVy
Lmg6CisgICAgICAgICogcHVibGljL1dlYk1lZGlhUGxheWVyLmg6CisgICAgICAgICogcHVibGlj
L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMv
V2ViTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5
Lmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJOb25Db3B5YWJsZS5oOiBSZXBsYWNl
ZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6IFJlcGxhY2Vk
LgorICAgICAgICAqIHB1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaDogUmVw
bGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlBsdWdpbi5oOgorICAgICAgICAqIHB1YmxpYy9X
ZWJQb2ludC5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViUmVjdC5oOiBSZXBsYWNl
ZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaDoKKyAgICAgICAgKiBw
dWJsaWMvV2ViU2NyZWVuSW5mby5oOgorICAgICAgICAqIHB1YmxpYy9XZWJTY3JvbGxiYXIuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViU2l6ZS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMv
V2ViU29ja2V0U3RyZWFtRXJyb3IuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlNv
Y2tldFN0cmVhbUhhbmRsZS5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50Lmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9XZWJUaHJl
YWQuaDogUmVwbGFjZWQuCisgICAgICAgICogcHVibGljL1dlYlRvdWNoUG9pbnQuaDoKKyAgICAg
ICAgKiBwdWJsaWMvV2ViVVJMTG9hZGVyLmg6IFJlcGxhY2VkLgorICAgICAgICAqIHB1YmxpYy9X
ZWJXaWRnZXQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViV2lkZ2V0Q2xpZW50Lmg6CisgICAgICAg
ICogcHVibGljL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwdWJsaWMvYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5oOiBSZW1vdmVkLgorICAgICAgICAqIHB1
YmxpYy9saW51eC9XZWJGb250RmFtaWx5Lmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL2xp
bnV4L1dlYlNhbmRib3hTdXBwb3J0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL2xpbnV4
L1dlYlRoZW1lRW5naW5lLmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL21hYy9XZWJTYW5k
Ym94U3VwcG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy9tYWMvV2ViVGhlbWVFbmdp
bmUuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQmxvYlJlZ2lzdHJ5
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JSZWdp
c3RyeS5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJDYW52YXMuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2FudmFzLmguCisgICAgICAgICog
cHVibGljL3BsYXRmb3JtL1dlYkNsaXBib2FyZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vV2ViQ29sb3IuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29sb3IuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViQ29sb3JOYW1lLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbG9yTmFtZS5oLgor
ICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJDb29raWVKYXIuaDogQ29waWVkIGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29va2llSmFyLmguCisgICAgICAgICogcHVi
bGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRyYWdEYXRhLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dl
YkZpbGVTeXN0ZW0uaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRmlsZVN5c3RlbS5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJHcmFwaGljc0Nv
bnRleHQzRC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJH
cmFwaGljc0NvbnRleHQzRC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJJbWFnZS5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oLgor
ICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAg
ICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJNaW1lUmVnaXN0cnkuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWltZVJlZ2lzdHJ5LmguCisg
ICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYk5vbkNvcHlhYmxlLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vbkNvcHlhYmxlLmguCisgICAgICAgICog
cHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaC4K
KyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJQb2lu
dC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQb2ludC5o
LgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9XZWJSZWN0Lmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vV2ViU2l6ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTaXplLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlNvY2tldFN0cmVhbUVy
cm9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNvY2tl
dFN0cmVhbUVycm9yLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlNvY2tldFN0cmVh
bUhhbmRsZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
b2NrZXRTdHJlYW1IYW5kbGUuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vV2ViU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oLgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9XZWJUaHJlYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVGhyZWFkLmguCisgICAgICAgICogcHVibGljL3BsYXRmb3JtL1dlYlVSTExvYWRl
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2Fk
ZXIuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vYW5kcm9pZDogQWRkZWQuCisgICAgICAg
ICogcHVibGljL3BsYXRmb3JtL2FuZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9y
dC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViVGhl
bWVFbmdpbmUuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vbGludXg6IEFkZGVkLgorICAg
ICAgICAqIHB1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5Lmg6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYkZvbnRGYW1pbHkuaC4KKyAg
ICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBv
cnQuaC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdpbmUuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVF
bmdpbmUuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OnBhaW50KToKKyAgICAg
ICAgKiBwdWJsaWMvcGxhdGZvcm0vbWFjOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZv
cm0vbWFjL1dlYlNhbmRib3hTdXBwb3J0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL21hYy9XZWJTYW5kYm94U3VwcG9ydC5oLgorICAgICAgICAqIHB1YmxpYy9w
bGF0Zm9ybS9tYWMvV2ViVGhlbWVFbmdpbmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmguCisgICAgICAgIChXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpwYWludFNjcm9sbGJhclRodW1iKToKKyAgICAgICAgKiBwdWJsaWMvcGxh
dGZvcm0vd2luOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvcGxhdGZvcm0vd2luL1dlYlNhbmRi
b3hTdXBwb3J0Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3dp
bi9XZWJTYW5kYm94U3VwcG9ydC5oLgorICAgICAgICAqIHB1YmxpYy9wbGF0Zm9ybS93aW4vV2Vi
VGhlbWVFbmdpbmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
d2luL1dlYlRoZW1lRW5naW5lLmguCisgICAgICAgICogcHVibGljL3dpbi9XZWJTYW5kYm94U3Vw
cG9ydC5oOiBSZW1vdmVkLgorICAgICAgICAqIHB1YmxpYy93aW4vV2ViVGhlbWVFbmdpbmUuaDog
UmVtb3ZlZC4KKwogMjAxMS0xMS0yMyAgR3JlZyBCaWxsb2NrICA8Z2JpbGxvY2tAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBBZGQgc2ltcGxlIGltcGxlbWVudGF0aW9uIGZvciB3ZWIgaW50ZW50cyBj
aHJvbWl1bSBBUEkgZGF0YSBjbGFzc2VzLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViQmxvYlJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQmxvYlJlZ2lzdHJ5LmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC0yOCwzMSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkJsb2JS
ZWdpc3RyeV9oCi0jZGVmaW5lIFdlYkJsb2JSZWdpc3RyeV9oCi0KLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkJsb2JEYXRh
OwotY2xhc3MgV2ViVVJMOwotCi1jbGFzcyBXZWJCbG9iUmVnaXN0cnkgewotcHVibGljOgotICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkJsb2JSZWdpc3RyeSogY3JlYXRlKCk7Ci0KLSAgICB2
aXJ0dWFsIH5XZWJCbG9iUmVnaXN0cnkoKSB7IH0KLQotICAgIC8vIFJlZ2lzdGVycyBhIGJsb2Ig
VVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KLSAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYlVSTCYsIFdlYkJsb2JEYXRhJikgPSAwOwotICAg
IAotICAgIC8vIFJlZ2lzdGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgYmxvYiBkYXRh
IGlkZW50aWZpZWQgYnkgdGhlIHNwZWNpZmllZCBzcmNVUkwuCi0gICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyQmxvYlVSTChjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJVUkwmIHNyY1VSTCkgPSAwOwot
Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYlVSTCYpID0gMDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQmxvYlJlZ2lzdHJ5
X2gKKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkJsb2JSZWdpc3RyeS5oIgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDYW52YXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJDYW52YXMuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2FudmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDI3
ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ2FudmFzX2gKLSNk
ZWZpbmUgV2ViQ2FudmFzX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi0j
aWYgV0VCS0lUX1VTSU5HX1NLSUEKLWNsYXNzIFNrQ2FudmFzOwotI2VsaWYgV0VCS0lUX1VTSU5H
X0NHCi1zdHJ1Y3QgQ0dDb250ZXh0OwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0j
aWYgV0VCS0lUX1VTSU5HX1NLSUEKLXR5cGVkZWYgU2tDYW52YXMgV2ViQ2FudmFzOwotI2VsaWYg
V0VCS0lUX1VTSU5HX0NHCi10eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgV2ViQ2FudmFzOwotI2Vs
c2UKLSNlcnJvciAiTmVlZCB0byBkZWZpbmUgV2ViQ2FudmFzIgotI2VuZGlmCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZP
Uk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgJKHJldmlzaW9uIDEwMTEy
MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0yOCw3MSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFdlYkNsaXBib2FyZF9oCi0jZGVmaW5lIFdlYkNsaXBib2FyZF9oCi0KLSNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEYXRhLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJEcmFnRGF0YTsKLWNsYXNzIFdlYklt
YWdlOwotY2xhc3MgV2ViVVJMOwotCi1jbGFzcyBXZWJDbGlwYm9hcmQgewotcHVibGljOgotICAg
IGVudW0gRm9ybWF0IHsKLSAgICAgICAgRm9ybWF0UGxhaW5UZXh0LAotICAgICAgICBGb3JtYXRI
VE1MLAotICAgICAgICBGb3JtYXRCb29rbWFyaywKLSAgICAgICAgRm9ybWF0U21hcnRQYXN0ZQot
ICAgIH07Ci0KLSAgICBlbnVtIEJ1ZmZlciB7Ci0gICAgICAgIEJ1ZmZlclN0YW5kYXJkLAotICAg
ICAgICAvLyBVc2VkIG9uIHBsYXRmb3JtcyBsaWtlIHRoZSBYIFdpbmRvdyBTeXN0ZW0gdGhhdCB0
cmVhdCBzZWxlY3Rpb24KLSAgICAgICAgLy8gYXMgYSB0eXBlIG9mIGNsaXBib2FyZC4KLSAgICAg
ICAgQnVmZmVyU2VsZWN0aW9uLAotICAgICAgICAvLyBSZWFkLW9ubHkgYnVmZmVyIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIGN1cnJlbnQgZHJhZyBvcGVyYXRpb24sIGlmIGFueS4KLSAgICAgICAgQnVm
ZmVyRHJhZywKLSAgICB9OwotCi0gICAgLy8gUmV0dXJucyBhbiBpZGVudGlmaWVyIHdoaWNoIGNh
biBiZSB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBkYXRhCi0gICAgLy8gY29udGFpbmVk
IHdpdGhpbiB0aGUgY2xpcGJvYXJkIGhhcyBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdWludDY0IHNl
cXVlbmNlTnVtYmVyKEJ1ZmZlcikgeyByZXR1cm4gMDsgfQotCi0gICAgdmlydHVhbCBib29sIGlz
Rm9ybWF0QXZhaWxhYmxlKEZvcm1hdCwgQnVmZmVyKSB7IHJldHVybiBmYWxzZTsgfQotCi0gICAg
dmlydHVhbCBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZWFkQXZhaWxhYmxlVHlwZXMoCi0gICAgICAg
IEJ1ZmZlciwgYm9vbCogY29udGFpbnNGaWxlbmFtZXMpIHsgcmV0dXJuIFdlYlZlY3RvcjxXZWJT
dHJpbmc+KCk7IH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyByZWFkUGxhaW5UZXh0KEJ1ZmZlcikg
eyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLSAgICAvLyBmcmFnbWVudFN0YXJ0IGFuZCBmcmFnbWVu
dEVuZCBhcmUgaW5kZXhlcyBpbnRvIHRoZSByZXR1cm5lZCBtYXJrdXAgdGhhdAotICAgIC8vIGlu
ZGljYXRlIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSBmcmFnbWVudCBpZiB0aGUgcmV0dXJuZWQg
bWFya3VwCi0gICAgLy8gY29udGFpbnMgYWRkaXRpb25hbCBjb250ZXh0LiBJZiB0aGVyZSBpcyBu
byBhZGRpdGlvbmFsIGNvbnRleHQsCi0gICAgLy8gZnJhZ21lbnRTdGFydCB3aWxsIGJlIHplcm8g
YW5kIGZyYWdtZW50RW5kIHdpbGwgYmUgdGhlIHNhbWUgYXMgdGhlIGxlbmd0aAotICAgIC8vIG9m
IHRoZSByZXR1cm5lZCBtYXJrdXAuCi0gICAgdmlydHVhbCBXZWJTdHJpbmcgcmVhZEhUTUwoCi0g
ICAgICAgIEJ1ZmZlciBidWZmZXIsIFdlYlVSTCogcGFnZVVSTCwgdW5zaWduZWQqIGZyYWdtZW50
U3RhcnQsCi0gICAgICAgIHVuc2lnbmVkKiBmcmFnbWVudEVuZCkgeyByZXR1cm4gV2ViU3RyaW5n
KCk7IH0KLSAgICB2aXJ0dWFsIFdlYkRhdGEgcmVhZEltYWdlKEJ1ZmZlcikgeyByZXR1cm4gV2Vi
RGF0YSgpOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgd3JpdGVQbGFpblRleHQoY29uc3QgV2ViU3Ry
aW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHdyaXRlSFRNTCgKLSAgICAgICAgY29uc3QgV2Vi
U3RyaW5nJiBodG1sVGV4dCwgY29uc3QgV2ViVVJMJiwKLSAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBwbGFpblRleHQsIGJvb2wgd3JpdGVTbWFydFBhc3RlKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVVUkwoCi0gICAgICAgIGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCB3cml0ZUltYWdlKAotICAgICAgICBjb25zdCBXZWJJbWFn
ZSYsIGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB3cml0ZURhdGFPYmplY3QoY29uc3QgV2ViRHJhZ0RhdGEmKSB7IH0KLQotcHJvdGVj
dGVkOgotICAgIH5XZWJDbGlwYm9hcmQoKSB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNsaXBib2FyZC5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkNvbG9yLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkNvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDE5ICsyOCw2
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViQ29sb3JfaAotI2RlZmluZSBX
ZWJDb2xvcl9oCi0KLSNpbmNsdWRlICJXZWJDb2xvck5hbWUuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXR5cGVkZWYgdW5zaWduZWQg
V2ViQ29sb3I7ICAvLyBSR0JBIHF1YWQuIEVxdWl2YWxlbnQgdG8gU2tDb2xvci4KLQotLy8gU2V0
cyB0aGUgdmFsdWVzIG9mIGEgc2V0IG9mIG5hbWVkIGNvbG9ycy4KLVdFQktJVF9FWFBPUlQgdm9p
ZCBzZXROYW1lZENvbG9ycyhjb25zdCBXZWJDb2xvck5hbWUqLCBjb25zdCBXZWJDb2xvciosIHNp
emVfdCBsZW5ndGgpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRf
TUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29sb3Iu
aCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29sb3JO
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29s
b3JOYW1lLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNvbG9yTmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcxICsxLDMzIEBACiAvKgot
KiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoK
LSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSogbWV0OgotKgotKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0qIGRpc3RyaWJ1dGlvbi4K
LSogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKgotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0qICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0qIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaWZuZGVmIFdlYkNvbG9yTmFtZV9oCi0jZGVmaW5lIFdl
YkNvbG9yTmFtZV9oCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFdlYkNvbG9yTmFtZSB7
Ci0gICAgV2ViQ29sb3JBY3RpdmVCb3JkZXIsCi0gICAgV2ViQ29sb3JBY3RpdmVDYXB0aW9uLAot
ICAgIFdlYkNvbG9yQXBwd29ya3NwYWNlLAotICAgIFdlYkNvbG9yQmFja2dyb3VuZCwKLSAgICBX
ZWJDb2xvckJ1dHRvbkZhY2UsCi0gICAgV2ViQ29sb3JCdXR0b25IaWdobGlnaHQsCi0gICAgV2Vi
Q29sb3JCdXR0b25TaGFkb3csCi0gICAgV2ViQ29sb3JCdXR0b25UZXh0LAotICAgIFdlYkNvbG9y
Q2FwdGlvblRleHQsCi0gICAgV2ViQ29sb3JHcmF5VGV4dCwKLSAgICBXZWJDb2xvckhpZ2hsaWdo
dCwKLSAgICBXZWJDb2xvckhpZ2hsaWdodFRleHQsCi0gICAgV2ViQ29sb3JJbmFjdGl2ZUJvcmRl
ciwKLSAgICBXZWJDb2xvckluYWN0aXZlQ2FwdGlvbiwKLSAgICBXZWJDb2xvckluYWN0aXZlQ2Fw
dGlvblRleHQsCi0gICAgV2ViQ29sb3JJbmZvQmFja2dyb3VuZCwKLSAgICBXZWJDb2xvckluZm9U
ZXh0LAotICAgIFdlYkNvbG9yTWVudSwKLSAgICBXZWJDb2xvck1lbnVUZXh0LAotICAgIFdlYkNv
bG9yU2Nyb2xsYmFyLAotICAgIFdlYkNvbG9yVGV4dCwKLSAgICBXZWJDb2xvclRocmVlZERhcmtT
aGFkb3csCi0gICAgV2ViQ29sb3JUaHJlZWRTaGFkb3csCi0gICAgV2ViQ29sb3JUaHJlZWRGYWNl
LAotICAgIFdlYkNvbG9yVGhyZWVkSGlnaGxpZ2h0LAotICAgIFdlYkNvbG9yVGhyZWVkTGlnaHRT
aGFkb3csCi0gICAgV2ViQ29sb3JXZWJraXRGb2N1c1JpbmdDb2xvciwKLSAgICBXZWJDb2xvcldp
bmRvdywKLSAgICBXZWJDb2xvcldpbmRvd0ZyYW1lLAotICAgIFdlYkNvbG9yV2luZG93VGV4dAot
fTsKLQotfSAgLy8gbmFtZXNwYWNlIFdlYktpdAorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KIAorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RP
X1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29sb3JOYW1lLmgiCiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldv
cmtlckNsaWVudC5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyAr
MzIsNyBAQAogI2RlZmluZSBXZWJDb21tb25Xb3JrZXJDbGllbnRfaAogCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkZpbGVTeXN0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbXBvc2l0aW9uVW5kZXJsaW5lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRp
b25VbmRlcmxpbmUuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQ29tcG9zaXRpb25VbmRlcmxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NyArMzEsNyBAQAogI2lmbmRlZiBXZWJDb21wb3NpdGlvblVuZGVybGluZV9oCiAjZGVmaW5lIFdl
YkNvbXBvc2l0aW9uVW5kZXJsaW5lX2gKIAotI2luY2x1ZGUgIldlYkNvbG9yLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ29sb3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllckNs
aWVudC5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb250ZW50TGF5ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBA
QAogI2lmbmRlZiBXZWJDb250ZW50TGF5ZXJDbGllbnRfaAogI2RlZmluZSBXZWJDb250ZW50TGF5
ZXJDbGllbnRfaAogCi0jaW5jbHVkZSAiV2ViQ2FudmFzLmgiCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViQ2FudmFzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogc3RydWN0IFdlYlJlY3Q7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZXh0TWVudURh
dGEuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29udGV4dE1lbnVEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNp
bmNsdWRlICJXZWJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIldlYk1lbnVJdGVtSW5mby5oIgog
I2luY2x1ZGUgIldlYk5vZGUuaCIKLSNpbmNsdWRlICJXZWJQb2ludC5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgi
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb29raWVKYXIuaAko
cmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29v
a2llSmFyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDI5ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgV2ViQ29va2llSmFyX2gKLSNkZWZpbmUgV2ViQ29va2llSmFyX2gKLQot
I2luY2x1ZGUgIldlYlN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYlVS
TDsKLXN0cnVjdCBXZWJDb29raWU7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVj
dG9yOwotCi1jbGFzcyBXZWJDb29raWVKYXIgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb29raWUoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywgY29uc3QgV2ViU3RyaW5nJiBjb29raWUpIHsgfQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGNv
b2tpZXMoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykg
eyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJVUkwmIGZpcnN0UGFy
dHlGb3JDb29raWVzKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQotICAgIHZpcnR1YWwgdm9pZCBy
YXdDb29raWVzKGNvbnN0IFdlYlVSTCYsIGNvbnN0IFdlYlVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIFdlYlZlY3RvcjxXZWJDb29raWU+JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJTdHJpbmcmIGNvb2tpZU5hbWUpIHsgfQotICAg
IHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJVUkwmLCBjb25zdCBXZWJVUkwm
IGZpcnN0UGFydHlGb3JDb29raWVzKSB7IHJldHVybiB0cnVlOyB9Ci0KLXByb3RlY3RlZDoKLSAg
ICB+V2ViQ29va2llSmFyKCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lm
bmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViQ29va2llSmFyLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkN1cnNvckluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJDdXJzb3JJbmZvLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkN1cnNvckluZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJDdXJzb3JJbmZvX2gKICNkZWZpbmUgV2ViQ3Vyc29y
SW5mb19oCiAKLSNpbmNsdWRlICJXZWJJbWFnZS5oIgotI2luY2x1ZGUgIldlYlBvaW50LmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQb2lu
dC5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNs
YXNzIEN1cnNvcjsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRHJh
Z0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJE
cmFnRGF0YS5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEcmFnRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw4OCArMjgsNiBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkRyYWdEYXRhX2gKLSNkZWZpbmUgV2ViRHJhZ0Rh
dGFfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0KLSNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0
OyB9Ci1uYW1lc3BhY2UgV1RGIHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQ
dHI7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRGF0YTsKLWNs
YXNzIFdlYkRyYWdEYXRhUHJpdmF0ZTsKLWNsYXNzIFdlYlN0cmluZzsKLWNsYXNzIFdlYlVSTDsK
LXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7Ci0KLS8vIEhvbGRzIGRhdGEg
dGhhdCBtYXkgYmUgZXhjaGFuZ2VkIHRocm91Z2ggYSBkcmFnLW4tZHJvcCBvcGVyYXRpb24uICBJ
dCBpcwotLy8gaW5leHBlbnNpdmUgdG8gY29weSBhIFdlYkRyYWdEYXRhIG9iamVjdC4KLWNsYXNz
IFdlYkRyYWdEYXRhIHsKLXB1YmxpYzoKLSAgICB+V2ViRHJhZ0RhdGEoKSB7IHJlc2V0KCk7IH0K
LQotICAgIFdlYkRyYWdEYXRhKCkgOiBtX3ByaXZhdGUoMCkgeyB9Ci0gICAgV2ViRHJhZ0RhdGEo
Y29uc3QgV2ViRHJhZ0RhdGEmIGQpIDogbV9wcml2YXRlKDApIHsgYXNzaWduKGQpOyB9Ci0gICAg
V2ViRHJhZ0RhdGEmIG9wZXJhdG9yPShjb25zdCBXZWJEcmFnRGF0YSYgZCkKLSAgICB7Ci0gICAg
ICAgIGFzc2lnbihkKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0
KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFzc2lnbihjb25zdCBXZWJEcmFnRGF0YSYpOwot
Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9wcml2YXRlOyB9Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIFdlYlN0cmluZyB1cmwoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0VVJMKGNvbnN0IFdlYlVSTCYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcg
dXJsVGl0bGUoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VVJMVGl0bGUoY29u
c3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBkb3dubG9hZE1l
dGFkYXRhKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERvd25sb2FkTWV0YWRh
dGEoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBmaWxl
RXh0ZW5zaW9uKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVFeHRlbnNp
b24oY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgY29udGFpbnNG
aWxlbmFtZXMoKSBjb25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgZmlsZW5hbWVzKFdlYlZl
Y3RvcjxXZWJTdHJpbmc+JikgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVu
YW1lcyhjb25zdCBXZWJWZWN0b3I8V2ViU3RyaW5nPiYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBhcHBlbmRUb0ZpbGVuYW1lcyhjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9FWFBP
UlQgV2ViU3RyaW5nIHBsYWluVGV4dCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRQbGFpblRleHQoY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYlN0
cmluZyBodG1sVGV4dCgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIVE1MVGV4
dChjb25zdCBXZWJTdHJpbmcmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgV2ViVVJMIGh0bWxCYXNl
VVJMKCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhUTUxCYXNlVVJMKGNvbnN0
IFdlYlVSTCYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgZmlsZUNvbnRlbnRGaWxl
bmFtZSgpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaWxlQ29udGVudEZpbGVu
YW1lKGNvbnN0IFdlYlN0cmluZyYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJEYXRhIGZpbGVD
b250ZW50KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpbGVDb250ZW50KGNv
bnN0IFdlYkRhdGEmKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYkRyYWdE
YXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+Jik7
Ci0gICAgV2ViRHJhZ0RhdGEmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6Q2hyb21pdW1EYXRhT2JqZWN0PiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q+KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJpdmF0ZToK
LSAgICB2b2lkIGFzc2lnbihXZWJEcmFnRGF0YVByaXZhdGUqKTsKLSAgICB2b2lkIGVuc3VyZU11
dGFibGUoKTsKLSAgICBXZWJEcmFnRGF0YVByaXZhdGUqIG1fcHJpdmF0ZTsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExB
VEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRmlsZVN5c3RlbS5oCShyZXZpc2lv
biAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGaWxlU3lzdGVt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKQEAgLTI4LDk1ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgV2ViRmlsZVN5c3RlbV9oCi0jZGVmaW5lIFdlYkZpbGVTeXN0ZW1faAotCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOwot
Y2xhc3MgV2ViRmlsZVdyaXRlcjsKLWNsYXNzIFdlYkZpbGVXcml0ZXJDbGllbnQ7Ci0KLWNsYXNz
IFdlYkZpbGVTeXN0ZW0gewotcHVibGljOgotICAgIGVudW0gVHlwZSB7Ci0gICAgICAgIFR5cGVU
ZW1wb3JhcnksCi0gICAgICAgIFR5cGVQZXJzaXN0ZW50LAotICAgICAgICBUeXBlRXh0ZXJuYWws
Ci0gICAgfTsKLQotICAgIC8vIE1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgfHNyY1BhdGh8
IHRvIHxkZXN0UGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2Vl
ZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vz
c2Z1bGx5LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0IGJl
IGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIG1vdmUoY29uc3QgV2ViVVJMJiBz
cmNQYXRoLCBjb25zdCBXZWJVUkwmIGRlc3RQYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENvcGllcyBhIGZpbGUg
b3IgZGlyZWN0b3J5IGF0IHxzcmNQYXRofCB0byB8ZGVzdFBhdGh8LgotICAgIC8vIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVy
YXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAvLyBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwg
dm9pZCBjb3B5KGNvbnN0IFdlYlVSTCYgc3JjUGF0aCwgY29uc3QgV2ViVVJMJiBkZXN0UGF0aCwg
V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
Ci0KLSAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgYXQgYSBnaXZlbiB8cGF0aHwu
Ci0gICAgLy8gSXQgaXMgYW4gZXJyb3IgdG8gdHJ5IHRvIHJlbW92ZSBhIGRpcmVjdG9yeSB0aGF0
IGlzIG5vdCBlbXB0eS4KLSAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRTdWNjZWVk
KCkgbXVzdCBiZSBjYWxsZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNz
ZnVsbHkuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11c3QgYmUg
Y2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKGNvbnN0IFdlYlVSTCYg
cGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9Ci0KLSAgICAvLyBEZWxldGVzIGEgZmlsZSBvciBkaXJlY3RvcnkgcmVjdXJzaXZlbHkg
YXQgYSBnaXZlbiB8cGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3Vj
Y2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBjb21wbGV0ZWQgc3Vj
Y2Vzc2Z1bGx5LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZEZhaWwoKSBtdXN0
IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVJlY3Vyc2l2ZWx5
KGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopIHsgV0VCS0lUX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICAvLyBSZXRyaWV2ZXMgdGhlIG1ldGFkYXRhIGlu
Zm9ybWF0aW9uIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBhdCB0aGUgZ2l2ZW4gfHBhdGh8Lgot
ICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFJlYWRNZXRhZGF0YSgpIG11c3QgYmUg
Y2FsbGVkIHdpdGggYSB2YWxpZCBtZXRhZGF0YSB3aGVuIHRoZSByZXRyaWV2YWwgaXMgY29tcGxl
dGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWls
KCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCByZWFkTWV0YWRh
dGEoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENyZWF0ZXMgYSBmaWxlIGF0IGdpdmVu
IHxwYXRofC4KLSAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0ZXMg
YSBuZXcgZmlsZSBhdCB8cGF0aHwuCi0gICAgLy8gSWYgfGV4Y2x1c2l2ZXwgaXMgdHJ1ZSwgaXQg
ZmFpbHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cy4KLSAgICAvLyBJZiB8ZXhjbHVzaXZl
fCBpcyBmYWxzZSwgaXQgc3VjY2VlZHMgaWYgdGhlIHxwYXRofCBhbHJlYWR5IGV4aXN0cyBvcgot
ICAgIC8vIGl0IGhhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhIG5ldyBmaWxlIGF0IHxwYXRofC4K
LSAgICAvLwotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRpZFN1Y2NlZWQoKSBtdXN0
IGJlIGNhbGxlZCB3aGVuIHRoZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4K
LSAgICAvLyBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQg
b3RoZXJ3aXNlLgotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVGaWxlKGNvbnN0IFdlYlVSTCYgcGF0
aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7IFdFQktJVF9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgLy8gQ3JlYXRlcyBhIGRpcmVjdG9yeSBhdCBhIGdp
dmVuIHxwYXRofC4KLSAgICAvLyBJZiB0aGUgfHBhdGh8IGRvZXNuJ3QgZXhpc3QsIGl0IGNyZWF0
ZXMgYSBuZXcgZGlyZWN0b3J5IGF0IHxwYXRofC4KLSAgICAvLyBJZiB8ZXhjbHVzaXZlfCBpcyB0
cnVlLCBpdCBmYWlscyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhpc3RzLgotICAgIC8vIElmIHxl
eGNsdXNpdmV8IGlzIGZhbHNlLCBpdCBzdWNjZWVkcyBpZiB0aGUgfHBhdGh8IGFscmVhZHkgZXhp
c3RzIG9yIGl0IGhhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBhIG5ldyBkaXJlY3RvcnkgYXQgfHBh
dGh8LgotICAgIC8vCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkU3VjY2VlZCgp
IG11c3QgYmUgY2FsbGVkIHdoZW4KLSAgICAvLyB0aGUgb3BlcmF0aW9uIGlzIGNvbXBsZXRlZCBz
dWNjZXNzZnVsbHkuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxiYWNrczo6ZGlkRmFpbCgpIG11
c3QgYmUgY2FsbGVkIG90aGVyd2lzZS4KLSAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlRGlyZWN0b3J5
KGNvbnN0IFdlYlVSTCYgcGF0aCwgYm9vbCBleGNsdXNpdmUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgLy8gQ2hlY2tzIGlm
IGEgZmlsZSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNh
bGxiYWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBp
cyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6
OmRpZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGZp
bGVFeGlzdHMoY29uc3QgV2ViVVJMJiBwYXRoLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgeyBX
RUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KLQotICAgIC8vIENoZWNrcyBpZiBhIGRpcmVj
dG9yeSBleGlzdHMgYXQgYSBnaXZlbiB8cGF0aHwuCi0gICAgLy8gV2ViRmlsZVN5c3RlbUNhbGxi
YWNrczo6ZGlkU3VjY2VlZCgpIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIG9wZXJhdGlvbiBpcyBj
b21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LgotICAgIC8vIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M6OmRp
ZEZhaWwoKSBtdXN0IGJlIGNhbGxlZCBvdGhlcndpc2UuCi0gICAgdmlydHVhbCB2b2lkIGRpcmVj
dG9yeUV4aXN0cyhjb25zdCBXZWJVUkwmIHBhdGgsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKSB7
IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotCi0gICAgLy8gUmVhZHMgZGlyZWN0b3J5
IGVudHJpZXMgb2YgYSBnaXZlbiBkaXJlY3RvcnkgYXQgfHBhdGh8LgotICAgIC8vIFdlYkZpbGVT
eXN0ZW1DYWxsYmFja3M6OmRpZFJlYWREaXJlY3RvcnkoKSBtdXN0IGJlIGNhbGxlZCB3aGVuIHRo
ZSBvcGVyYXRpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4KLSAgICAvLyBXZWJGaWxlU3lz
dGVtQ2FsbGJhY2tzOjpkaWRGYWlsKCkgbXVzdCBiZSBjYWxsZWQgb3RoZXJ3aXNlLgotICAgIHZp
cnR1YWwgdm9pZCByZWFkRGlyZWN0b3J5KGNvbnN0IFdlYlVSTCYgcGF0aCwgV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcyopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0KLSAgICAvLyBD
cmVhdGVzIGEgV2ViRmlsZVdyaXRlciB0aGF0IGNhbiBiZSB1c2VkIHRvIHdyaXRlIHRvIHRoZSBn
aXZlbiBmaWxlLgotICAgIC8vIFRoaXMgaXMgYSBmYXN0LCBzeW5jaHJvbm91cyBjYWxsLCBhbmQg
c2hvdWxkIG5vdCBzdGF0IHRoZSBmaWxlc3lzdGVtLgotICAgIHZpcnR1YWwgV2ViRmlsZVdyaXRl
ciogY3JlYXRlRmlsZVdyaXRlcihjb25zdCBXZWJVUkwmIHBhdGgsIFdlYkZpbGVXcml0ZXJDbGll
bnQqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDA7IH0KLQotcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgfldlYkZpbGVTeXN0ZW0oKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0K
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJGaWxlU3lzdGVtLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UXVhZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZsb2F0UXVhZC5oCShyZXZpc2lvbiAxMDEx
MjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGbG9hdFF1YWQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsOCArMzIsOSBAQAogI2RlZmluZSBXZWJGbG9hdFF1YWRfaAogCiAj
aW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIldlYlJlY3QuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCisK
ICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8Y21hdGg+CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb250LmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OCArMzEsOCBAQAogI2lmbmRlZiBXZWJGb250X2gKICNkZWZpbmUgV2ViRm9udF9oCiAKLSNpbmNs
dWRlICJXZWJDYW52YXMuaCIKLSNpbmNsdWRlICJXZWJDb2xvci5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNhbnZhcy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbG9yLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCShyZXZpc2lvbiAxMDExMjIpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMiArMzEsMTIgQEAKICNpZm5kZWYgV2ViRnJhbWVfaAogI2RlZmluZSBXZWJGcmFt
ZV9oCiAKLSNpbmNsdWRlICJXZWJDYW52YXMuaCIKLSNpbmNsdWRlICJXZWJGaWxlU3lzdGVtLmgi
CiAjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKICNpbmNsdWRl
ICJXZWJSZWZlcnJlclBvbGljeS5oIgogI2luY2x1ZGUgIldlYlVSTExvYWRlck9wdGlvbnMuaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDYW52YXMuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJG
aWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCiAKIHN0cnVjdCBOUE9i
amVjdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVD
bGllbnQuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2lm
bmRlZiBXZWJGcmFtZUNsaWVudF9oCiAjZGVmaW5lIFdlYkZyYW1lQ2xpZW50X2gKIAotI2luY2x1
ZGUgIldlYkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAi
V2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCkBA
IC0zOSw2ICszOCw3IEBACiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUg
IldlYlVSTEVycm9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oIgogCiAjaWYgV0VCS0lUX1VTSU5HX1Y4CiAjaW5j
bHVkZSA8djguaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xv
Y2F0aW9uQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdlb2xvY2F0aW9uQ29udHJvbGxlci5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBXZWJHZW9sb2NhdGlvbkNv
bnRyb2xsZXJfaAogI2RlZmluZSBXZWJHZW9sb2NhdGlvbkNvbnRyb2xsZXJfaAogCi0jaW5jbHVk
ZSAiV2ViTm9uQ29weWFibGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
IGNsYXNzIEdlb2xvY2F0aW9uQ29udHJvbGxlcjsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJfaAogI2RlZmluZSBXZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlcl9oCiAKLSNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0v
V2ViUHJpdmF0ZU93blB0ci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAko
cmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMzY3ICsyOCw2IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViR3JhcGhpY3NDb250ZXh0M0RfaAotI2RlZmluZSBX
ZWJHcmFwaGljc0NvbnRleHQzRF9oCi0KLSNpbmNsdWRlICJXZWJOb25Db3B5YWJsZS5oIgotI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgotCi0jZGVmaW5lIFVTRV9XR0MzRF9UWVBFUwotCi0jaWYgV0VCS0lUX1VTSU5HX1NLSUEK
LXN0cnVjdCBHckdMSW50ZXJmYWNlOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0v
LyBXR0MzRCB0eXBlcyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBHTCB0eXBlcyBhcyBkZWZpbmVk
IGluIE9wZW5HTCBFUyAyLjAKLS8vIGhlYWRlciBmaWxlIGdsMi5oIGZyb20ga2hyb25vcy5vcmcu
Ci10eXBlZGVmIGNoYXIgV0dDM0RjaGFyOwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgV0dDM0RlbnVt
OwotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIFdHQzNEYm9vbGVhbjsKLXR5cGVkZWYgdW5zaWduZWQg
aW50IFdHQzNEYml0ZmllbGQ7Ci10eXBlZGVmIHNpZ25lZCBjaGFyIFdHQzNEYnl0ZTsKLXR5cGVk
ZWYgdW5zaWduZWQgY2hhciBXR0MzRHVieXRlOwotdHlwZWRlZiBzaG9ydCBXR0MzRHNob3J0Owot
dHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBXR0MzRHVzaG9ydDsKLXR5cGVkZWYgaW50IFdHQzNEaW50
OwotdHlwZWRlZiBpbnQgV0dDM0RzaXplaTsKLXR5cGVkZWYgdW5zaWduZWQgaW50IFdHQzNEdWlu
dDsKLXR5cGVkZWYgZmxvYXQgV0dDM0RmbG9hdDsKLXR5cGVkZWYgZmxvYXQgV0dDM0RjbGFtcGY7
Ci10eXBlZGVmIHNpZ25lZCBsb25nIGludCBXR0MzRGludHB0cjsKLXR5cGVkZWYgc2lnbmVkIGxv
bmcgaW50IFdHQzNEc2l6ZWlwdHI7Ci0KLS8vIFR5cGVkZWYgZm9yIHNlcnZlci1zaWRlIG9iamVj
dHMgbGlrZSBPcGVuR0wgdGV4dHVyZXMgYW5kIHByb2dyYW0gb2JqZWN0cy4KLXR5cGVkZWYgV0dD
M0R1aW50IFdlYkdMSWQ7Ci0KLWNsYXNzIFdlYlZpZXc7Ci0KLS8vIFRoaXMgaW50ZXJmYWNlIGFi
c3RyYWN0cyB0aGUgb3BlcmF0aW9ucyBwZXJmb3JtZWQgYnkgdGhlCi0vLyBHcmFwaGljc0NvbnRl
eHQzRCBpbiBvcmRlciB0byBpbXBsZW1lbnQgV2ViR0wuIE5lYXJseSBhbGwgb2YgdGhlCi0vLyBt
ZXRob2RzIGV4cG9zZWQgb24gdGhpcyBpbnRlcmZhY2UgbWFwIGRpcmVjdGx5IHRvIGVudHJ5IHBv
aW50cyBpbgotLy8gdGhlIE9wZW5HTCBFUyAyLjAgQVBJLgotLy8KLS8vIENyZWF0aW5nIGEgV2Vi
R3JhcGhpY3NDb250ZXh0IGRvZXMgbm90IG1ha2UgaXQgY3VycmVudCwgb3IgZ3VhcmFudGVlCi0v
LyB0aGF0IHRoZSBjb250ZXh0IGhhcyBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LiBVc2UKLS8v
IG1ha2VDb250ZXh0Q3VycmVudCgpIHRvIGNvbXBsZXRlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBj
b250ZXh0LCB0cmVhdGluZwotLy8gYSBmYWxzZSByZXR1cm4gdmFsdWUgYXMgaW5kaWNhdGlvbiB0
aGF0IHRoZSBjb250ZXh0IGNvdWxkIG5vdCBiZSBjcmVhdGVkCi0vLyBzdWNjZXNzZnVsbHkuCi1j
bGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRCA6IHB1YmxpYyBXZWJOb25Db3B5YWJsZSB7Ci1wdWJs
aWM6Ci0gICAgLy8gUmV0dXJuIHZhbHVlIGZyb20gZ2V0QWN0aXZlVW5pZm9ybSBhbmQgZ2V0QWN0
aXZlQXR0cmliLgotICAgIHN0cnVjdCBBY3RpdmVJbmZvIHsKLSAgICAgICAgV2ViU3RyaW5nIG5h
bWU7Ci0gICAgICAgIFdHQzNEZW51bSB0eXBlOwotICAgICAgICBXR0MzRGludCBzaXplOwotICAg
IH07Ci0KLSAgICAvLyBDb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMuCi0gICAgc3RydWN0IEF0
dHJpYnV0ZXMgewotICAgICAgICBBdHRyaWJ1dGVzKCkKLSAgICAgICAgICAgIDogYWxwaGEodHJ1
ZSkKLSAgICAgICAgICAgICwgZGVwdGgodHJ1ZSkKLSAgICAgICAgICAgICwgc3RlbmNpbCh0cnVl
KQotICAgICAgICAgICAgLCBhbnRpYWxpYXModHJ1ZSkKLSAgICAgICAgICAgICwgcHJlbXVsdGlw
bGllZEFscGhhKHRydWUpCi0gICAgICAgICAgICAsIGNhblJlY292ZXJGcm9tQ29udGV4dExvc3Mo
dHJ1ZSkKLSAgICAgICAgICAgICwgbm9FeHRlbnNpb25zKGZhbHNlKQotICAgICAgICAgICAgLCBz
aGFyZVJlc291cmNlcyh0cnVlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IGFscGhhOwotICAgICAgICBib29sIGRlcHRoOwotICAgICAgICBib29sIHN0ZW5jaWw7Ci0gICAg
ICAgIGJvb2wgYW50aWFsaWFzOwotICAgICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYTsKLSAg
ICAgICAgYm9vbCBjYW5SZWNvdmVyRnJvbUNvbnRleHRMb3NzOwotICAgICAgICBib29sIG5vRXh0
ZW5zaW9uczsKLSAgICAgICAgYm9vbCBzaGFyZVJlc291cmNlczsKLSAgICB9OwotCi0gICAgY2xh
c3MgV2ViR3JhcGhpY3NDb250ZXh0TG9zdENhbGxiYWNrIHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBvbkNvbnRleHRMb3N0KCkgPSAwOwotICAgICAgICB2aXJ0dWFsIH5XZWJH
cmFwaGljc0NvbnRleHRMb3N0Q2FsbGJhY2soKSB7IH0KLSAgICB9OwotCi0gICAgY2xhc3MgV2Vi
R3JhcGhpY3NTd2FwQnVmZmVyc0NvbXBsZXRlQ2FsbGJhY2tDSFJPTUlVTSB7Ci0gICAgcHVibGlj
OgotICAgICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlKCkgPSAwOwotICAg
ICAgICB2aXJ0dWFsIH5XZWJHcmFwaGljc1N3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFja0NIUk9N
SVVNKCkgeyB9Ci0gICAgfTsKLQotICAgIC8vIFRoaXMgZGVzdHJ1Y3RvciBuZWVkcyB0byBiZSBw
dWJsaWMgc28gdGhhdCB1c2luZyBjbGFzc2VzIGNhbiBkZXN0cm95IGluc3RhbmNlcyBpZiBpbml0
aWFsaXphdGlvbiBmYWlscy4KLSAgICB2aXJ0dWFsIH5XZWJHcmFwaGljc0NvbnRleHQzRCgpIHt9
Ci0KLSAgICAvLyBJbml0aWFsaXplcyB0aGUgZ3JhcGhpY3MgY29udGV4dDsgc2hvdWxkIGJlIHRo
ZSBmaXJzdCBvcGVyYXRpb24gcGVyZm9ybWVkCi0gICAgLy8gb24gbmV3bHktY29uc3RydWN0ZWQg
aW5zdGFuY2VzLiBSZXR1cm5zIHRydWUgb24gc3VjY2Vzcy4KLSAgICB2aXJ0dWFsIGJvb2wgaW5p
dGlhbGl6ZShBdHRyaWJ1dGVzLCBXZWJWaWV3KiwgYm9vbCByZW5kZXJEaXJlY3RseVRvV2ViVmll
dykgPSAwOwotCi0gICAgLy8gTWFrZXMgdGhlIE9wZW5HTCBjb250ZXh0IGN1cnJlbnQgb24gdGhl
IGN1cnJlbnQgdGhyZWFkLiBSZXR1cm5zIHRydWUgb24KLSAgICAvLyBzdWNjZXNzLgotICAgIHZp
cnR1YWwgYm9vbCBtYWtlQ29udGV4dEN1cnJlbnQoKSA9IDA7Ci0KLSAgICAvLyBUaGUgc2l6ZSBv
ZiB0aGUgcmVnaW9uIGludG8gd2hpY2ggdGhpcyBXZWJHcmFwaGljc0NvbnRleHQzRCBpcyByZW5k
ZXJpbmcuCi0gICAgLy8gUmV0dXJucyB0aGUgbGFzdCB2YWx1ZXMgcGFzc2VkIHRvIHJlc2hhcGUo
KS4KLSAgICB2aXJ0dWFsIGludCB3aWR0aCgpID0gMDsKLSAgICB2aXJ0dWFsIGludCBoZWlnaHQo
KSA9IDA7Ci0KLSAgICAvLyBSZXNpemVzIHRoZSByZWdpb24gaW50byB3aGljaCB0aGlzIFdlYkdy
YXBoaWNzQ29udGV4dDNEIGlzIGRyYXdpbmcuCi0gICAgdmlydHVhbCB2b2lkIHJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KSA9IDA7Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9zZXRWaXNpYmls
aXR5IC0gQ2hhbmdlcyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgYmFja2J1ZmZlcgotICAgIHZpcnR1
YWwgdm9pZCBzZXRWaXNpYmlsaXR5Q0hST01JVU0oYm9vbCB2aXNpYmxlKSA9IDA7Ci0KLSAgICAv
LyBRdWVyeSB3aGV0aGVyIGl0IGlzIGJ1aWx0IG9uIHRvcCBvZiBjb21wbGlhbnQgR0xFUzIgaW1w
bGVtZW50YXRpb24uCi0gICAgdmlydHVhbCBib29sIGlzR0xFUzJDb21wbGlhbnQoKSA9IDA7Ci0K
LSAgICB2aXJ0dWFsIGJvb2wgc2V0UGFyZW50Q29udGV4dChXZWJHcmFwaGljc0NvbnRleHQzRCog
cGFyZW50Q29udGV4dCkgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIC8vIEhlbHBlciBmb3Igc29m
dHdhcmUgY29tcG9zaXRpbmcgcGF0aC4gUmVhZHMgYmFjayB0aGUgZnJhbWUgYnVmZmVyIGludG8K
LSAgICAvLyB0aGUgbWVtb3J5IHJlZ2lvbiBwb2ludGVkIHRvIGJ5ICJwaXhlbHMiIHdpdGggc2l6
ZSAiYnVmZmVyU2l6ZSIuIEl0IGlzCi0gICAgLy8gZXhwZWN0ZWQgdGhhdCB0aGUgc3RvcmFnZSBm
b3IgInBpeGVscyIgY292ZXJzICg0ICogd2lkdGggKiBoZWlnaHQpIGJ5dGVzLgotICAgIC8vIFJl
dHVybnMgdHJ1ZSBvbiBzdWNjZXNzLgotICAgIHZpcnR1YWwgYm9vbCByZWFkQmFja0ZyYW1lYnVm
ZmVyKHVuc2lnbmVkIGNoYXIqIHBpeGVscywgc2l6ZV90IGJ1ZmZlclNpemUsIFdlYkdMSWQgZnJh
bWVidWZmZXIsIGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwotCi0gICAgLy8gUmV0dXJucyB0
aGUgaWQgb2YgdGhlIHRleHR1cmUgd2hpY2ggaXMgdXNlZCBmb3Igc3RvcmluZyB0aGUgY29udGVu
dHMgb2YKLSAgICAvLyB0aGUgZnJhbWVidWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29udGV4
dC4gVGhpcyB0ZXh0dXJlIGlzIGFjY2Vzc2libGUKLSAgICAvLyBieSB0aGUgZ3B1LWJhc2VkIHBh
Z2UgY29tcG9zaXRvci4KLSAgICB2aXJ0dWFsIFdlYkdMSWQgZ2V0UGxhdGZvcm1UZXh0dXJlSWQo
KSA9IDA7Ci0KLSAgICAvLyBDb3BpZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBvZmYtc2NyZWVuIHJl
bmRlciB0YXJnZXQgdXNlZCBieSB0aGUgV2ViR0wKLSAgICAvLyBjb250ZXh0IHRvIHRoZSBjb3Jy
ZXNwb25kaW5nIHRleHR1cmUgdXNlZCBieSB0aGUgY29tcG9zaXRvci4KLSAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRleHR1cmUoKSA9IDA7Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9wb3N0X3N1Yl9i
dWZmZXIgLSBDb3BpZXMgcGFydCBvZiB0aGUgYmFjayBidWZmZXIgdG8gdGhlIGZyb250IGJ1ZmZl
ci4KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFN1YkJ1ZmZlckNIUk9NSVVNKGludCB4LCBpbnQgeSwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KSA9IDA7Ci0KLSAgICAvLyBTeW50aGVzaXplcyBhbiBPcGVu
R0wgZXJyb3Igd2hpY2ggd2lsbCBiZSByZXR1cm5lZCBmcm9tIGEKLSAgICAvLyBsYXRlciBjYWxs
IHRvIGdldEVycm9yLiBUaGlzIGlzIHVzZWQgdG8gZW11bGF0ZSBPcGVuR0wgRVMKLSAgICAvLyAy
LjAgYmVoYXZpb3Igb24gdGhlIGRlc2t0b3AgYW5kIHRvIGVuZm9yY2UgYWRkaXRpb25hbCBlcnJv
cgotICAgIC8vIGNoZWNraW5nIG1hbmRhdGVkIGJ5IFdlYkdMLgotICAgIC8vCi0gICAgLy8gUGVy
IHRoZSBiZWhhdmlvciBvZiBnbEdldEVycm9yLCB0aGlzIHN0b3JlcyBhdCBtb3N0IG9uZQotICAg
IC8vIGluc3RhbmNlIG9mIGFueSBnaXZlbiBlcnJvciwgYW5kIHJldHVybnMgdGhlbSBmcm9tIGNh
bGxzIHRvCi0gICAgLy8gZ2V0RXJyb3IgaW4gdGhlIG9yZGVyIHRoZXkgd2VyZSBhZGRlZC4KLSAg
ICB2aXJ0dWFsIHZvaWQgc3ludGhlc2l6ZUdMRXJyb3IoV0dDM0RlbnVtKSA9IDA7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNDb250ZXh0TG9zdCgpID0gMDsKLQotICAgIC8vIEdMX0NIUk9NSVVNX21h
cF9zdWIKLSAgICB2aXJ0dWFsIHZvaWQqIG1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlVTShXR0MzRGVu
dW0gdGFyZ2V0LCBXR0MzRGludHB0ciBvZmZzZXQsIFdHQzNEc2l6ZWlwdHIgc2l6ZSwgV0dDM0Rl
bnVtIGFjY2VzcykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bm1hcEJ1ZmZlclN1YkRhdGFDSFJP
TUlVTShjb25zdCB2b2lkKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCogbWFwVGV4U3ViSW1hZ2Uy
RENIUk9NSVVNKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBXR0MzRGludCB4b2Zm
c2V0LCBXR0MzRGludCB5b2Zmc2V0LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVpIGhlaWdo
dCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIFdHQzNEZW51bSBhY2Nlc3MpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5tYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0oY29uc3Qgdm9p
ZCopID0gMDsKLQotICAgIC8vIEdMX0NIUk9NSVVNX3JlcXVlc3RfZXh0ZW5zaW9uCi0gICAgdmly
dHVhbCBXZWJTdHJpbmcgZ2V0UmVxdWVzdGFibGVFeHRlbnNpb25zQ0hST01JVU0oKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RFeHRlbnNpb25DSFJPTUlVTShjb25zdCBjaGFyKikgPSAw
OwotCi0gICAgLy8gR0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUKLSAgICB2aXJ0
dWFsIHZvaWQgYmxpdEZyYW1lYnVmZmVyQ0hST01JVU0oV0dDM0RpbnQgc3JjWDAsIFdHQzNEaW50
IHNyY1kwLCBXR0MzRGludCBzcmNYMSwgV0dDM0RpbnQgc3JjWTEsIFdHQzNEaW50IGRzdFgwLCBX
R0MzRGludCBkc3RZMCwgV0dDM0RpbnQgZHN0WDEsIFdHQzNEaW50IGRzdFkxLCBXR0MzRGJpdGZp
ZWxkIG1hc2ssIFdHQzNEZW51bSBmaWx0ZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
YnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQ0hST01JVU0oV0dDM0RlbnVtIHRhcmdldCwgV0dDM0Rz
aXplaSBzYW1wbGVzLCBXR0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEc2l6ZWkgd2lkdGgs
IFdHQzNEc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9zd2FwYnVmZmVy
c19jb21wbGV0ZV9jYWxsYmFjawotICAgIHZpcnR1YWwgdm9pZCBzZXRTd2FwQnVmZmVyc0NvbXBs
ZXRlQ2FsbGJhY2tDSFJPTUlVTShXZWJHcmFwaGljc1N3YXBCdWZmZXJzQ29tcGxldGVDYWxsYmFj
a0NIUk9NSVVNKiBjYWxsYmFjaykgeyB9Ci0KLSAgICAvLyBHTF9DSFJPTUlVTV9yYXRlX2xpbWl0
X29mZnNjcmVlbl9jb250ZXh0Ci0gICAgdmlydHVhbCB2b2lkIHJhdGVMaW1pdE9mZnNjcmVlbkNv
bnRleHRDSFJPTUlVTSgpIHsgfQotCi0gICAgLy8gVGhlIGVudHJ5IHBvaW50cyBiZWxvdyBtYXAg
ZGlyZWN0bHkgdG8gdGhlIE9wZW5HTCBFUyAyLjAgQVBJLgotICAgIC8vIFNlZTogaHR0cDovL3d3
dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzLwotICAgIC8vIGFuZDogaHR0cDovL3d3dy5raHJv
bm9zLm9yZy9vcGVuZ2xlcy9zZGsvZG9jcy9tYW4vCi0gICAgdmlydHVhbCB2b2lkIGFjdGl2ZVRl
eHR1cmUoV0dDM0RlbnVtIHRleHR1cmUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoU2hh
ZGVyKFdlYkdMSWQgcHJvZ3JhbSwgV2ViR0xJZCBzaGFkZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgYmluZEF0dHJpYkxvY2F0aW9uKFdlYkdMSWQgcHJvZ3JhbSwgV0dDM0R1aW50IGluZGV4LCBj
b25zdCBXR0MzRGNoYXIqIG5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYmluZEJ1ZmZlcihX
R0MzRGVudW0gdGFyZ2V0LCBXZWJHTElkIGJ1ZmZlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBi
aW5kRnJhbWVidWZmZXIoV0dDM0RlbnVtIHRhcmdldCwgV2ViR0xJZCBmcmFtZWJ1ZmZlcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKFdHQzNEZW51bSB0YXJnZXQsIFdl
YkdMSWQgcmVuZGVyYnVmZmVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJpbmRUZXh0dXJlKFdH
QzNEZW51bSB0YXJnZXQsIFdlYkdMSWQgdGV4dHVyZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBi
bGVuZENvbG9yKFdHQzNEY2xhbXBmIHJlZCwgV0dDM0RjbGFtcGYgZ3JlZW4sIFdHQzNEY2xhbXBm
IGJsdWUsIFdHQzNEY2xhbXBmIGFscGhhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJsZW5kRXF1
YXRpb24oV0dDM0RlbnVtIG1vZGUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYmxlbmRFcXVhdGlv
blNlcGFyYXRlKFdHQzNEZW51bSBtb2RlUkdCLCBXR0MzRGVudW0gbW9kZUFscGhhKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGJsZW5kRnVuYyhXR0MzRGVudW0gc2ZhY3RvciwgV0dDM0RlbnVtIGRm
YWN0b3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYmxlbmRGdW5jU2VwYXJhdGUoV0dDM0RlbnVt
IHNyY1JHQiwgV0dDM0RlbnVtIGRzdFJHQiwgV0dDM0RlbnVtIHNyY0FscGhhLCBXR0MzRGVudW0g
ZHN0QWxwaGEpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBidWZmZXJEYXRhKFdHQzNEZW51bSB0
YXJnZXQsIFdHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgV0dDM0RlbnVtIHVz
YWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJ1ZmZlclN1YkRhdGEoV0dDM0RlbnVtIHRhcmdl
dCwgV0dDM0RpbnRwdHIgb2Zmc2V0LCBXR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRh
dGEpID0gMDsKLQotICAgIHZpcnR1YWwgV0dDM0RlbnVtIGNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
V0dDM0RlbnVtIHRhcmdldCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhcihXR0MzRGJpdGZp
ZWxkIG1hc2spID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb2xvcihXR0MzRGNsYW1wZiBy
ZWQsIFdHQzNEY2xhbXBmIGdyZWVuLCBXR0MzRGNsYW1wZiBibHVlLCBXR0MzRGNsYW1wZiBhbHBo
YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhckRlcHRoKFdHQzNEY2xhbXBmIGRlcHRoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyU3RlbmNpbChXR0MzRGludCBzKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGNvbG9yTWFzayhXR0MzRGJvb2xlYW4gcmVkLCBXR0MzRGJvb2xlYW4gZ3Jl
ZW4sIFdHQzNEYm9vbGVhbiBibHVlLCBXR0MzRGJvb2xlYW4gYWxwaGEpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY29tcGlsZVNoYWRlcihXZWJHTElkIHNoYWRlcikgPSAwOwotCi0gICAgdmlydHVh
bCB2b2lkIGNvcHlUZXhJbWFnZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEaW50IGxldmVsLCBX
R0MzRGVudW0gaW50ZXJuYWxmb3JtYXQsIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6
ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGludCBib3JkZXIpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgY29weVRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RpbnQg
bGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdHQzNEaW50IHgsIFdH
QzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGN1bGxGYWNlKFdHQzNEZW51bSBtb2RlKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRlcHRoRnVuYyhXR0MzRGVudW0gZnVuYykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZXB0
aE1hc2soV0dDM0Rib29sZWFuIGZsYWcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVwdGhSYW5n
ZShXR0MzRGNsYW1wZiB6TmVhciwgV0dDM0RjbGFtcGYgekZhcikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkZXRhY2hTaGFkZXIoV2ViR0xJZCBwcm9ncmFtLCBXZWJHTElkIHNoYWRlcikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKFdHQzNEZW51bSBjYXApID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KFdHQzNEdWludCBpbmRleCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkcmF3QXJyYXlzKFdHQzNEZW51bSBtb2RlLCBXR0MzRGludCBmaXJzdCwg
V0dDM0RzaXplaSBjb3VudCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxlbWVudHMoV0dD
M0RlbnVtIG1vZGUsIFdHQzNEc2l6ZWkgY291bnQsIFdHQzNEZW51bSB0eXBlLCBXR0MzRGludHB0
ciBvZmZzZXQpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoV0dDM0RlbnVtIGNhcCkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShXR0MzRHVpbnQg
aW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZmluaXNoKCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBmbHVzaCgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIGF0dGFjaG1lbnQsIFdHQzNEZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQsIFdlYkdMSWQgcmVuZGVyYnVmZmVyKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBhdHRh
Y2htZW50LCBXR0MzRGVudW0gdGV4dGFyZ2V0LCBXZWJHTElkIHRleHR1cmUsIFdHQzNEaW50IGxl
dmVsKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZyb250RmFjZShXR0MzRGVudW0gbW9kZSkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZU1pcG1hcChXR0MzRGVudW0gdGFyZ2V0KSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgZ2V0QWN0aXZlQXR0cmliKFdlYkdMSWQgcHJvZ3JhbSwgV0dD
M0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBnZXRBY3Rp
dmVVbmlmb3JtKFdlYkdMSWQgcHJvZ3JhbSwgV0dDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoV2ViR0xJZCBwcm9ncmFt
LCBXR0MzRHNpemVpIG1heENvdW50LCBXR0MzRHNpemVpKiBjb3VudCwgV2ViR0xJZCogc2hhZGVy
cykgPSAwOwotICAgIHZpcnR1YWwgV0dDM0RpbnQgZ2V0QXR0cmliTG9jYXRpb24oV2ViR0xJZCBw
cm9ncmFtLCBjb25zdCBXR0MzRGNoYXIqIG5hbWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
Qm9vbGVhbnYoV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGJvb2xlYW4qIHZhbHVlKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGdldEJ1ZmZlclBhcmFtZXRlcml2KFdHQzNEZW51bSB0YXJnZXQsIFdHQzNE
ZW51bSBwbmFtZSwgV0dDM0RpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmlydHVhbCBBdHRyaWJ1dGVz
IGdldENvbnRleHRBdHRyaWJ1dGVzKCkgPSAwOwotICAgIHZpcnR1YWwgV0dDM0RlbnVtIGdldEVy
cm9yKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG9hdHYoV0dDM0RlbnVtIHBuYW1lLCBX
R0MzRGZsb2F0KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdihXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGVudW0gYXR0YWNobWVu
dCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0SW50ZWdlcnYoV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCogdmFsdWUpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ2V0UHJvZ3JhbWl2KFdlYkdMSWQgcHJvZ3JhbSwgV0dDM0RlbnVtIHBu
YW1lLCBXR0MzRGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRQcm9n
cmFtSW5mb0xvZyhXZWJHTElkIHByb2dyYW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXYoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIHBuYW1lLCBX
R0MzRGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2hhZGVyaXYoV2ViR0xJ
ZCBzaGFkZXIsIFdHQzNEZW51bSBwbmFtZSwgV0dDM0RpbnQqIHZhbHVlKSA9IDA7Ci0gICAgdmly
dHVhbCBXZWJTdHJpbmcgZ2V0U2hhZGVySW5mb0xvZyhXZWJHTElkIHNoYWRlcikgPSAwOwotCi0g
ICAgLy8gVEJECi0gICAgLy8gdm9pZCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCAoR0xlbnVt
IHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCogcmFuZ2UsIEdMaW50KiBw
cmVjaXNpb24pOwotCi0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0U2hhZGVyU291cmNlKFdlYkdM
SWQgc2hhZGVyKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0U3RyaW5nKFdHQzNEZW51
bSBuYW1lKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFRleFBhcmFtZXRlcmZ2KFdHQzNEZW51
bSB0YXJnZXQsIFdHQzNEZW51bSBwbmFtZSwgV0dDM0RmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0VGV4UGFyYW1ldGVyaXYoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVt
IHBuYW1lLCBXR0MzRGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0VW5pZm9y
bWZ2KFdlYkdMSWQgcHJvZ3JhbSwgV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEZmxvYXQqIHZhbHVl
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdldFVuaWZvcm1pdihXZWJHTElkIHByb2dyYW0sIFdH
QzNEaW50IGxvY2F0aW9uLCBXR0MzRGludCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIFdHQzNE
aW50IGdldFVuaWZvcm1Mb2NhdGlvbihXZWJHTElkIHByb2dyYW0sIGNvbnN0IFdHQzNEY2hhciog
bmFtZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihXR0MzRHVpbnQg
aW5kZXgsIFdHQzNEZW51bSBwbmFtZSwgV0dDM0RmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0VmVydGV4QXR0cmliaXYoV0dDM0R1aW50IGluZGV4LCBXR0MzRGVudW0gcG5h
bWUsIFdHQzNEaW50KiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgV0dDM0RzaXplaXB0ciBnZXRW
ZXJ0ZXhBdHRyaWJPZmZzZXQoV0dDM0R1aW50IGluZGV4LCBXR0MzRGVudW0gcG5hbWUpID0gMDsK
LQotICAgIHZpcnR1YWwgdm9pZCBoaW50KFdHQzNEZW51bSB0YXJnZXQsIFdHQzNEZW51bSBtb2Rl
KSA9IDA7Ci0gICAgdmlydHVhbCBXR0MzRGJvb2xlYW4gaXNCdWZmZXIoV2ViR0xJZCBidWZmZXIp
ID0gMDsKLSAgICB2aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc0VuYWJsZWQoV0dDM0RlbnVtIGNhcCkg
PSAwOwotICAgIHZpcnR1YWwgV0dDM0Rib29sZWFuIGlzRnJhbWVidWZmZXIoV2ViR0xJZCBmcmFt
ZWJ1ZmZlcikgPSAwOwotICAgIHZpcnR1YWwgV0dDM0Rib29sZWFuIGlzUHJvZ3JhbShXZWJHTElk
IHByb2dyYW0pID0gMDsKLSAgICB2aXJ0dWFsIFdHQzNEYm9vbGVhbiBpc1JlbmRlcmJ1ZmZlcihX
ZWJHTElkIHJlbmRlcmJ1ZmZlcikgPSAwOwotICAgIHZpcnR1YWwgV0dDM0Rib29sZWFuIGlzU2hh
ZGVyKFdlYkdMSWQgc2hhZGVyKSA9IDA7Ci0gICAgdmlydHVhbCBXR0MzRGJvb2xlYW4gaXNUZXh0
dXJlKFdlYkdMSWQgdGV4dHVyZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsaW5lV2lkdGgoV0dD
M0RmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBsaW5rUHJvZ3JhbShXZWJHTElkIHByb2dy
YW0pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGl4ZWxTdG9yZWkoV0dDM0RlbnVtIHBuYW1lLCBX
R0MzRGludCBwYXJhbSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb2x5Z29uT2Zmc2V0KFdHQzNE
ZmxvYXQgZmFjdG9yLCBXR0MzRGZsb2F0IHVuaXRzKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
cmVhZFBpeGVscyhXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBXR0Mz
RHNpemVpIGhlaWdodCwgV0dDM0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIHZvaWQqIHBp
eGVscykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHJlbGVhc2VTaGFkZXJDb21waWxlcigpID0g
MDsKLQotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlKFdHQzNEZW51bSB0YXJn
ZXQsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwgV0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXpl
aSBoZWlnaHQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2FtcGxlQ292ZXJhZ2UoV0dDM0RjbGFt
cGYgdmFsdWUsIFdHQzNEYm9vbGVhbiBpbnZlcnQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2Np
c3NvcihXR0MzRGludCB4LCBXR0MzRGludCB5LCBXR0MzRHNpemVpIHdpZHRoLCBXR0MzRHNpemVp
IGhlaWdodCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzaGFkZXJTb3VyY2UoV2ViR0xJZCBzaGFk
ZXIsIGNvbnN0IFdHQzNEY2hhciogc3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZW5j
aWxGdW5jKFdHQzNEZW51bSBmdW5jLCBXR0MzRGludCByZWYsIFdHQzNEdWludCBtYXNrKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxGdW5jU2VwYXJhdGUoV0dDM0RlbnVtIGZhY2UsIFdH
QzNEZW51bSBmdW5jLCBXR0MzRGludCByZWYsIFdHQzNEdWludCBtYXNrKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHN0ZW5jaWxNYXNrKFdHQzNEdWludCBtYXNrKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHN0ZW5jaWxNYXNrU2VwYXJhdGUoV0dDM0RlbnVtIGZhY2UsIFdHQzNEdWludCBtYXNrKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxPcChXR0MzRGVudW0gZmFpbCwgV0dDM0RlbnVt
IHpmYWlsLCBXR0MzRGVudW0genBhc3MpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc3RlbmNpbE9w
U2VwYXJhdGUoV0dDM0RlbnVtIGZhY2UsIFdHQzNEZW51bSBmYWlsLCBXR0MzRGVudW0gemZhaWws
IFdHQzNEZW51bSB6cGFzcykgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlMkQoV0dD
M0RlbnVtIHRhcmdldCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEZW51bSBpbnRlcm5hbGZvcm1hdCwg
V0dDM0RzaXplaSB3aWR0aCwgV0dDM0RzaXplaSBoZWlnaHQsIFdHQzNEaW50IGJvcmRlciwgV0dD
M0RlbnVtIGZvcm1hdCwgV0dDM0RlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgPSAwOwot
Ci0gICAgdmlydHVhbCB2b2lkIHRleFBhcmFtZXRlcmYoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0Rl
bnVtIHBuYW1lLCBXR0MzRGZsb2F0IHBhcmFtKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHRleFBh
cmFtZXRlcmkoV0dDM0RlbnVtIHRhcmdldCwgV0dDM0RlbnVtIHBuYW1lLCBXR0MzRGludCBwYXJh
bSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHRleFN1YkltYWdlMkQoV0dDM0RlbnVtIHRhcmdl
dCwgV0dDM0RpbnQgbGV2ZWwsIFdHQzNEaW50IHhvZmZzZXQsIFdHQzNEaW50IHlvZmZzZXQsIFdH
QzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0LCBXR0MzRGVudW0gZm9ybWF0LCBXR0Mz
RGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
dW5pZm9ybTFmKFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRGZsb2F0IHgpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdW5pZm9ybTFmdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwg
Y29uc3QgV0dDM0RmbG9hdCogdikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMWkoV0dD
M0RpbnQgbG9jYXRpb24sIFdHQzNEaW50IHgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9y
bTFpdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwgY29uc3QgV0dDM0RpbnQq
IHYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTJmKFdHQzNEaW50IGxvY2F0aW9uLCBX
R0MzRGZsb2F0IHgsIFdHQzNEZmxvYXQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3Jt
MmZ2KFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRHNpemVpIGNvdW50LCBjb25zdCBXR0MzRGZsb2F0
KiB2KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVuaWZvcm0yaShXR0MzRGludCBsb2NhdGlvbiwg
V0dDM0RpbnQgeCwgV0dDM0RpbnQgeSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtMml2
KFdHQzNEaW50IGxvY2F0aW9uLCBXR0MzRHNpemVpIGNvdW50LCBjb25zdCBXR0MzRGludCogdikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2YoV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNE
ZmxvYXQgeCwgV0dDM0RmbG9hdCB5LCBXR0MzRGZsb2F0IHopID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTNmdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwgY29uc3Qg
V0dDM0RmbG9hdCogdikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtM2koV0dDM0RpbnQg
bG9jYXRpb24sIFdHQzNEaW50IHgsIFdHQzNEaW50IHksIFdHQzNEaW50IHopID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgdW5pZm9ybTNpdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3Vu
dCwgY29uc3QgV0dDM0RpbnQqIHYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmKFdH
QzNEaW50IGxvY2F0aW9uLCBXR0MzRGZsb2F0IHgsIFdHQzNEZmxvYXQgeSwgV0dDM0RmbG9hdCB6
LCBXR0MzRGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybTRmdihXR0MzRGlu
dCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwgY29uc3QgV0dDM0RmbG9hdCogdikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCB1bmlmb3JtNGkoV0dDM0RpbnQgbG9jYXRpb24sIFdHQzNEaW50IHgs
IFdHQzNEaW50IHksIFdHQzNEaW50IHosIFdHQzNEaW50IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybTRpdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwgY29uc3Qg
V0dDM0RpbnQqIHYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihXR0Mz
RGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwgV0dDM0Rib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgV0dDM0RmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdW5pZm9ybU1h
dHJpeDNmdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwgV0dDM0Rib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgV0dDM0RmbG9hdCogdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgdW5pZm9ybU1hdHJpeDRmdihXR0MzRGludCBsb2NhdGlvbiwgV0dDM0RzaXplaSBjb3VudCwg
V0dDM0Rib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgV0dDM0RmbG9hdCogdmFsdWUpID0gMDsKLQot
ICAgIHZpcnR1YWwgdm9pZCB1c2VQcm9ncmFtKFdlYkdMSWQgcHJvZ3JhbSkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB2YWxpZGF0ZVByb2dyYW0oV2ViR0xJZCBwcm9ncmFtKSA9IDA7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWYoV0dDM0R1aW50IGluZGV4LCBXR0MzRGZsb2F0IHgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMWZ2KFdHQzNEdWludCBpbmRleCwg
Y29uc3QgV0dDM0RmbG9hdCogdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0
dHJpYjJmKFdHQzNEdWludCBpbmRleCwgV0dDM0RmbG9hdCB4LCBXR0MzRGZsb2F0IHkpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0cmliMmZ2KFdHQzNEdWludCBpbmRleCwgY29uc3Qg
V0dDM0RmbG9hdCogdmFsdWVzKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYjNm
KFdHQzNEdWludCBpbmRleCwgV0dDM0RmbG9hdCB4LCBXR0MzRGZsb2F0IHksIFdHQzNEZmxvYXQg
eikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB2ZXJ0ZXhBdHRyaWIzZnYoV0dDM0R1aW50IGluZGV4
LCBjb25zdCBXR0MzRGZsb2F0KiB2YWx1ZXMpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4
QXR0cmliNGYoV0dDM0R1aW50IGluZGV4LCBXR0MzRGZsb2F0IHgsIFdHQzNEZmxvYXQgeSwgV0dD
M0RmbG9hdCB6LCBXR0MzRGZsb2F0IHcpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdmVydGV4QXR0
cmliNGZ2KFdHQzNEdWludCBpbmRleCwgY29uc3QgV0dDM0RmbG9hdCogdmFsdWVzKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYlBvaW50ZXIoV0dDM0R1aW50IGluZGV4LCBXR0Mz
RGludCBzaXplLCBXR0MzRGVudW0gdHlwZSwgV0dDM0Rib29sZWFuIG5vcm1hbGl6ZWQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0dDM0RzaXplaSBzdHJpZGUsIFdHQzNE
aW50cHRyIG9mZnNldCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHZpZXdwb3J0KFdHQzNEaW50
IHgsIFdHQzNEaW50IHksIFdHQzNEc2l6ZWkgd2lkdGgsIFdHQzNEc2l6ZWkgaGVpZ2h0KSA9IDA7
Ci0KLSAgICAvLyBTdXBwb3J0IGZvciBidWZmZXIgY3JlYXRpb24gYW5kIGRlbGV0aW9uLgotICAg
IHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVCdWZmZXIoKSA9IDA7Ci0gICAgdmlydHVhbCBXZWJHTElk
IGNyZWF0ZUZyYW1lYnVmZmVyKCkgPSAwOwotICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVQcm9n
cmFtKCkgPSAwOwotICAgIHZpcnR1YWwgV2ViR0xJZCBjcmVhdGVSZW5kZXJidWZmZXIoKSA9IDA7
Ci0gICAgdmlydHVhbCBXZWJHTElkIGNyZWF0ZVNoYWRlcihXR0MzRGVudW0pID0gMDsKLSAgICB2
aXJ0dWFsIFdlYkdMSWQgY3JlYXRlVGV4dHVyZSgpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVCdWZmZXIoV2ViR0xJZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVGcmFtZWJ1
ZmZlcihXZWJHTElkKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZVByb2dyYW0oV2ViR0xJ
ZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoV2ViR0xJZCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVTaGFkZXIoV2ViR0xJZCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVUZXh0dXJlKFdlYkdMSWQpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZXh0TG9zdENhbGxiYWNrKFdlYkdyYXBoaWNzQ29udGV4dExvc3RDYWxsYmFjayogY2Fs
bGJhY2spIHt9Ci0gICAgLy8gR0xfQVJCX3JvYnVzdG5lc3MKLSAgICAvLwotICAgIC8vIFRoaXMg
ZW50cnkgcG9pbnQgbXVzdCBwcm92aWRlIHNsaWdodGx5IGRpZmZlcmVudCBzZW1hbnRpY3MgdGhh
bgotICAgIC8vIHRoZSBHTF9BUkJfcm9idXN0bmVzcyBleHRlbnNpb247IHNwZWNpZmljYWxseSwg
dGhlIGxvc3QgY29udGV4dAotICAgIC8vIHN0YXRlIGlzIHN0aWNreSwgcmF0aGVyIHRoYW4gcmVw
b3J0ZWQgb25seSBvbmNlLgotICAgIHZpcnR1YWwgV0dDM0RlbnVtIGdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKSB7IHJldHVybiAwOyAvKiBHTF9OT19FUlJPUiAqLyB9Ci0KLSAgICAvLyBGSVhN
RTogbWFrZSB0aGlzIGZ1bmN0aW9uIHB1cmUgdmlydHVhbCBvbmNlIGl0IGlzIGltcGxlbWVudGVk
IGluCi0gICAgLy8gYm90aCBjb21tYW5kIGJ1ZmZlciBwb3J0IGFuZCBpbi1wcm9jZXNzIHBvcnQu
Ci0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xFKFdl
YkdMSWQgc2hhZGVyKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQotCi0gICAgLy8gR0xfQ0hST01J
VU1faW9zdXJmYWNlCi0gICAgdmlydHVhbCB2b2lkIHRleEltYWdlSU9TdXJmYWNlMkRDSFJPTUlV
TShXR0MzRGVudW0gdGFyZ2V0LCBXR0MzRGludCB3aWR0aCwgV0dDM0RpbnQgaGVpZ2h0LCBXR0Mz
RHVpbnQgaW9TdXJmYWNlSWQsIFdHQzNEdWludCBwbGFuZSkgeyB9Ci0KLSNpZiBXRUJLSVRfVVNJ
TkdfU0tJQQotICAgIEdyR0xJbnRlcmZhY2UqIGNyZWF0ZUdyR0xJbnRlcmZhY2UoKTsKLSNlbmRp
ZgotCi1wcm90ZWN0ZWQ6Ci0jaWYgV0VCS0lUX1VTSU5HX1NLSUEKLSAgICB2aXJ0dWFsIEdyR0xJ
bnRlcmZhY2UqIG9uQ3JlYXRlR3JHTEludGVyZmFjZSgpIHsgcmV0dXJuIDA7IH0KLSNlbmRpZgot
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9I
RUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0
M0QuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSFRU
UEJvZHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJI
VFRQQm9keS5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJIVFRQQm9keS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSw4IEBACiAjaWZu
ZGVmIFdlYkhUVFBCb2R5X2gKICNkZWZpbmUgV2ViSFRUUEJvZHlfaAogCi0jaW5jbHVkZSAiV2Vi
Tm9uQ29weWFibGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEYXRhLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcu
aCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwuaCIKIApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw5OSArMjgs
NiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkltYWdlX2gKLSNkZWZpbmUg
V2ViSW1hZ2VfaAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0KLSNpZiBXRUJL
SVRfVVNJTkdfU0tJQQotI2luY2x1ZGUgPFNrQml0bWFwLmg+Ci0jZWxpZiBXRUJLSVRfVVNJTkdf
Q0cKLXR5cGVkZWYgc3RydWN0IENHSW1hZ2UqIENHSW1hZ2VSZWY7Ci0jZW5kaWYKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBJbWFnZTsgfQot
bmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYkRhdGE7Ci1zdHJ1Y3Qg
V2ViU2l6ZTsKLQotLy8gQSBjb250YWluZXIgZm9yIGFuIEFSR0IgYml0bWFwLgotY2xhc3MgV2Vi
SW1hZ2UgewotcHVibGljOgotICAgIH5XZWJJbWFnZSgpIHsgcmVzZXQoKTsgfQotCi0gICAgV2Vi
SW1hZ2UoKSB7IGluaXQoKTsgfQotICAgIFdlYkltYWdlKGNvbnN0IFdlYkltYWdlJiBpbWFnZSkK
LSAgICB7Ci0gICAgICAgIGluaXQoKTsKLSAgICAgICAgYXNzaWduKGltYWdlKTsKLSAgICB9Ci0K
LSAgICBXZWJJbWFnZSYgb3BlcmF0b3I9KGNvbnN0IFdlYkltYWdlJiBpbWFnZSkKLSAgICB7Ci0g
ICAgICAgIGFzc2lnbihpbWFnZSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAg
ICAvLyBEZWNvZGVzIHRoZSBnaXZlbiBpbWFnZSBkYXRhLiAgSWYgdGhlIGltYWdlIGhhcyBtdWx0
aXBsZSBmcmFtZXMsCi0gICAgLy8gdGhlbiB0aGUgZnJhbWUgd2hvc2Ugc2l6ZSBpcyBkZXNpcmVk
U2l6ZSBpcyByZXR1cm5lZC4gIE90aGVyd2lzZSwKLSAgICAvLyB0aGUgZmlyc3QgZnJhbWUgaXMg
cmV0dXJuZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViSW1hZ2UgZnJvbURhdGEoY29u
c3QgV2ViRGF0YSYsIGNvbnN0IFdlYlNpemUmIGRlc2lyZWRTaXplKTsKLQotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3Qg
V2ViSW1hZ2UmKTsKLQotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBpc051bGwoKSBjb25zdDsKLSAg
ICBXRUJLSVRfRVhQT1JUIFdlYlNpemUgc2l6ZSgpIGNvbnN0OwotCi0jaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCi0gICAgV2ViSW1hZ2UoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Oklt
YWdlPiYpOwotICAgIFdlYkltYWdlJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OkltYWdlPiYpOwotI2VuZGlmCi0KLSNpZiBXRUJLSVRfVVNJTkdfU0tJQQotICAgIFdl
YkltYWdlKGNvbnN0IFNrQml0bWFwJiBiaXRtYXApIDogbV9iaXRtYXAoYml0bWFwKSB7IH0KLQot
ICAgIFdlYkltYWdlJiBvcGVyYXRvcj0oY29uc3QgU2tCaXRtYXAmIGJpdG1hcCkKLSAgICB7Ci0g
ICAgICAgIG1fYml0bWFwID0gYml0bWFwOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
Ci0gICAgU2tCaXRtYXAmIGdldFNrQml0bWFwKCkgeyByZXR1cm4gbV9iaXRtYXA7IH0KLSAgICBj
b25zdCBTa0JpdG1hcCYgZ2V0U2tCaXRtYXAoKSBjb25zdCB7IHJldHVybiBtX2JpdG1hcDsgfQot
Ci1wcml2YXRlOgotICAgIHZvaWQgaW5pdCgpIHsgfQotICAgIFNrQml0bWFwIG1fYml0bWFwOwot
Ci0jZWxpZiBXRUJLSVRfVVNJTkdfQ0cKLSAgICBXZWJJbWFnZShDR0ltYWdlUmVmIGltYWdlUmVm
KQotICAgIHsKLSAgICAgICAgaW5pdCgpOwotICAgICAgICBhc3NpZ24oaW1hZ2VSZWYpOwotICAg
IH0KLQotICAgIFdlYkltYWdlJiBvcGVyYXRvcj0oQ0dJbWFnZVJlZiBpbWFnZVJlZikKLSAgICB7
Ci0gICAgICAgIGFzc2lnbihpbWFnZVJlZik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSAgICBDR0ltYWdlUmVmIGdldENHSW1hZ2VSZWYoKSBjb25zdCB7IHJldHVybiBtX2ltYWdl
UmVmOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBpbml0KCkgeyBtX2ltYWdlUmVmID0gMDsgfQot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oQ0dJbWFnZVJlZik7Ci0gICAgQ0dJbWFnZVJl
ZiBtX2ltYWdlUmVmOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lm
bmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZv
cm0vV2ViSW1hZ2UuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW1hZ2VEZWNvZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkltYWdlRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw5ICszMSw5IEBACiAjaWZuZGVmIFdlYkltYWdlRGVjb2Rlcl9oCiAjZGVmaW5lIFdlYklt
YWdlRGVjb2Rlcl9oCiAKLSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJJbWFn
ZS5oIgotI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSW1hZ2UuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJOb25Db3B5YWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEltYWdl
RGVjb2RlcjsgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVy
LmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgV2ViTGF5
ZXJfaAogI2RlZmluZSBXZWJMYXllcl9oCiAKLSNpbmNsdWRlICJXZWJDb2xvci5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNvbG9yLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgi
CiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUHJpdmF0ZVB0ci5oIgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgJKHJldmlzaW9uIDEwMTEy
MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDggQEAKICNpZm5kZWYgV2ViTWVkaWFQbGF5ZXJfaAog
I2RlZmluZSBXZWJNZWRpYVBsYXllcl9oCiAKLSNpbmNsdWRlICJXZWJDYW52YXMuaCIKICNpbmNs
dWRlICJXZWJWaWRlb0ZyYW1lLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ2FudmFzLmgiCiAj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yLDY2ICsyLDMyIEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogog
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3JfaAotI2RlZmluZSBXZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3JfaAotCi0jaW5jbHVkZSAiV2ViTm9uQ29weWFibGUuaCIKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQcml2YXRlUHRyLmgiCi0jaW5j
bHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNz
IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKLX0KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFdlYk1lZGlhU3RyZWFtU291cmNlOwotY2xhc3MgV2ViU3RyaW5nOwotCi1jbGFzcyBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3IgewotcHVibGljOgotICAgIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
cigpIHsgfQotICAgIH5XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoKSB7IHJlc2V0KCk7IH0KLQot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbml0aWFsaXplKGNvbnN0IFdlYlN0cmluZyYgbGFiZWws
IGNvbnN0IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgcmVzZXQoKTsKLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJp
dmF0ZS5pc051bGwoKTsgfQotCi0gICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbGFiZWwoKSBj
b25zdDsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFT
dHJlYW1Tb3VyY2U+JikgY29uc3Q7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yPigpIGNvbnN0OwotICAgIG9wZXJhdG9yIFdlYkNv
cmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvciooKSBjb25zdDsKLSAgICBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3ImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFT
dHJlYW1EZXNjcmlwdG9yPiYpOworI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BM
QVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCiAj
ZW5kaWYKLQotcHJpdmF0ZToKLSAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6Ok1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4gbV9wcml2YXRlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3JfaApJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCShyZXZpc2lv
biAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVh
bVNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSw4IEBACiAjaWZuZGVmIFdlYk1l
ZGlhU3RyZWFtU291cmNlX2gKICNkZWZpbmUgV2ViTWVkaWFTdHJlYW1Tb3VyY2VfaAogCi0jaW5j
bHVkZSAiV2ViTm9uQ29weWFibGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIK
KyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJOb25Db3B5YWJsZS5oIgogI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlByaXZhdGVQdHIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWltZVJlZ2lzdHJ5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWltZVJlZ2lzdHJ5LmgJKHJldmlzaW9uIDEw
MTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0yOCwzNSArMjgsNiBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIFdlYk1pbWVSZWdpc3RyeV9oCi0jZGVmaW5lIFdlYk1pbWVSZWdpc3RyeV9oCi0KLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNs
YXNzIFdlYlN0cmluZzsKLQotY2xhc3MgV2ViTWltZVJlZ2lzdHJ5IHsKLXB1YmxpYzoKLSAgICBl
bnVtIFN1cHBvcnRzVHlwZSB7IElzTm90U3VwcG9ydGVkLCBJc1N1cHBvcnRlZCwgTWF5QmVTdXBw
b3J0ZWQgfTsKLQotICAgIHZpcnR1YWwgU3VwcG9ydHNUeXBlIHN1cHBvcnRzTUlNRVR5cGUoY29u
c3QgV2ViU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwotICAgIHZpcnR1YWwgU3VwcG9ydHNUeXBlIHN1
cHBvcnRzSW1hZ2VNSU1FVHlwZShjb25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKSA9IDA7Ci0gICAg
dmlydHVhbCBTdXBwb3J0c1R5cGUgc3VwcG9ydHNKYXZhU2NyaXB0TUlNRVR5cGUoY29uc3QgV2Vi
U3RyaW5nJiBtaW1lVHlwZSkgPSAwOwotICAgIHZpcnR1YWwgU3VwcG9ydHNUeXBlIHN1cHBvcnRz
TWVkaWFNSU1FVHlwZShjb25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGNvZGVjcykg
PSAwOwotICAgIHZpcnR1YWwgU3VwcG9ydHNUeXBlIHN1cHBvcnRzTm9uSW1hZ2VNSU1FVHlwZShj
b25zdCBXZWJTdHJpbmcmIG1pbWVUeXBlKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBt
aW1lVHlwZUZvckV4dGVuc2lvbihjb25zdCBXZWJTdHJpbmcmIGZpbGVFeHRlbnNpb24pID0gMDsK
LSAgICB2aXJ0dWFsIFdlYlN0cmluZyB3ZWxsS25vd25NaW1lVHlwZUZvckV4dGVuc2lvbihjb25z
dCBXZWJTdHJpbmcmIGZpbGVFeHRlbnNpb24pID0gMDsKLSAgICB2aXJ0dWFsIFdlYlN0cmluZyBt
aW1lVHlwZUZyb21GaWxlKGNvbnN0IFdlYlN0cmluZyYgZmlsZVBhdGgpID0gMDsKLSAgICB2aXJ0
dWFsIFdlYlN0cmluZyBwcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBXZWJTdHJp
bmcmIG1pbWVUeXBlKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB+V2ViTWltZVJlZ2lzdHJ5KCkg
eyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFU
RV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWltZVJlZ2lzdHJ5
LmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vbkNv
cHlhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Tm9uQ29weWFibGUuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTm9uQ29weWFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMjIgKzI4LDYgQEAK
ICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJOb25Db3B5YWJsZV9oCi0jZGVmaW5l
IFdlYk5vbkNvcHlhYmxlX2gKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLS8vIEEgYmFzZSBjbGFz
cyB0byBleHRlbmQgZnJvbSBpZiB5b3UgZG8gbm90IHN1cHBvcnQgY29weWluZy4KLWNsYXNzIFdl
Yk5vbkNvcHlhYmxlIHsKLXByb3RlY3RlZDoKLSAgICBXZWJOb25Db3B5YWJsZSgpIHsgfQotICAg
IH5XZWJOb25Db3B5YWJsZSgpIHsgfQotCi1wcml2YXRlOgotICAgIFdlYk5vbkNvcHlhYmxlKGNv
bnN0IFdlYk5vbkNvcHlhYmxlJik7Ci0gICAgV2ViTm9uQ29weWFibGUmIG9wZXJhdG9yPShjb25z
dCBXZWJOb25Db3B5YWJsZSYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5k
ZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYk5vbkNvcHlhYmxlLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oCShyZXZpc2lv
biAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQZWVyQ29ubmVj
dGlvbkhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMiw2MyArMiwzMiBAQAogICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKICAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVy
X2gKLSNkZWZpbmUgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyX2gKLQotI2luY2x1ZGUgIldlYlNl
Y3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I7Ci1jbGFzcyBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJD
bGllbnQ7Ci0KLS8vIE5vdGU6Ci0vLyBTRFAgc3RhbmRzIGZvciBTZXNzaW9uIERlc2NyaXB0aW9u
IFByb3RvY29sLCB3aGljaCBpcyBpbnRlbmRlZCBmb3IgZGVzY3JpYmluZwotLy8gbXVsdGltZWRp
YSBzZXNzaW9ucyBmb3IgdGhlIHB1cnBvc2VzIG9mIHNlc3Npb24gYW5ub3VuY2VtZW50LCBzZXNz
aW9uCi0vLyBpbnZpdGF0aW9uLCBhbmQgb3RoZXIgZm9ybXMgb2YgbXVsdGltZWRpYSBzZXNzaW9u
IGluaXRpYXRpb24uCi0vLwotLy8gTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaGVyZToK
LS8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQ1NjYKLS8vIGh0dHA6Ly9lbi53aWtp
cGVkaWEub3JnL3dpa2kvU2Vzc2lvbl9EZXNjcmlwdGlvbl9Qcm90b2NvbAotCi0KLWNsYXNzIFdl
YlBlZXJDb25uZWN0aW9uSGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+V2ViUGVlckNv
bm5lY3Rpb25IYW5kbGVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25z
dCBXZWJTdHJpbmcmIHNlcnZlckNvbmZpZ3VyYXRpb24sIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHByb2R1Y2VJbml0aWFsT2ZmZXIoY29uc3QgV2Vi
VmVjdG9yPFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcj4mIHBlbmRpbmdBZGRTdHJlYW1zKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUluaXRpYWxPZmZlcihjb25zdCBXZWJTdHJpbmcmIHNk
cCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzU0RQKGNvbnN0IFdlYlN0cmluZyYgc2Rw
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByb2Nlc3NQZW5kaW5nU3RyZWFtcyhjb25zdCBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yPiYgcGVuZGluZ0FkZFN0cmVhbXMsIGNvbnN0
IFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I+JiBwZW5kaW5nUmVtb3ZlU3RyZWFt
cykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZW5kRGF0YVN0cmVhbU1lc3NhZ2UoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSA9
IDA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYlBlZXJDb25u
ZWN0aW9uSGFuZGxlcl9oCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZP
Uk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaCIKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGVlckNvbm5lY3Rpb25I
YW5kbGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50LmgJKHJldmlzaW9uIDEwMTEyMikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yLDQ1ICsyLDMyIEBACiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgogICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRf
aAotI2RlZmluZSBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnRfaAotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOwotY2xhc3MgV2ViU3Ry
aW5nOwotCi1jbGFzcyBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQgewotcHVibGljOgot
ICAgIHZpcnR1YWwgfldlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudCgpIHsgfQotCi0gICAg
dmlydHVhbCB2b2lkIGRpZENvbXBsZXRlSUNFUHJvY2Vzc2luZygpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkR2VuZXJhdGVTRFAoY29uc3QgV2ViU3RyaW5nJiBzZHApID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGFTdHJlYW1NZXNzYWdlKGNvbnN0IGNoYXIqIGRhdGEsIHNp
emVfdCBsZW5ndGgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQWRkUmVtb3RlU3RyZWFtKGNv
bnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlUmVtb3RlU3RyZWFtKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpID0gMDsK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViUGVlckNvbm5lY3Rp
b25IYW5kbGVyQ2xpZW50X2gKKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVSU19UT19QTEFU
Rk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5o
IgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW4u
aAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
UGx1Z2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgV2ViUGx1
Z2luX2gKICNkZWZpbmUgV2ViUGx1Z2luX2gKIAotI2luY2x1ZGUgIldlYkNhbnZhcy5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYkNhbnZhcy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTC5oIgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDg0ICsy
OCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViUG9pbnRfaAotI2RlZmlu
ZSBXZWJQb2ludF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotI2lmIFdF
QktJVF9JTVBMRU1FTlRBVElPTgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jZWxzZQotI2luY2x1
ZGUgPHVpL2dmeC9wb2ludC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1
Y3QgV2ViUG9pbnQgewotICAgIGludCB4OwotICAgIGludCB5OwotCi0gICAgV2ViUG9pbnQoKQot
ICAgICAgICA6IHgoMCkKLSAgICAgICAgLCB5KDApCi0gICAgewotICAgIH0KLQotICAgIFdlYlBv
aW50KGludCB4LCBpbnQgeSkKLSAgICAgICAgOiB4KHgpCi0gICAgICAgICwgeSh5KQotICAgIHsK
LSAgICB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcCkKLSAgICAgICAgOiB4KHAueCgpKQotICAgICAgICAsIHkocC55
KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYlBvaW50JiBvcGVyYXRvcj0oY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHApCi0gICAgewotICAgICAgICB4ID0gcC54KCk7Ci0gICAgICAgIHkgPSBw
LnkoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFdlYkNv
cmU6OkludFBvaW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbnRQ
b2ludCh4LCB5KTsKLSAgICB9Ci0jZWxzZQotICAgIFdlYlBvaW50KGNvbnN0IGdmeDo6UG9pbnQm
IHApCi0gICAgICAgIDogeChwLngoKSkKLSAgICAgICAgLCB5KHAueSgpKQotICAgIHsKLSAgICB9
Ci0KLSAgICBXZWJQb2ludCYgb3BlcmF0b3I9KGNvbnN0IGdmeDo6UG9pbnQmIHApCi0gICAgewot
ICAgICAgICB4ID0gcC54KCk7Ci0gICAgICAgIHkgPSBwLnkoKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGdmeDo6UG9pbnQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGdmeDo6UG9pbnQoeCwgeSk7Ci0gICAgfQotI2VuZGlmCi19OwotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlBvaW50JiBhLCBjb25zdCBXZWJQb2ludCYgYikK
LXsKLSAgICByZXR1cm4gYS54ID09IGIueCAmJiBhLnkgPT0gYi55OwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFdlYlBvaW50JiBhLCBjb25zdCBXZWJQb2ludCYgYikKLXsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQorI2lmbmRl
ZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViUG9pbnQuaCIKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViUmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlJlY3QuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCwxMDAgKzI4LDYgQEAKICAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotI2lmbmRlZiBXZWJSZWN0X2gKLSNkZWZpbmUgV2ViUmVjdF9oCi0KLSNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgot
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNlbHNlCi0jaW5jbHVkZSA8dWkvZ2Z4L3JlY3QuaD4KLSNl
bmRpZgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotc3RydWN0IFdlYlJlY3QgewotICAgIGludCB4
OwotICAgIGludCB5OwotICAgIGludCB3aWR0aDsKLSAgICBpbnQgaGVpZ2h0OwotCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gd2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMDsgfQot
Ci0gICAgV2ViUmVjdCgpCi0gICAgICAgIDogeCgwKQotICAgICAgICAsIHkoMCkKLSAgICAgICAg
LCB3aWR0aCgwKQotICAgICAgICAsIGhlaWdodCgwKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJS
ZWN0KGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotICAgICAgICA6IHgoeCkK
LSAgICAgICAgLCB5KHkpCi0gICAgICAgICwgd2lkdGgod2lkdGgpCi0gICAgICAgICwgaGVpZ2h0
KGhlaWdodCkKLSAgICB7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAg
V2ViUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByKQotICAgICAgICA6IHgoci54KCkpCi0g
ICAgICAgICwgeShyLnkoKSkKLSAgICAgICAgLCB3aWR0aChyLndpZHRoKCkpCi0gICAgICAgICwg
aGVpZ2h0KHIuaGVpZ2h0KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYlJlY3QmIG9wZXJhdG9y
PShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByKQotICAgIHsKLSAgICAgICAgeCA9IHIueCgpOwot
ICAgICAgICB5ID0gci55KCk7Ci0gICAgICAgIHdpZHRoID0gci53aWR0aCgpOwotICAgICAgICBo
ZWlnaHQgPSByLmhlaWdodCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAg
b3BlcmF0b3IgV2ViQ29yZTo6SW50UmVjdCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6SW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci0jZWxzZQotICAg
IFdlYlJlY3QoY29uc3QgZ2Z4OjpSZWN0JiByKQotICAgICAgICA6IHgoci54KCkpCi0gICAgICAg
ICwgeShyLnkoKSkKLSAgICAgICAgLCB3aWR0aChyLndpZHRoKCkpCi0gICAgICAgICwgaGVpZ2h0
KHIuaGVpZ2h0KCkpCi0gICAgewotICAgIH0KLQotICAgIFdlYlJlY3QmIG9wZXJhdG9yPShjb25z
dCBnZng6OlJlY3QmIHIpCi0gICAgewotICAgICAgICB4ID0gci54KCk7Ci0gICAgICAgIHkgPSBy
LnkoKTsKLSAgICAgICAgd2lkdGggPSByLndpZHRoKCk7Ci0gICAgICAgIGhlaWdodCA9IHIuaGVp
Z2h0KCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBnZng6
OlJlY3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGdmeDo6UmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKLSAgICB9Ci0jZW5kaWYKLX07Ci0KLWlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgV2ViUmVjdCYgYSwgY29uc3QgV2ViUmVjdCYgYikKLXsKLSAgICByZXR1cm4gYS54ID09
IGIueCAmJiBhLnkgPT0gYi55ICYmIGEud2lkdGggPT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBi
LmhlaWdodDsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJSZWN0JiBhLCBj
b25zdCBXZWJSZWN0JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZP
Uk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJSZWN0LmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlZ3VsYXJFeHByZXNzaW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVndWxhckV4cHJlc3Npb24uaAko
cmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUmVn
dWxhckV4cHJlc3Npb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2lmbmRl
ZiBXZWJSZWd1bGFyRXhwcmVzc2lvbl9oCiAjZGVmaW5lIFdlYlJlZ3VsYXJFeHByZXNzaW9uX2gK
IAotI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENhc2VTZW5z
aXRpdml0eS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYk5vbkNvcHlhYmxlLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2NyZWVuSW5mby5oCShyZXZpc2lv
biAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JlZW5JbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgV2ViU2NyZWVuSW5m
b19oCiAjZGVmaW5lIFdlYlNjcmVlbkluZm9faAogCi0jaW5jbHVkZSAiV2ViUmVjdC5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dlYlJlY3QuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhci5oCShyZXZpc2lv
biAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJTY3JvbGxiYXJf
aAogI2RlZmluZSBXZWJTY3JvbGxiYXJfaAogCi0jaW5jbHVkZSAiV2ViQ2FudmFzLmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViQ2FudmFzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2l6ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNpemUuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOCw4NiArMjgsNiBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYlNpemVfaAotI2RlZmluZSBXZWJTaXplX2gKLQot
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2Vsc2UKLSNpbmNsdWRlIDx1aS9nZngvc2l6ZS5o
PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViU2l6ZSB7Ci0gICAg
aW50IHdpZHRoOwotICAgIGludCBoZWlnaHQ7Ci0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwOyB9Ci0KLSAgICBXZWJTaXplKCkKLSAg
ICAgICAgOiB3aWR0aCgwKQotICAgICAgICAsIGhlaWdodCgwKQotICAgIHsKLSAgICB9Ci0KLSAg
ICBXZWJTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKLSAgICAgICAgOiB3aWR0aCh3aWR0aCkK
LSAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQotICAgIHsKLSAgICB9Ci0KLSNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KLSAgICBXZWJTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHMpCi0gICAg
ICAgIDogd2lkdGgocy53aWR0aCgpKQotICAgICAgICAsIGhlaWdodChzLmhlaWdodCgpKQotICAg
IHsKLSAgICB9Ci0KLSAgICBXZWJTaXplJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgcykKLSAgICB7Ci0gICAgICAgIHdpZHRoID0gcy53aWR0aCgpOwotICAgICAgICBoZWlnaHQg
PSBzLmhlaWdodCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgb3BlcmF0
b3IgV2ViQ29yZTo6SW50U2l6ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6SW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICB9Ci0jZWxzZQotICAgIFdlYlNpemUoY29u
c3QgZ2Z4OjpTaXplJiBzKQotICAgICAgICA6IHdpZHRoKHMud2lkdGgoKSkKLSAgICAgICAgLCBo
ZWlnaHQocy5oZWlnaHQoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgV2ViU2l6ZSYgb3BlcmF0b3I9
KGNvbnN0IGdmeDo6U2l6ZSYgcykKLSAgICB7Ci0gICAgICAgIHdpZHRoID0gcy53aWR0aCgpOwot
ICAgICAgICBoZWlnaHQgPSBzLmhlaWdodCgpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAg
fQotCi0gICAgb3BlcmF0b3IgZ2Z4OjpTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBnZng6OlNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAgfQotI2VuZGlmCi19OwotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYlNpemUmIGEsIGNvbnN0IFdlYlNpemUmIGIpCi17Ci0g
ICAgcmV0dXJuIGEud2lkdGggPT0gYi53aWR0aCAmJiBhLmhlaWdodCA9PSBiLmhlaWdodDsKLX0K
LQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBXZWJTaXplJiBhLCBjb25zdCBXZWJTaXpl
JiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dAotCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURFUlNfVE9fUExBVEZPUk0KKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJTaXplLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJyb3IuaAkocmV2aXNpb24gMTAx
MTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtRXJy
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtMjgsMTggKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotI2lmbmRlZiBXZWJTb2NrZXRTdHJlYW1FcnJvcl9oCi0jZGVmaW5lIFdlYlNvY2tldFN0cmVh
bUVycm9yX2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotY2xhc3MgV2ViU29ja2V0U3RyZWFtRXJyb3IgewotcHVibGljOgotICAgIC8v
IEZJWE1FOiBEZWZpbmUgU29ja2V0U3RyZWFtIEVycm9yIGNvZGVzIGFuZCBhY2Nlc3NvciBtZXRo
b2RzLgotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JB
VEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNvY2tldFN0cmVh
bUVycm9yLmgiCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNvY2tldFN0cmVhbUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMjgsMzEgKzI4LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRl
ZiBXZWJTb2NrZXRTdHJlYW1IYW5kbGVfaAotI2RlZmluZSBXZWJTb2NrZXRTdHJlYW1IYW5kbGVf
aAotCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi1jbGFzcyBXZWJEYXRhOwotY2xhc3MgV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Owot
Y2xhc3MgV2ViVVJMOwotCi1jbGFzcyBXZWJTb2NrZXRTdHJlYW1IYW5kbGUgewotcHVibGljOgot
ICAgIHZpcnR1YWwgfldlYlNvY2tldFN0cmVhbUhhbmRsZSgpIHsgfQotCi0gICAgLy8gQ29ubmVj
dCBuZXcgc29ja2V0IHN0cmVhbSBhc3luY2hyb25vdXNseS4KLSAgICB2aXJ0dWFsIHZvaWQgY29u
bmVjdChjb25zdCBXZWJVUkwmLCBXZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQqKSA9IDA7Ci0K
LSAgICAvLyBTZW5kIHdlYiBzb2NrZXQgZnJhbWUgZGF0YSBvbiB0aGUgc29ja2V0IHN0cmVhbS4K
LSAgICB2aXJ0dWFsIGJvb2wgc2VuZChjb25zdCBXZWJEYXRhJikgPSAwOwotCi0gICAgLy8gQ2xv
c2UgdGhlIHNvY2tldCBzdHJlYW0uCi0gICAgdmlydHVhbCB2b2lkIGNsb3NlKCkgPSAwOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lUX01JR1JBVEVfSEVBREVS
U19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5o
IgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRT
dHJlYW1IYW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAkocmV2aXNpb24gMTAxMTIyKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDM5ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLSNpZm5kZWYgV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50X2gKLSNkZWZpbmUgV2ViU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50X2gKLQotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5o
IgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRGF0YTsKLWNsYXNzIFdlYlNvY2tl
dFN0cmVhbUVycm9yOwotY2xhc3MgV2ViU29ja2V0U3RyZWFtSGFuZGxlOwotY2xhc3MgV2ViVVJM
OwotCi1jbGFzcyBXZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQgewotcHVibGljOgotCi0gICAg
Ly8gQ2FsbGVkIHdoZW4gU29ja2V0IFN0cmVhbSBpcyBvcGVuZWQuCi0gICAgdmlydHVhbCB2b2lk
IGRpZE9wZW5TdHJlYW0oV2ViU29ja2V0U3RyZWFtSGFuZGxlKiwgaW50IC8qIG1heFBlbmRpbmdT
ZW5kQWxsb3dlZCAqLykgPSAwOwotCi0gICAgLy8gQ2FsbGVkIHdoZW4gfGFtb3VudFNlbnR8IGJ5
dGVzIGFyZSBzZW50LgotICAgIHZpcnR1YWwgdm9pZCBkaWRTZW5kRGF0YShXZWJTb2NrZXRTdHJl
YW1IYW5kbGUqLCBpbnQgLyogYW1vdW50U2VudCAqLykgPSAwOwotCi0gICAgLy8gQ2FsbGVkIHdo
ZW4gZGF0YSBhcmUgcmVjZWl2ZWQuCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YlNvY2tldFN0cmVhbUhhbmRsZSosIGNvbnN0IFdlYkRhdGEmKSA9IDA7Ci0KLSAgICAvLyBDYWxs
ZWQgd2hlbiBTb2NrZXQgU3RyZWFtIGlzIGNsb3NlZC4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xv
c2UoV2ViU29ja2V0U3RyZWFtSGFuZGxlKikgPSAwOwotCi0gICAgLy8gQ2FsbGVkIHdoZW4gU29j
a2V0IFN0cmVhbSBoYXMgYW4gZXJyb3IuCi0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViU29j
a2V0U3RyZWFtSGFuZGxlKiwgY29uc3QgV2ViU29ja2V0U3RyZWFtRXJyb3ImKSA9IDA7Ci0KLSAg
ICAvLyBGSVhNRTogYXV0aCBjaGFsbGVuZ2UgZm9yIHByb3h5Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQorI2lmbmRlZiBXRUJLSVRfTUlHUkFURV9IRUFERVJTX1RPX1BMQVRGT1JNCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRocmVhZC5oCShyZXZpc2lv
biAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUaHJlYWQuaAko
d29ya2luZyBjb3B5KQpAQCAtMiw1MyArMiwzMiBAQAogICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CiAgKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCiAgKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0jaWZu
ZGVmIFdlYlRocmVhZF9oCi0jZGVmaW5lIFdlYlRocmVhZF9oCi0KLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLSNkZWZpbmUgV0VCVEhSRUFE
X0hBU19MT05HTE9OR19DSEFOR0UKLQotLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIGFuIGVt
YmVkZGVyLWRlZmluZWQgdGhyZWFkIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIERlbGV0aW5nIHRo
ZSB0aHJlYWQgYmxvY2tzIHVudGlsIGFsbCBwZW5kaW5nLCBub24tZGVsYXllZCB0YXNrcyBoYXZl
IGJlZW4KLS8vIHJ1bi4KLWNsYXNzIFdlYlRocmVhZCB7Ci1wdWJsaWM6Ci0gICAgY2xhc3MgVGFz
ayB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5UYXNrKCkgeyB9Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBydW4oKSA9IDA7Ci0gICAgfTsKLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFz
ayhUYXNrKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0RGVsYXllZFRhc2soVGFzayosIGxv
bmcgbG9uZyBkZWxheU1zKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIH5XZWJUaHJlYWQoKSB7IH0KLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAogCisjaWZuZGVmIFdFQktJVF9NSUdSQVRFX0hFQURF
UlNfVE9fUExBVEZPUk0KKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91Y2hQb2ludC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRvdWNoUG9pbnQuaAko
cmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVG91
Y2hQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYlRv
dWNoUG9pbnRfaAogI2RlZmluZSBXZWJUb3VjaFBvaW50X2gKIAotI2luY2x1ZGUgIldlYlBvaW50
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9pbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxMb2FkZXIuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKQEAgLTI4LDQ0ICsyOCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2Vi
VVJMTG9hZGVyX2gKLSNkZWZpbmUgV2ViVVJMTG9hZGVyX2gKLQotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViRGF0YTsKLWNs
YXNzIFdlYlVSTExvYWRlckNsaWVudDsKLWNsYXNzIFdlYlVSTFJlcXVlc3Q7Ci1jbGFzcyBXZWJV
UkxSZXNwb25zZTsKLXN0cnVjdCBXZWJVUkxFcnJvcjsKLQotY2xhc3MgV2ViVVJMTG9hZGVyIHsK
LXB1YmxpYzoKLSAgICAvLyBUaGUgV2ViVVJMTG9hZGVyIG1heSBiZSBkZWxldGVkIGluIGEgY2Fs
bCB0byBpdHMgY2xpZW50LgotICAgIHZpcnR1YWwgfldlYlVSTExvYWRlcigpIHt9Ci0KLSAgICAv
LyBMb2FkIHRoZSByZXF1ZXN0IHN5bmNocm9ub3VzbHksIHJldHVybmluZyByZXN1bHRzIGRpcmVj
dGx5IHRvIHRoZQotICAgIC8vIGNhbGxlciB1cG9uIGNvbXBsZXRpb24uICBUaGVyZSBpcyBubyBt
ZWNoYW5pc20gdG8gaW50ZXJydXB0IGEKLSAgICAvLyBzeW5jaHJvbm91cyBsb2FkISEKLSAgICB2
aXJ0dWFsIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoY29uc3QgV2ViVVJMUmVxdWVzdCYsCi0gICAg
ICAgIFdlYlVSTFJlc3BvbnNlJiwgV2ViVVJMRXJyb3ImLCBXZWJEYXRhJiBkYXRhKSA9IDA7Ci0K
LSAgICAvLyBMb2FkIHRoZSByZXF1ZXN0IGFzeW5jaHJvbm91c2x5LCBzZW5kaW5nIG5vdGlmaWNh
dGlvbnMgdG8gdGhlIGdpdmVuCi0gICAgLy8gY2xpZW50LiAgVGhlIGNsaWVudCB3aWxsIHJlY2Vp
dmUgbm8gZnVydGhlciBub3RpZmljYXRpb25zIGlmIHRoZQotICAgIC8vIGxvYWRlciBpcyBkaXNw
b3NlZCBiZWZvcmUgaXQgY29tcGxldGVzIGl0cyB3b3JrLgotICAgIHZpcnR1YWwgdm9pZCBsb2Fk
QXN5bmNocm9ub3VzbHkoY29uc3QgV2ViVVJMUmVxdWVzdCYsCi0gICAgICAgIFdlYlVSTExvYWRl
ckNsaWVudCopID0gMDsKLQotICAgIC8vIENhbmNlbHMgYW4gYXN5bmNocm9ub3VzIGxvYWQuICBU
aGlzIHdpbGwgYXBwZWFyIGFzIGEgbG9hZCBlcnJvciB0bwotICAgIC8vIHRoZSBjbGllbnQuCi0g
ICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKLQotICAgIC8vIFN1c3BlbmRzL3Jlc3VtZXMg
YW4gYXN5bmNocm9ub3VzIGxvYWQuCi0gICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmco
Ym9vbCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KKyNpZm5kZWYgV0VCS0lU
X01JR1JBVEVfSEVBREVSU19UT19QTEFURk9STQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVSTExv
YWRlci5oIgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJX
aWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJX
aWRnZXQuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwxMyBAQAogI2lmbmRl
ZiBXZWJXaWRnZXRfaAogI2RlZmluZSBXZWJXaWRnZXRfaAogCi0jaW5jbHVkZSAiV2ViQ2FudmFz
LmgiCiAjaW5jbHVkZSAiV2ViQ29tcG9zaXRpb25VbmRlcmxpbmUuaCIKLSNpbmNsdWRlICJXZWJS
ZWN0LmgiCi0jaW5jbHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlRleHRJbnB1dFR5cGUu
aCIKICNpbmNsdWRlICJXZWJUZXh0RGlyZWN0aW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
Q2FudmFzLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxh
dGZvcm0vV2ViUmVjdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKIAogI2RlZmlu
ZSBXRUJLSVRfSEFTX05FV19GVUxMU0NSRUVOX0FQSSAxCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldpZGdldENsaWVudC5oCShyZXZpc2lvbiAxMDExMjIp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXaWRnZXRDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogI2RlZmluZSBXZWJXaWRnZXRDbGllbnRfaAog
CiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgotI2luY2x1ZGUgIldlYlJlY3QuaCIK
ICNpbmNsdWRlICJXZWJTY3JlZW5JbmZvLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9u
LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViUmVjdC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94
U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2Fu
ZHJvaWQvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBwb3J0X2gKLSNkZWZp
bmUgV2ViU2FuZGJveFN1cHBvcnRfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gRW1wdHkg
Y2xhc3MsIGFzIHdlIG5lZWQgaXQgdG8gY29tcGlsZS4KLWNsYXNzIFdlYlNhbmRib3hTdXBwb3J0
IHsKLXB1YmxpYzoKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlRo
ZW1lRW5naW5lLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL2FuZHJvaWQvV2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0Ogot
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0g
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV2ViVGhlbWVFbmdpbmVfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZV9o
Ci0KLSNpbmNsdWRlICIuLi9XZWJDYW52YXMuaCIKLSNpbmNsdWRlICIuLi9XZWJDb2xvci5oIgot
I2luY2x1ZGUgIi4uL1dlYlNpemUuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBX
ZWJSZWN0OwotCi1jbGFzcyBXZWJUaGVtZUVuZ2luZSB7Ci1wdWJsaWM6Ci0gICAgLy8gVGhlIFVJ
IHBhcnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNzZWQuCi0gICAgZW51bSBQYXJ0IHsKLSAgICAgICAg
Ly8gU2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywK
LSAgICAgICAgUGFydFNjcm9sbGJhckxlZnRBcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclJp
Z2h0QXJyb3csCi0gICAgICAgIFBhcnRTY3JvbGxiYXJVcEFycm93LAotICAgICAgICBQYXJ0U2Ny
b2xsYmFySG9yaXpvbnRhbFRodW1iLAotICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVt
YiwKLSAgICAgICAgUGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjaywKLSAgICAgICAgUGFydFNj
cm9sbGJhclZlcnRpY2FsVHJhY2ssCi0KLSAgICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKLSAg
ICAgICAgUGFydENoZWNrYm94LAotICAgICAgICBQYXJ0UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0
b24sCi0gICAgICAgIFBhcnRUZXh0RmllbGQsCi0gICAgICAgIFBhcnRNZW51TGlzdCwKLSAgICAg
ICAgUGFydFNsaWRlclRyYWNrLAotICAgICAgICBQYXJ0U2xpZGVyVGh1bWIsCi0gICAgICAgIFBh
cnRJbm5lclNwaW5CdXR0b24sCi0gICAgICAgIFBhcnRQcm9ncmVzc0JhcgotICAgIH07Ci0KLSAg
ICAvLyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgYXNzb2NpYXRlZCBQYXJ0LgotICAgIGVudW0g
U3RhdGUgewotICAgICAgICBTdGF0ZURpc2FibGVkLAotICAgICAgICBTdGF0ZUhvdmVyLAotICAg
ICAgICBTdGF0ZU5vcm1hbCwKLSAgICAgICAgU3RhdGVQcmVzc2VkLAotICAgIH07Ci0KLSAgICAv
LyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBkcmF3aW5nIHRoZSBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRh
bFRyYWNrIGFuZAotICAgIC8vIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLgotICAgIHN0cnVj
dCBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHsKLSAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0
aGUgZW50aXJlIHRyYWNrLCBhcyBvcHBvc2VkIHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCi0g
ICAgICAgIGludCB0cmFja1g7Ci0gICAgICAgIGludCB0cmFja1k7Ci0gICAgICAgIGludCB0cmFj
a1dpZHRoOwotICAgICAgICBpbnQgdHJhY2tIZWlnaHQ7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJh
IHBhcmFtZXRlcnMgZm9yIFBhcnRDaGVja2JveCwgUGFydFB1c2hCdXR0b24gYW5kIFBhcnRSYWRp
by4KLSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGNoZWNrZWQ7
Ci0gICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRl
IGlzIGluZGV0ZXJtaW5hdGUuCi0gICAgICAgIGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRo
ZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24uCi0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAg
ICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBh
cmFtZXRlcnMgZm9yIFBhcnRUZXh0RmllbGQKLSAgICBzdHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJh
bXMgewotICAgICAgICBib29sIGlzVGV4dEFyZWE7Ci0gICAgICAgIGJvb2wgaXNMaXN0Ym94Owot
ICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJh
IHBhcmFtZXRlcnMgZm9yIFBhcnRNZW51TGlzdAotICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFy
YW1zIHsKLSAgICAgICAgYm9vbCBoYXNCb3JkZXI7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyUmFk
aXVzOwotICAgICAgICBpbnQgYXJyb3dYOwotICAgICAgICBpbnQgYXJyb3dZOwotICAgICAgICBX
ZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRl
cnMgZm9yIFBhcnRTbGlkZXJUcmFjayBhbmQgUGFydFNsaWRlclRodW1iCi0gICAgc3RydWN0IFNs
aWRlckV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBp
bkRyYWc7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRJbm5lclNw
aW5CdXR0b24KLSAgICBzdHJ1Y3QgSW5uZXJTcGluQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAg
ICBib29sIHNwaW5VcDsKLSAgICAgICAgYm9vbCByZWFkT25seTsKLSAgICB9OwotCi0gICAgLy8g
RXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFByb2dyZXNzQmFyCi0gICAgc3RydWN0IFByb2dyZXNz
QmFyRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGRldGVybWluYXRlOwotICAgICAgICBpbnQg
dmFsdWVSZWN0WDsKLSAgICAgICAgaW50IHZhbHVlUmVjdFk7Ci0gICAgICAgIGludCB2YWx1ZVJl
Y3RXaWR0aDsKLSAgICAgICAgaW50IHZhbHVlUmVjdEhlaWdodDsKLSAgICB9OwotCi0gICAgdW5p
b24gRXh0cmFQYXJhbXMgewotICAgICAgICBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHNjcm9s
bGJhclRyYWNrOwotICAgICAgICBCdXR0b25FeHRyYVBhcmFtcyBidXR0b247Ci0gICAgICAgIFRl
eHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVsZDsKLSAgICAgICAgTWVudUxpc3RFeHRyYVBhcmFt
cyBtZW51TGlzdDsKLSAgICAgICAgU2xpZGVyRXh0cmFQYXJhbXMgc2xpZGVyOwotICAgICAgICBJ
bm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBpbm5lclNwaW47Ci0gICAgICAgIFByb2dyZXNzQmFy
RXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0gICAgfTsKLQotICAgIC8vIEdldHMgdGhlIHNpemUg
b2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZvciB2YXJpYWJsZSBzaXplZCBpdGVtcwotICAgIC8v
IGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRodW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJl
cXVpcmVkIHdpZHRoIG9mCi0gICAgLy8gdGhlIHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBi
ZSB0aGUgbWluaW11bSBoZWlnaHQuCi0gICAgdmlydHVhbCBXZWJTaXplIGdldFNpemUoUGFydCkg
eyByZXR1cm4gV2ViU2l6ZSgpOyB9Ci0gICAgLy8gUGFpbnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0
aGVtZSBwYXJ0LgotICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBQYXJ0LCBTdGF0
ZSwgY29uc3QgV2ViUmVjdCYsIGNvbnN0IEV4dHJhUGFyYW1zKikgeyB9Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oCShyZXZpc2lvbiAxMDExMjIpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9saW51eC9XZWJGb250RmFtaWx5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRm9udEZhbWlseV9oCi0jZGVm
aW5lIFdlYkZvbnRGYW1pbHlfaAotCi0jaW5jbHVkZSAiLi4vcGxhdGZvcm0vV2ViQ1N0cmluZy5o
IgotI2luY2x1ZGUgIi4uL3BsYXRmb3JtL1dlYkNvbW1vbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotc3RydWN0IFdlYkZvbnRGYW1pbHkgewotICAgIFdlYkNTdHJpbmcgbmFtZTsKLSAgICBi
b29sIGlzQm9sZDsKLSAgICBib29sIGlzSXRhbGljOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBXZWJGb250RmFtaWx5X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2
aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2Vi
U2FuZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3Ry
aWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJTYW5kYm94U3VwcG9ydF9oCi0jZGVmaW5lIFdlYlNhbmRib3hTdXBwb3J0X2gKLQotI2luY2x1
ZGUgIi4uL3BsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUgIi4uL3BsYXRmb3JtL1dlYlN0
cmluZy5oIgotI2luY2x1ZGUgIldlYkZvbnRGYW1pbHkuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXN0cnVjdCBXZWJGb250UmVuZGVyU3R5bGU7Ci0KLS8vIFB1dCBtZXRob2RzIGhlcmUgdGhh
dCBhcmUgcmVxdWlyZWQgZHVlIHRvIHNhbmRib3ggcmVzdHJpY3Rpb25zLgotY2xhc3MgV2ViU2Fu
ZGJveFN1cHBvcnQgewotcHVibGljOgotICAgIC8vIEZvbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gR2V0
IGEgZm9udCBmYW1pbHkgd2hpY2ggY29udGFpbnMgZ2x5cGhzIGZvciB0aGUgZ2l2ZW4gVW5pY29k
ZQotICAgIC8vIGNvZGUtcG9pbnRzLgotICAgIC8vICAgY2hhcmFjdGVyczogYSBVVEYtMTYgZW5j
b2RlZCBzdHJpbmcKLSAgICAvLyAgIG51bUNoYXJhY3RlcnM6IHRoZSBudW1iZXIgb2YgMTYtYml0
IHdvcmRzIGluIHxjaGFyYWN0ZXJzfAotICAgIC8vICAgcHJlZmVycmVkTG9jYWxlOiBwcmVmZXJy
ZWQgbG9jYWxlIGlkZW50aWZpZXIgZm9yIHRoZSB8Y2hhcmFjdGVyc3wKLSAgICAvLyAgICAgICAg
ICAgICAgICAgICAgKGUuZy4gImVuIiwgImphIiwgInpoLUNOIikKLSAgICAvLwotICAgIC8vIFJl
dHVybnMgYSBzdHJpbmcgd2l0aCB0aGUgZm9udCBmYW1pbHkgb24gYW4gZW1wdHkgc3RyaW5nIGlm
IHRoZQotICAgIC8vIHJlcXVlc3QgY2Fubm90IGJlIHNhdGlzZmllZC4KLSAgICAvLyBSZXR1cm5z
IGEgV2ViRm9udEZhbWlseSBpbnN0YW5jZSB3aXRoIHRoZSBmb250IG5hbWUuIFRoZSBpbnN0YW5j
ZSBoYXMgZW1wdHkgZm9udCBuYW1lIGlmIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQu
Ci0gICAgLy8gRklYTUU6IE1ha2UgdGhpcyB0byBiZSBhIHB1cmUgdmlydHVhbCBmdW5jdGlvbiBh
ZnRlciB0cmFuc2l0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRGb250RmFtaWx5Rm9yQ2hhcmFj
dGVycyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNv
bnN0IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgV2ViRm9udEZhbWlseSopID0gMDsKLQotICAgIHZp
cnR1YWwgdm9pZCBnZXRSZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGlu
dCBzaXplQW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSogc3R5bGUpID0gMDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTAx
MTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViVGhlbWVFbmdp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViVGhlbWVFbmdp
bmVfaAotI2RlZmluZSBXZWJUaGVtZUVuZ2luZV9oCi0KLSNpbmNsdWRlICIuLi9XZWJDYW52YXMu
aCIKLSNpbmNsdWRlICIuLi9XZWJDb2xvci5oIgotI2luY2x1ZGUgIi4uL1dlYlNpemUuaCIKLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0cnVjdCBXZWJSZWN0OwotCi1jbGFzcyBXZWJUaGVtZUVu
Z2luZSB7Ci1wdWJsaWM6Ci0gICAgLy8gVGhlIFVJIHBhcnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNz
ZWQuCi0gICAgZW51bSBQYXJ0IHsKLSAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMKLSAg
ICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhckxlZnRB
cnJvdywKLSAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCi0gICAgICAgIFBhcnRTY3Jv
bGxiYXJVcEFycm93LAotICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAotICAg
ICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKLSAgICAgICAgUGFydFNjcm9sbGJhckhv
cml6b250YWxUcmFjaywKLSAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCi0KLSAg
ICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKLSAgICAgICAgUGFydENoZWNrYm94LAotICAgICAg
ICBQYXJ0UmFkaW8sCi0gICAgICAgIFBhcnRCdXR0b24sCi0gICAgICAgIFBhcnRUZXh0RmllbGQs
Ci0gICAgICAgIFBhcnRNZW51TGlzdCwKLSAgICAgICAgUGFydFNsaWRlclRyYWNrLAotICAgICAg
ICBQYXJ0U2xpZGVyVGh1bWIsCi0gICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCi0gICAgICAg
IFBhcnRQcm9ncmVzc0JhcgotICAgIH07Ci0KLSAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0
aGUgYXNzb2NpYXRlZCBQYXJ0LgotICAgIGVudW0gU3RhdGUgewotICAgICAgICBTdGF0ZURpc2Fi
bGVkLAotICAgICAgICBTdGF0ZUhvdmVyLAotICAgICAgICBTdGF0ZU5vcm1hbCwKLSAgICAgICAg
U3RhdGVQcmVzc2VkLAotICAgIH07Ci0KLSAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBkcmF3
aW5nIHRoZSBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIGFuZAotICAgIC8vIFBhcnRTY3Jv
bGxiYXJWZXJ0aWNhbFRyYWNrLgotICAgIHN0cnVjdCBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1z
IHsKLSAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUgZW50aXJlIHRyYWNrLCBhcyBvcHBvc2Vk
IHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCi0gICAgICAgIGludCB0cmFja1g7Ci0gICAgICAg
IGludCB0cmFja1k7Ci0gICAgICAgIGludCB0cmFja1dpZHRoOwotICAgICAgICBpbnQgdHJhY2tI
ZWlnaHQ7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRDaGVja2Jv
eCwgUGFydFB1c2hCdXR0b24gYW5kIFBhcnRSYWRpby4KLSAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQ
YXJhbXMgewotICAgICAgICBib29sIGNoZWNrZWQ7Ci0gICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0
ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCi0gICAgICAg
IGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24u
Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyOwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29s
b3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRUZXh0RmllbGQK
LSAgICBzdHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIGlzVGV4dEFy
ZWE7Ci0gICAgICAgIGJvb2wgaXNMaXN0Ym94OwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5k
Q29sb3I7Ci0gICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRNZW51TGlz
dAotICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFyYW1zIHsKLSAgICAgICAgYm9vbCBoYXNCb3Jk
ZXI7Ci0gICAgICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzOwotICAgICAgICBpbnQgYXJyb3dYOwot
ICAgICAgICBpbnQgYXJyb3dZOwotICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Ci0g
ICAgfTsKLQotICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRTbGlkZXJUcmFjayBhbmQg
UGFydFNsaWRlclRodW1iCi0gICAgc3RydWN0IFNsaWRlckV4dHJhUGFyYW1zIHsKLSAgICAgICAg
Ym9vbCB2ZXJ0aWNhbDsKLSAgICAgICAgYm9vbCBpbkRyYWc7Ci0gICAgfTsKLQotICAgIC8vIEV4
dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRJbm5lclNwaW5CdXR0b24KLSAgICBzdHJ1Y3QgSW5uZXJT
cGluQnV0dG9uRXh0cmFQYXJhbXMgewotICAgICAgICBib29sIHNwaW5VcDsKLSAgICAgICAgYm9v
bCByZWFkT25seTsKLSAgICB9OwotCi0gICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFBy
b2dyZXNzQmFyCi0gICAgc3RydWN0IFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgewotICAgICAgICBi
b29sIGRldGVybWluYXRlOwotICAgICAgICBpbnQgdmFsdWVSZWN0WDsKLSAgICAgICAgaW50IHZh
bHVlUmVjdFk7Ci0gICAgICAgIGludCB2YWx1ZVJlY3RXaWR0aDsKLSAgICAgICAgaW50IHZhbHVl
UmVjdEhlaWdodDsKLSAgICB9OwotCi0gICAgdW5pb24gRXh0cmFQYXJhbXMgewotICAgICAgICBT
Y3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOwotICAgICAgICBCdXR0b25F
eHRyYVBhcmFtcyBidXR0b247Ci0gICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVs
ZDsKLSAgICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKLSAgICAgICAgU2xpZGVy
RXh0cmFQYXJhbXMgc2xpZGVyOwotICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBp
bm5lclNwaW47Ci0gICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Ci0g
ICAgfTsKLQotICAgIC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZv
ciB2YXJpYWJsZSBzaXplZCBpdGVtcwotICAgIC8vIGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRo
dW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCi0gICAgLy8gdGhl
IHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWlnaHQuCi0gICAg
dmlydHVhbCBXZWJTaXplIGdldFNpemUoUGFydCkgeyByZXR1cm4gV2ViU2l6ZSgpOyB9Ci0gICAg
Ly8gUGFpbnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LgotICAgIHZpcnR1YWwgdm9p
ZCBwYWludCgKLSAgICAgICAgV2ViQ2FudmFzKiwgUGFydCwgU3RhdGUsIGNvbnN0IFdlYlJlY3Qm
LCBjb25zdCBFeHRyYVBhcmFtcyopIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQot
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9tYWMvV2ViU2FuZGJv
eFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9t
YWMvV2ViU2FuZGJveFN1cHBvcnQuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvbWFjL1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViU2FuZGJveFN1cHBvcnRfaAotI2RlZmluZSBXZWJT
YW5kYm94U3VwcG9ydF9oCi0KLXR5cGVkZWYgc3RydWN0IENHRm9udCogQ0dGb250UmVmOwotCi0j
aWZkZWYgX19PQkpDX18KLUBjbGFzcyBOU0ZvbnQ7Ci0jZWxzZQotY2xhc3MgTlNGb250OwotI2Vu
ZGlmCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBQdXQgbWV0aG9kcyBoZXJlIHRoYXQgYXJl
IHJlcXVpcmVkIGR1ZSB0byBzYW5kYm94IHJlc3RyaWN0aW9ucy4KLWNsYXNzIFdlYlNhbmRib3hT
dXBwb3J0IHsKLXB1YmxpYzoKLSAgICAvLyBHaXZlbiBhbiBpbnB1dCBmb250IC0gfHNyY0ZvbnR8
IFt3aGljaCBjYW4ndCBiZSBsb2FkZWQgZHVlIHRvIHNhbmRib3gKLSAgICAvLyByZXN0cmljdGlv
bnNdLiBSZXR1cm4gYSBmb250IGJlbG9uZ2luZyB0byBhbiBlcXVpdmFsZW50IGZvbnQgZmlsZQot
ICAgIC8vIHRoYXQgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBmb250IGFuZCBhIHVuaXF1ZSBp
ZGVudGlmaWVyIGNvcnJlc3BvbmRpbmcKLSAgICAvLyB0byB0aGUgb24tZGlzayBmb250IGZpbGUu
Ci0gICAgLy8KLSAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgY2FsbGVyIGFz
c3VtZXMgb3duZXJzaGlwIG9mIHRoZSB8b3V0fAotICAgIC8vIHBhcmFtZXRlciBhbmQgbXVzdCBj
YWxsIENHRm9udFJlbGVhc2UoKSB0byB1bmxvYWQgaXQgd2hlbiBkb25lLgotICAgIC8vCi0gICAg
Ly8gUmV0dXJuczogdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBlcnJvci4KLSAgICB2aXJ0dWFs
IGJvb2wgbG9hZEZvbnQoTlNGb250KiBzcmNGb250LCBDR0ZvbnRSZWYqIG91dCwgdWludDMyX3Qq
IGZvbnRJRCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbWFjL1dlYlRoZW1lRW5naW5lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbWFjL1dlYlRoZW1lRW5n
aW5lLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L21hYy9XZWJUaGVtZUVuZ2luZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICog
ZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFdlYlRoZW1lRW5naW5lX2gKLSNkZWZpbmUgV2ViVGhlbWVFbmdpbmVfaAotCi0jaW5jbHVk
ZSAiLi4vV2ViQ2FudmFzLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdHJ1Y3QgV2ViUmVj
dDsKLQotY2xhc3MgV2ViVGhlbWVFbmdpbmUgewotcHVibGljOgotICAgIGVudW0gU3RhdGUgewot
ICAgICAgICBTdGF0ZURpc2FibGVkLAotICAgICAgICBTdGF0ZUluYWN0aXZlLAotICAgICAgICBT
dGF0ZUFjdGl2ZSwKLSAgICAgICAgU3RhdGVQcmVzc2VkLAotICAgIH07Ci0KLSAgICBlbnVtIFNp
emUgewotICAgICAgICBTaXplUmVndWxhciwKLSAgICAgICAgU2l6ZVNtYWxsLAotICAgIH07Ci0K
LSAgICBlbnVtIFNjcm9sbGJhck9yaWVudGF0aW9uIHsKLSAgICAgICAgU2Nyb2xsYmFyT3JpZW50
YXRpb25Ib3Jpem9udGFsLAotICAgICAgICBTY3JvbGxiYXJPcmllbnRhdGlvblZlcnRpY2FsLAot
ICAgIH07Ci0KLSAgICBlbnVtIFNjcm9sbGJhclBhcmVudCB7Ci0gICAgICAgIFNjcm9sbGJhclBh
cmVudFNjcm9sbFZpZXcsCi0gICAgICAgIFNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyLAotICAg
IH07Ci0KLSAgICBzdHJ1Y3QgU2Nyb2xsYmFySW5mbyB7Ci0gICAgICAgIFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uOwotICAgICAgICBTY3JvbGxiYXJQYXJlbnQgcGFyZW50OwotICAg
ICAgICBpbnQgbWF4VmFsdWU7Ci0gICAgICAgIGludCBjdXJyZW50VmFsdWU7Ci0gICAgICAgIGlu
dCB2aXNpYmxlU2l6ZTsKLSAgICAgICAgaW50IHRvdGFsU2l6ZTsKLSAgICB9OwotCi0gICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoV2ViQ2FudmFzKiwgU3RhdGUsIFNpemUsIGNv
bnN0IFdlYlJlY3QmLCBjb25zdCBTY3JvbGxiYXJJbmZvJikge30KLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkJsb2JSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJsb2JSZWdpc3RyeS5oCShyZXZpc2lvbiAxMDEx
MjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkJsb2JSZWdpc3RyeS5o
OjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkJs
b2JSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJCbG9iUmVnaXN0cnkuaAkocmV2aXNp
b24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
QmxvYlJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYg
V2ViQmxvYlJlZ2lzdHJ5X2gKICNkZWZpbmUgV2ViQmxvYlJlZ2lzdHJ5X2gKIAotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViQ2FudmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViQ2FudmFzLmgJKHJldmlzaW9uIDEwMTEyMikJKGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ2FudmFzLmg6MTAxMTIyKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ2FudmFzLmgJKHdvcmtpbmcgY29weSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNhbnZhcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNh
bnZhcy5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJDYW52YXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAog
I2lmbmRlZiBXZWJDYW52YXNfaAogI2RlZmluZSBXZWJDYW52YXNfaAogCi0jaW5jbHVkZSAicGxh
dGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKICNpZiBXRUJLSVRf
VVNJTkdfU0tJQQogY2xhc3MgU2tDYW52YXM7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9hcmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlwYm9hcmQuaAkocmV2aXNpb24gMTAx
MTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9hcmQuaDox
MDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDbGlw
Ym9hcmQuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ2xpcGJvYXJkLmgJKHJldmlzaW9uIDEwMTEyMikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNsaXBib2FyZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKICNpZm5kZWYgV2ViQ2xpcGJvYXJk
X2gKICNkZWZpbmUgV2ViQ2xpcGJvYXJkX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1v
bi5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRhdGEuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJEYXRhLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgi
CisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvbG9yLmgJ
KHJldmlzaW9uIDEwMTEyMikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29sb3IuaDoxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9XZWJDb2xvci5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvbG9yLmgJKHJldmlzaW9uIDEwMTEyMikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkNvbG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKICNkZWZpbmUgV2ViQ29sb3JfaAogCiAjaW5jbHVk
ZSAiV2ViQ29sb3JOYW1lLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvck5hbWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJDb2xvck5hbWUu
aAkocmV2aXNpb24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJDb2xvck5hbWUuaDoxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJDb2xvck5hbWUuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llSmFyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViQ29va2llSmFyLmgJKHJl
dmlzaW9uIDEwMTEyMikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29v
a2llSmFyLmg6MTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViQ29va2llSmFyLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAkocmV2aXNpb24g
MTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnRGF0YS5o
OjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkRy
YWdEYXRhLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL3BsYXRmb3JtL1dlYkRyYWdEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAkocmV2aXNpb24gMTAxMTIyKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRHJhZ0RhdGEuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJEcmFnRGF0YV9oCiAj
ZGVmaW5lIFdlYkRyYWdEYXRhX2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgor
I2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1l
c3BhY2UgV2ViQ29yZSB7IGNsYXNzIENocm9taXVtRGF0YU9iamVjdDsgfQpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkZpbGVTeXN0
ZW0uaAkocmV2aXNpb24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGaWxlU3lzdGVtLmg6MTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViRmlsZVN5c3RlbS5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJGaWxlU3lzdGVtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViRmlsZVN5c3Rl
bS5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJGaWxlU3lzdGVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDExICszMSwxMiBA
QAogI2lmbmRlZiBXZWJGaWxlU3lzdGVtX2gKICNkZWZpbmUgV2ViRmlsZVN5c3RlbV9oCiAKLSNp
bmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJVUkwu
aCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKKy8vIEZJWE1FOiBNb3ZlIHRoZXNlIGNsYXNzZXMgaW50byBwbGF0Zm9y
bS4KIGNsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M7CiBjbGFzcyBXZWJGaWxlV3JpdGVyOwog
Y2xhc3MgV2ViRmlsZVdyaXRlckNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aAkocmV2aXNpb24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHcmFwaGljc0NvbnRleHQzRC5oOjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkdyYXBoaWNzQ29u
dGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViR3JhcGhpY3NDb250ZXh0M0QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOSBAQAogI2lmbmRlZiBXZWJHcmFwaGljc0NvbnRl
eHQzRF9oCiAjZGVmaW5lIFdlYkdyYXBoaWNzQ29udGV4dDNEX2gKIAorI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgogI2luY2x1ZGUgIldlYk5vbkNvcHlhYmxlLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0v
V2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAi
V2ViU3RyaW5nLmgiCiAKICNkZWZpbmUgVVNFX1dHQzNEX1RZUEVTCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYkltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2UuaAkocmV2aXNp
b24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZS5o
OjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYklt
YWdlLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYkltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2UuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJJbWFnZV9oCiAjZGVmaW5lIFdlYkltYWdl
X2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgogCiAjaWYgV0VCS0lUX1VTSU5HX1NLSUEKICNpbmNsdWRlIDxTa0JpdG1hcC5oPgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MCwyNSArNTAsMjUgQEAgdHlwZWRlZiB2b2lkICpIQU5ETEU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsK
LWNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50OworY2xhc3MgV2ViQXBwbGljYXRp
b25DYWNoZUhvc3Q7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVsb25nIGluIHBsYXRmb3JtPworY2xh
c3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7IC8vIEZJWE1FOiBEb2VzIHRoaXMgYmVs
b25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViQmxvYlJlZ2lzdHJ5OwogY2xhc3MgV2ViQ2xpcGJv
YXJkOwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRmlsZVN5c3RlbTsKIGNsYXNzIFdl
YkZpbGVVdGlsaXRpZXM7CiBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsKLWNsYXNzIFdlYklE
QkZhY3Rvcnk7Ci1jbGFzcyBXZWJJREJLZXk7Ci1jbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7
CitjbGFzcyBXZWJJREJGYWN0b3J5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0
Zm9ybT8KK2NsYXNzIFdlYklEQktleTsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxh
dGZvcm0/CitjbGFzcyBXZWJNZXNzYWdlUG9ydENoYW5uZWw7IC8vIEZJWE1FOiBEb2VzIHRoaXMg
YmVsb25nIGluIHBsYXRmb3JtPwogY2xhc3MgV2ViTWltZVJlZ2lzdHJ5OwogY2xhc3MgV2ViUGVl
ckNvbm5lY3Rpb25IYW5kbGVyOwogY2xhc3MgV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyQ2xpZW50
OwotY2xhc3MgV2ViUGx1Z2luTGlzdEJ1aWxkZXI7CitjbGFzcyBXZWJQbHVnaW5MaXN0QnVpbGRl
cjsgLy8gRklYTUU6IERvZXMgdGhpcyBiZWxvbmcgaW4gcGxhdGZvcm0/CiBjbGFzcyBXZWJTYW5k
Ym94U3VwcG9ydDsKLWNsYXNzIFdlYlNoYXJlZFdvcmtlclJlcG9zaXRvcnk7CitjbGFzcyBXZWJT
aGFyZWRXb3JrZXJSZXBvc2l0b3J5OyAvLyBGSVhNRTogRG9lcyB0aGlzIGJlbG9uZyBpbiBwbGF0
Zm9ybT8KIGNsYXNzIFdlYlNvY2tldFN0cmVhbUhhbmRsZTsKLWNsYXNzIFdlYlN0b3JhZ2VOYW1l
c3BhY2U7CitjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNlOyAvLyBGSVhNRTogRG9lcyB0aGlzIGJl
bG9uZyBpbiBwbGF0Zm9ybT8KIGNsYXNzIFdlYlRoZW1lRW5naW5lOwogY2xhc3MgV2ViVGhyZWFk
OwogY2xhc3MgV2ViVVJMTG9hZGVyOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgJKHJldmlzaW9uIDEwMTEyMikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6MTAxMTIyKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgJKHdvcmtp
bmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCShyZXZpc2lv
biAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAgKzI1LDEwIEBA
CiAjaWZuZGVmIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcl9oCiAjZGVmaW5lIFdlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcl9oCiAKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJO
b25Db3B5YWJsZS5oIgotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlByaXZhdGVQdHIuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3Iu
aCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1pbWVSZWdpc3RyeS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dl
Yk1pbWVSZWdpc3RyeS5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk1pbWVSZWdpc3RyeS5oOjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYk1pbWVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJNaW1lUmVn
aXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJNaW1lUmVnaXN0cnkuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTWltZVJlZ2lzdHJ5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgV2ViTWltZVJlZ2lzdHJ5X2gKICNkZWZpbmUg
V2ViTWltZVJlZ2lzdHJ5X2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJOb25Db3B5
YWJsZS5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYk5vbkNvcHlhYmxlLmg6MTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViTm9uQ29weWFibGUuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNvbm5lY3Rpb25IYW5k
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZv
cm0vV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmgJKHJldmlzaW9uIDEwMTEyMikJKGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUGVlckNvbm5lY3Rpb25IYW5kbGVyLmg6MTAx
MTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUGVlckNv
bm5lY3Rpb25IYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25u
ZWN0aW9uSGFuZGxlci5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjUsOSArMjUsOSBAQAogI2lmbmRlZiBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJf
aAogI2RlZmluZSBXZWJQZWVyQ29ubmVjdGlvbkhhbmRsZXJfaAogCi0jaW5jbHVkZSAiV2ViU2Vj
dXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKyNpbmNsdWRlICIuLi9XZWJTZWN1cml0eU9yaWdpbi5o
IiAvLyBGSVhNRTogVGhpcyBpcyBhIGxheWVyaW5nIHZpb2xhdGlvbi4KKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25u
ZWN0aW9uSGFuZGxlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oCShyZXZp
c2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBlZXJD
b25uZWN0aW9uSGFuZGxlckNsaWVudC5oOjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlBlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9X
ZWJQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL1dlYlBvaW50LmgJKHJldmlzaW9uIDEwMTEyMikJKGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViUG9pbnQuaDoxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQb2ludC5oCSh3b3JraW5nIGNvcHkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJQb2ludC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlBvaW50LmgJKHJl
dmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYlBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgV2Vi
UG9pbnRfaAogI2RlZmluZSBXZWJQb2ludF9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgogI2luY2x1ZGUgIkludFBvaW50LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViUmVjdC5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlJlY3QuaDoxMDExMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJSZWN0LmgJKHdvcmtpbmcgY29weSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlJlY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJS
ZWN0LmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL1dlYlJlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lm
bmRlZiBXZWJSZWN0X2gKICNkZWZpbmUgV2ViUmVjdF9oCiAKLSNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKIAogI2lmIFdFQktJVF9JTVBMRU1F
TlRBVElPTgogI2luY2x1ZGUgIkludFJlY3QuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL1dlYlNpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTaXplLmgJKHJldmlzaW9uIDEwMTEyMikJKGZy
b20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2l6ZS5oOjEwMTEyMikKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNpemUuaAkod29ya2luZyBj
b3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU2l6
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3Jt
L1dlYlNpemUuaAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvcGxhdGZvcm0vV2ViU2l6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBA
CiAjaWZuZGVmIFdlYlNpemVfaAogI2RlZmluZSBXZWJTaXplX2gKIAotI2luY2x1ZGUgInBsYXRm
b3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiAjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgpJbmRleDogU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU29ja2V0U3RyZWFtRXJyb3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTb2NrZXRTdHJl
YW1FcnJvci5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNvY2tldFN0cmVhbUVycm9yLmg6MTAxMTIyKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU29ja2V0U3RyZWFtRXJyb3IuaAkod29ya2luZyBj
b3B5KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU29j
a2V0U3RyZWFtRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9XZWJTb2NrZXRTdHJlYW1FcnJvci5oCShyZXZpc2lvbiAxMDExMjIpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTb2NrZXRTdHJlYW1F
cnJvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYlNvY2tl
dFN0cmVhbUVycm9yX2gKICNkZWZpbmUgV2ViU29ja2V0U3RyZWFtRXJyb3JfaAogCi0jaW5jbHVk
ZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0
Zm9ybS9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaAkocmV2aXNp
b24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTb2NrZXRT
dHJlYW1IYW5kbGUuaDoxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9XZWJTb2NrZXRTdHJlYW1IYW5kbGUuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViU29ja2V0U3RyZWFtSGFuZGxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0v
V2ViU29ja2V0U3RyZWFtSGFuZGxlLmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNvY2tldFN0cmVhbUhhbmRsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYlNvY2tldFN0cmVhbUhhbmRs
ZV9oCiAjZGVmaW5lIFdlYlNvY2tldFN0cmVhbUhhbmRsZV9oCiAKLSNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNv
Y2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCShyZXZp
c2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNvY2tl
dFN0cmVhbUhhbmRsZUNsaWVudC5oOjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL1dlYlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaAkocmV2aXNp
b24gMTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2Vi
U29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNpZm5kZWYgV2ViU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50X2gKICNkZWZpbmUgV2ViU29j
a2V0U3RyZWFtSGFuZGxlQ2xpZW50X2gKIAotI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5o
IgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGhyZWFkLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVGhyZWFk
LmgJKHJldmlzaW9uIDEwMTEyMikJKGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGhyZWFkLmg6MTAxMTIyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxh
dGZvcm0vV2ViVGhyZWFkLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL1dlYlRocmVhZC5oCShyZXZpc2lvbiAxMDEx
MjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJUaHJlYWQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2lmbmRlZiBXZWJUaHJlYWRfaAog
I2RlZmluZSBXZWJUaHJlYWRfaAogCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9XZWJVUkxMb2Fk
ZXIuaAkocmV2aXNpb24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVUkxMb2FkZXIuaDoxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS9XZWJVUkxMb2FkZXIuaAkod29ya2luZyBjb3B5KQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vV2ViVVJMTG9hZGVyLmgJ
KHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRm
b3JtL1dlYlVSTExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTEgQEAKICNp
Zm5kZWYgV2ViVVJMTG9hZGVyX2gKICNkZWZpbmUgV2ViVVJMTG9hZGVyX2gKIAotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAorLy8gRklYTUU6IE1vdmUgdGhlc2UgY2xhc3NlcyBpbnRvIHBsYXRmb3Jt
LgogY2xhc3MgV2ViRGF0YTsKIGNsYXNzIFdlYlVSTExvYWRlckNsaWVudDsKIGNsYXNzIFdlYlVS
TFJlcXVlc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9h
bmRyb2lkL1dlYlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJTYW5kYm94U3VwcG9ydC5oCShyZXZp
c2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2FuZHJvaWQv
V2ViU2FuZGJveFN1cHBvcnQuaDoxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS9hbmRyb2lkL1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViU2FuZGJveFN1cHBvcnRfaAorI2RlZmluZSBXZWJT
YW5kYm94U3VwcG9ydF9oCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBFbXB0eSBjbGFzcywg
YXMgd2UgbmVlZCBpdCB0byBjb21waWxlLgorY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQgeworcHVi
bGljOgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJUaGVtZUVuZ2luZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2Fu
ZHJvaWQvV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYlRoZW1lRW5naW5lLmg6MTAxMTIyKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vYW5kcm9pZC9XZWJUaGVtZUVu
Z2luZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUaGVtZUVu
Z2luZV9oCisjZGVmaW5lIFdlYlRoZW1lRW5naW5lX2gKKworI2luY2x1ZGUgIi4uL1dlYkNhbnZh
cy5oIgorI2luY2x1ZGUgIi4uL1dlYkNvbG9yLmgiCisjaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlJlY3Q7CisKK2NsYXNzIFdlYlRoZW1l
RW5naW5lIHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgVUkgcGFydCB3aGljaCBpcyBiZWluZyBhY2Nl
c3NlZC4KKyAgICBlbnVtIFBhcnQgeworICAgICAgICAvLyBTY3JvbGxiYXJUaGVtZSBwYXJ0cwor
ICAgICAgICBQYXJ0U2Nyb2xsYmFyRG93bkFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFyTGVm
dEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFyUmlnaHRBcnJvdywKKyAgICAgICAgUGFydFNj
cm9sbGJhclVwQXJyb3csCisgICAgICAgIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVGh1bWIsCisg
ICAgICAgIFBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iLAorICAgICAgICBQYXJ0U2Nyb2xsYmFy
SG9yaXpvbnRhbFRyYWNrLAorICAgICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUcmFjaywKKwor
ICAgICAgICAvLyBSZW5kZXJUaGVtZSBwYXJ0cworICAgICAgICBQYXJ0Q2hlY2tib3gsCisgICAg
ICAgIFBhcnRSYWRpbywKKyAgICAgICAgUGFydEJ1dHRvbiwKKyAgICAgICAgUGFydFRleHRGaWVs
ZCwKKyAgICAgICAgUGFydE1lbnVMaXN0LAorICAgICAgICBQYXJ0U2xpZGVyVHJhY2ssCisgICAg
ICAgIFBhcnRTbGlkZXJUaHVtYiwKKyAgICAgICAgUGFydElubmVyU3BpbkJ1dHRvbiwKKyAgICAg
ICAgUGFydFByb2dyZXNzQmFyCisgICAgfTsKKworICAgIC8vIFRoZSBjdXJyZW50IHN0YXRlIG9m
IHRoZSBhc3NvY2lhdGVkIFBhcnQuCisgICAgZW51bSBTdGF0ZSB7CisgICAgICAgIFN0YXRlRGlz
YWJsZWQsCisgICAgICAgIFN0YXRlSG92ZXIsCisgICAgICAgIFN0YXRlTm9ybWFsLAorICAgICAg
ICBTdGF0ZVByZXNzZWQsCisgICAgfTsKKworICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIGRy
YXdpbmcgdGhlIFBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgYW5kCisgICAgLy8gUGFydFNj
cm9sbGJhclZlcnRpY2FsVHJhY2suCisgICAgc3RydWN0IFNjcm9sbGJhclRyYWNrRXh0cmFQYXJh
bXMgeworICAgICAgICAvLyBUaGUgYm91bmRzIG9mIHRoZSBlbnRpcmUgdHJhY2ssIGFzIG9wcG9z
ZWQgdG8gdGhlIHBhcnQgYmVpbmcgcGFpbnRlZC4KKyAgICAgICAgaW50IHRyYWNrWDsKKyAgICAg
ICAgaW50IHRyYWNrWTsKKyAgICAgICAgaW50IHRyYWNrV2lkdGg7CisgICAgICAgIGludCB0cmFj
a0hlaWdodDsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydENoZWNr
Ym94LCBQYXJ0UHVzaEJ1dHRvbiBhbmQgUGFydFJhZGlvLgorICAgIHN0cnVjdCBCdXR0b25FeHRy
YVBhcmFtcyB7CisgICAgICAgIGJvb2wgY2hlY2tlZDsKKyAgICAgICAgYm9vbCBpbmRldGVybWlu
YXRlOyAvLyBXaGV0aGVyIHRoZSBidXR0b24gc3RhdGUgaXMgaW5kZXRlcm1pbmF0ZS4KKyAgICAg
ICAgYm9vbCBpc0RlZmF1bHQ7IC8vIFdoZXRoZXIgdGhlIGJ1dHRvbiBpcyBkZWZhdWx0IGJ1dHRv
bi4KKyAgICAgICAgYm9vbCBoYXNCb3JkZXI7CisgICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRD
b2xvcjsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFRleHRGaWVs
ZAorICAgIHN0cnVjdCBUZXh0RmllbGRFeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgaXNUZXh0
QXJlYTsKKyAgICAgICAgYm9vbCBpc0xpc3Rib3g7CisgICAgICAgIFdlYkNvbG9yIGJhY2tncm91
bmRDb2xvcjsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydE1lbnVM
aXN0CisgICAgc3RydWN0IE1lbnVMaXN0RXh0cmFQYXJhbXMgeworICAgICAgICBib29sIGhhc0Jv
cmRlcjsKKyAgICAgICAgYm9vbCBoYXNCb3JkZXJSYWRpdXM7CisgICAgICAgIGludCBhcnJvd1g7
CisgICAgICAgIGludCBhcnJvd1k7CisgICAgICAgIFdlYkNvbG9yIGJhY2tncm91bmRDb2xvcjsK
KyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFNsaWRlclRyYWNrIGFu
ZCBQYXJ0U2xpZGVyVGh1bWIKKyAgICBzdHJ1Y3QgU2xpZGVyRXh0cmFQYXJhbXMgeworICAgICAg
ICBib29sIHZlcnRpY2FsOworICAgICAgICBib29sIGluRHJhZzsKKyAgICB9OworCisgICAgLy8g
RXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydElubmVyU3BpbkJ1dHRvbgorICAgIHN0cnVjdCBJbm5l
clNwaW5CdXR0b25FeHRyYVBhcmFtcyB7CisgICAgICAgIGJvb2wgc3BpblVwOworICAgICAgICBi
b29sIHJlYWRPbmx5OworICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBQYXJ0
UHJvZ3Jlc3NCYXIKKyAgICBzdHJ1Y3QgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyB7CisgICAgICAg
IGJvb2wgZGV0ZXJtaW5hdGU7CisgICAgICAgIGludCB2YWx1ZVJlY3RYOworICAgICAgICBpbnQg
dmFsdWVSZWN0WTsKKyAgICAgICAgaW50IHZhbHVlUmVjdFdpZHRoOworICAgICAgICBpbnQgdmFs
dWVSZWN0SGVpZ2h0OworICAgIH07CisKKyAgICB1bmlvbiBFeHRyYVBhcmFtcyB7CisgICAgICAg
IFNjcm9sbGJhclRyYWNrRXh0cmFQYXJhbXMgc2Nyb2xsYmFyVHJhY2s7CisgICAgICAgIEJ1dHRv
bkV4dHJhUGFyYW1zIGJ1dHRvbjsKKyAgICAgICAgVGV4dEZpZWxkRXh0cmFQYXJhbXMgdGV4dEZp
ZWxkOworICAgICAgICBNZW51TGlzdEV4dHJhUGFyYW1zIG1lbnVMaXN0OworICAgICAgICBTbGlk
ZXJFeHRyYVBhcmFtcyBzbGlkZXI7CisgICAgICAgIElubmVyU3BpbkJ1dHRvbkV4dHJhUGFyYW1z
IGlubmVyU3BpbjsKKyAgICAgICAgUHJvZ3Jlc3NCYXJFeHRyYVBhcmFtcyBwcm9ncmVzc0JhcjsK
KyAgICB9OworCisgICAgLy8gR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4g
Rm9yIHZhcmlhYmxlIHNpemVkIGl0ZW1zCisgICAgLy8gbGlrZSB2ZXJ0aWNhbCBzY3JvbGxiYXIg
dGh1bWJzLCB0aGUgd2lkdGggd2lsbCBiZSB0aGUgcmVxdWlyZWQgd2lkdGggb2YKKyAgICAvLyB0
aGUgdHJhY2sgd2hpbGUgdGhlIGhlaWdodCB3aWxsIGJlIHRoZSBtaW5pbXVtIGhlaWdodC4KKyAg
ICB2aXJ0dWFsIFdlYlNpemUgZ2V0U2l6ZShQYXJ0KSB7IHJldHVybiBXZWJTaXplKCk7IH0KKyAg
ICAvLyBQYWludCB0aGUgZ2l2ZW4gdGhlIGdpdmVuIHRoZW1lIHBhcnQuCisgICAgdmlydHVhbCB2
b2lkIHBhaW50KFdlYkNhbnZhcyosIFBhcnQsIFN0YXRlLCBjb25zdCBXZWJSZWN0JiwgY29uc3Qg
RXh0cmFQYXJhbXMqKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYkZv
bnRGYW1pbHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9w
bGF0Zm9ybS9saW51eC9XZWJGb250RmFtaWx5LmgJKHJldmlzaW9uIDEwMTEyMikJKGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvbGludXgvV2ViRm9udEZhbWlseS5oOjEwMTEyMikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYkZvbnRG
YW1pbHkuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJGb250RmFt
aWx5X2gKKyNkZWZpbmUgV2ViRm9udEZhbWlseV9oCisKKyNpbmNsdWRlICIuLi9wbGF0Zm9ybS9X
ZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAiLi4vcGxhdGZvcm0vV2ViQ29tbW9uLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViRm9udEZhbWlseSB7CisgICAgV2ViQ1N0cmluZyBu
YW1lOworICAgIGJvb2wgaXNCb2xkOworICAgIGJvb2wgaXNJdGFsaWM7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkZvbnRGYW1pbHlfaApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViRm9udEZhbWlseS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL2xpbnV4
L1dlYkZvbnRGYW1pbHkuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYkZvbnRGYW1pbHkuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsOCArMzEsOCBAQAogI2lmbmRlZiBXZWJGb250RmFtaWx5X2gKICNkZWZpbmUgV2ViRm9udEZh
bWlseV9oCiAKLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCi0jaW5jbHVkZSAi
Li4vcGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiLi4vV2ViQ1N0cmluZy5oIgorI2lu
Y2x1ZGUgIi4uL1dlYkNvbW1vbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViU2FuZGJveFN1cHBv
cnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9saW51eC9XZWJTYW5kYm94U3VwcG9ydC5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0Lmg6MTAxMTIy
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViU2Fu
ZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJT
YW5kYm94U3VwcG9ydF9oCisjZGVmaW5lIFdlYlNhbmRib3hTdXBwb3J0X2gKKworI2luY2x1ZGUg
Ii4uL3BsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgIi4uL3BsYXRmb3JtL1dlYlN0cmlu
Zy5oIgorI2luY2x1ZGUgIldlYkZvbnRGYW1pbHkuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3N0cnVjdCBXZWJGb250UmVuZGVyU3R5bGU7CisKKy8vIFB1dCBtZXRob2RzIGhlcmUgdGhhdCBh
cmUgcmVxdWlyZWQgZHVlIHRvIHNhbmRib3ggcmVzdHJpY3Rpb25zLgorY2xhc3MgV2ViU2FuZGJv
eFN1cHBvcnQgeworcHVibGljOgorICAgIC8vIEZvbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gR2V0IGEg
Zm9udCBmYW1pbHkgd2hpY2ggY29udGFpbnMgZ2x5cGhzIGZvciB0aGUgZ2l2ZW4gVW5pY29kZQor
ICAgIC8vIGNvZGUtcG9pbnRzLgorICAgIC8vICAgY2hhcmFjdGVyczogYSBVVEYtMTYgZW5jb2Rl
ZCBzdHJpbmcKKyAgICAvLyAgIG51bUNoYXJhY3RlcnM6IHRoZSBudW1iZXIgb2YgMTYtYml0IHdv
cmRzIGluIHxjaGFyYWN0ZXJzfAorICAgIC8vICAgcHJlZmVycmVkTG9jYWxlOiBwcmVmZXJyZWQg
bG9jYWxlIGlkZW50aWZpZXIgZm9yIHRoZSB8Y2hhcmFjdGVyc3wKKyAgICAvLyAgICAgICAgICAg
ICAgICAgICAgKGUuZy4gImVuIiwgImphIiwgInpoLUNOIikKKyAgICAvLworICAgIC8vIFJldHVy
bnMgYSBzdHJpbmcgd2l0aCB0aGUgZm9udCBmYW1pbHkgb24gYW4gZW1wdHkgc3RyaW5nIGlmIHRo
ZQorICAgIC8vIHJlcXVlc3QgY2Fubm90IGJlIHNhdGlzZmllZC4KKyAgICAvLyBSZXR1cm5zIGEg
V2ViRm9udEZhbWlseSBpbnN0YW5jZSB3aXRoIHRoZSBmb250IG5hbWUuIFRoZSBpbnN0YW5jZSBo
YXMgZW1wdHkgZm9udCBuYW1lIGlmIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBzYXRpc2ZpZWQuCisg
ICAgLy8gRklYTUU6IE1ha2UgdGhpcyB0byBiZSBhIHB1cmUgdmlydHVhbCBmdW5jdGlvbiBhZnRl
ciB0cmFuc2l0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBnZXRGb250RmFtaWx5Rm9yQ2hhcmFjdGVy
cyhjb25zdCBXZWJVQ2hhciogY2hhcmFjdGVycywgc2l6ZV90IG51bUNoYXJhY3RlcnMsIGNvbnN0
IGNoYXIqIHByZWZlcnJlZExvY2FsZSwgV2ViRm9udEZhbWlseSopID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBnZXRSZW5kZXJTdHlsZUZvclN0cmlrZShjb25zdCBjaGFyKiBmYW1pbHksIGludCBz
aXplQW5kU3R5bGUsIFdlYkZvbnRSZW5kZXJTdHlsZSogc3R5bGUpID0gMDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViU2FuZGJveFN1
cHBvcnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL2xpbnV4L1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkg
KzMxLDkgQEAKICNpZm5kZWYgV2ViU2FuZGJveFN1cHBvcnRfaAogI2RlZmluZSBXZWJTYW5kYm94
U3VwcG9ydF9oCiAKLSNpbmNsdWRlICIuLi9wbGF0Zm9ybS9XZWJDb21tb24uaCIKLSNpbmNsdWRl
ICIuLi9wbGF0Zm9ybS9XZWJTdHJpbmcuaCIKLSNpbmNsdWRlICJXZWJGb250RmFtaWx5LmgiCisj
aW5jbHVkZSAiLi4vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiLi4vV2ViRm9udEZhbWlseS5oIgor
I2luY2x1ZGUgIi4uL1dlYlN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdp
bmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9y
bS9saW51eC9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL2xpbnV4L1dlYlRoZW1lRW5naW5lLmg6MTAxMTIyKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbGludXgvV2ViVGhlbWVFbmdp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGhlbWVFbmdp
bmVfaAorI2RlZmluZSBXZWJUaGVtZUVuZ2luZV9oCisKKyNpbmNsdWRlICIuLi9XZWJDYW52YXMu
aCIKKyNpbmNsdWRlICIuLi9XZWJDb2xvci5oIgorI2luY2x1ZGUgIi4uL1dlYlNpemUuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJSZWN0OworCitjbGFzcyBXZWJUaGVtZUVu
Z2luZSB7CitwdWJsaWM6CisgICAgLy8gVGhlIFVJIHBhcnQgd2hpY2ggaXMgYmVpbmcgYWNjZXNz
ZWQuCisgICAgZW51bSBQYXJ0IHsKKyAgICAgICAgLy8gU2Nyb2xsYmFyVGhlbWUgcGFydHMKKyAg
ICAgICAgUGFydFNjcm9sbGJhckRvd25BcnJvdywKKyAgICAgICAgUGFydFNjcm9sbGJhckxlZnRB
cnJvdywKKyAgICAgICAgUGFydFNjcm9sbGJhclJpZ2h0QXJyb3csCisgICAgICAgIFBhcnRTY3Jv
bGxiYXJVcEFycm93LAorICAgICAgICBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRodW1iLAorICAg
ICAgICBQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYiwKKyAgICAgICAgUGFydFNjcm9sbGJhckhv
cml6b250YWxUcmFjaywKKyAgICAgICAgUGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCisKKyAg
ICAgICAgLy8gUmVuZGVyVGhlbWUgcGFydHMKKyAgICAgICAgUGFydENoZWNrYm94LAorICAgICAg
ICBQYXJ0UmFkaW8sCisgICAgICAgIFBhcnRCdXR0b24sCisgICAgICAgIFBhcnRUZXh0RmllbGQs
CisgICAgICAgIFBhcnRNZW51TGlzdCwKKyAgICAgICAgUGFydFNsaWRlclRyYWNrLAorICAgICAg
ICBQYXJ0U2xpZGVyVGh1bWIsCisgICAgICAgIFBhcnRJbm5lclNwaW5CdXR0b24sCisgICAgICAg
IFBhcnRQcm9ncmVzc0JhcgorICAgIH07CisKKyAgICAvLyBUaGUgY3VycmVudCBzdGF0ZSBvZiB0
aGUgYXNzb2NpYXRlZCBQYXJ0LgorICAgIGVudW0gU3RhdGUgeworICAgICAgICBTdGF0ZURpc2Fi
bGVkLAorICAgICAgICBTdGF0ZUhvdmVyLAorICAgICAgICBTdGF0ZU5vcm1hbCwKKyAgICAgICAg
U3RhdGVQcmVzc2VkLAorICAgIH07CisKKyAgICAvLyBFeHRyYSBwYXJhbWV0ZXJzIGZvciBkcmF3
aW5nIHRoZSBQYXJ0U2Nyb2xsYmFySG9yaXpvbnRhbFRyYWNrIGFuZAorICAgIC8vIFBhcnRTY3Jv
bGxiYXJWZXJ0aWNhbFRyYWNrLgorICAgIHN0cnVjdCBTY3JvbGxiYXJUcmFja0V4dHJhUGFyYW1z
IHsKKyAgICAgICAgLy8gVGhlIGJvdW5kcyBvZiB0aGUgZW50aXJlIHRyYWNrLCBhcyBvcHBvc2Vk
IHRvIHRoZSBwYXJ0IGJlaW5nIHBhaW50ZWQuCisgICAgICAgIGludCB0cmFja1g7CisgICAgICAg
IGludCB0cmFja1k7CisgICAgICAgIGludCB0cmFja1dpZHRoOworICAgICAgICBpbnQgdHJhY2tI
ZWlnaHQ7CisgICAgfTsKKworICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRDaGVja2Jv
eCwgUGFydFB1c2hCdXR0b24gYW5kIFBhcnRSYWRpby4KKyAgICBzdHJ1Y3QgQnV0dG9uRXh0cmFQ
YXJhbXMgeworICAgICAgICBib29sIGNoZWNrZWQ7CisgICAgICAgIGJvb2wgaW5kZXRlcm1pbmF0
ZTsgLy8gV2hldGhlciB0aGUgYnV0dG9uIHN0YXRlIGlzIGluZGV0ZXJtaW5hdGUuCisgICAgICAg
IGJvb2wgaXNEZWZhdWx0OyAvLyBXaGV0aGVyIHRoZSBidXR0b24gaXMgZGVmYXVsdCBidXR0b24u
CisgICAgICAgIGJvb2wgaGFzQm9yZGVyOworICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29s
b3I7CisgICAgfTsKKworICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRUZXh0RmllbGQK
KyAgICBzdHJ1Y3QgVGV4dEZpZWxkRXh0cmFQYXJhbXMgeworICAgICAgICBib29sIGlzVGV4dEFy
ZWE7CisgICAgICAgIGJvb2wgaXNMaXN0Ym94OworICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5k
Q29sb3I7CisgICAgfTsKKworICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRNZW51TGlz
dAorICAgIHN0cnVjdCBNZW51TGlzdEV4dHJhUGFyYW1zIHsKKyAgICAgICAgYm9vbCBoYXNCb3Jk
ZXI7CisgICAgICAgIGJvb2wgaGFzQm9yZGVyUmFkaXVzOworICAgICAgICBpbnQgYXJyb3dYOwor
ICAgICAgICBpbnQgYXJyb3dZOworICAgICAgICBXZWJDb2xvciBiYWNrZ3JvdW5kQ29sb3I7Cisg
ICAgfTsKKworICAgIC8vIEV4dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRTbGlkZXJUcmFjayBhbmQg
UGFydFNsaWRlclRodW1iCisgICAgc3RydWN0IFNsaWRlckV4dHJhUGFyYW1zIHsKKyAgICAgICAg
Ym9vbCB2ZXJ0aWNhbDsKKyAgICAgICAgYm9vbCBpbkRyYWc7CisgICAgfTsKKworICAgIC8vIEV4
dHJhIHBhcmFtZXRlcnMgZm9yIFBhcnRJbm5lclNwaW5CdXR0b24KKyAgICBzdHJ1Y3QgSW5uZXJT
cGluQnV0dG9uRXh0cmFQYXJhbXMgeworICAgICAgICBib29sIHNwaW5VcDsKKyAgICAgICAgYm9v
bCByZWFkT25seTsKKyAgICB9OworCisgICAgLy8gRXh0cmEgcGFyYW1ldGVycyBmb3IgUGFydFBy
b2dyZXNzQmFyCisgICAgc3RydWN0IFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgeworICAgICAgICBi
b29sIGRldGVybWluYXRlOworICAgICAgICBpbnQgdmFsdWVSZWN0WDsKKyAgICAgICAgaW50IHZh
bHVlUmVjdFk7CisgICAgICAgIGludCB2YWx1ZVJlY3RXaWR0aDsKKyAgICAgICAgaW50IHZhbHVl
UmVjdEhlaWdodDsKKyAgICB9OworCisgICAgdW5pb24gRXh0cmFQYXJhbXMgeworICAgICAgICBT
Y3JvbGxiYXJUcmFja0V4dHJhUGFyYW1zIHNjcm9sbGJhclRyYWNrOworICAgICAgICBCdXR0b25F
eHRyYVBhcmFtcyBidXR0b247CisgICAgICAgIFRleHRGaWVsZEV4dHJhUGFyYW1zIHRleHRGaWVs
ZDsKKyAgICAgICAgTWVudUxpc3RFeHRyYVBhcmFtcyBtZW51TGlzdDsKKyAgICAgICAgU2xpZGVy
RXh0cmFQYXJhbXMgc2xpZGVyOworICAgICAgICBJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBp
bm5lclNwaW47CisgICAgICAgIFByb2dyZXNzQmFyRXh0cmFQYXJhbXMgcHJvZ3Jlc3NCYXI7Cisg
ICAgfTsKKworICAgIC8vIEdldHMgdGhlIHNpemUgb2YgdGhlIGdpdmVuIHRoZW1lIHBhcnQuIEZv
ciB2YXJpYWJsZSBzaXplZCBpdGVtcworICAgIC8vIGxpa2UgdmVydGljYWwgc2Nyb2xsYmFyIHRo
dW1icywgdGhlIHdpZHRoIHdpbGwgYmUgdGhlIHJlcXVpcmVkIHdpZHRoIG9mCisgICAgLy8gdGhl
IHRyYWNrIHdoaWxlIHRoZSBoZWlnaHQgd2lsbCBiZSB0aGUgbWluaW11bSBoZWlnaHQuCisgICAg
dmlydHVhbCBXZWJTaXplIGdldFNpemUoUGFydCkgeyByZXR1cm4gV2ViU2l6ZSgpOyB9CisgICAg
Ly8gUGFpbnQgdGhlIGdpdmVuIHRoZSBnaXZlbiB0aGVtZSBwYXJ0LgorICAgIHZpcnR1YWwgdm9p
ZCBwYWludCgKKyAgICAgICAgV2ViQ2FudmFzKiwgUGFydCwgU3RhdGUsIGNvbnN0IFdlYlJlY3Qm
LCBjb25zdCBFeHRyYVBhcmFtcyopIHt9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51
eC9XZWJUaGVtZUVuZ2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL3BsYXRmb3JtL2xpbnV4L1dlYlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS9saW51eC9XZWJUaGVtZUVuZ2lu
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDcgQEAgcHVibGljOgogICAgIC8vIHRo
ZSB0cmFjayB3aGlsZSB0aGUgaGVpZ2h0IHdpbGwgYmUgdGhlIG1pbmltdW0gaGVpZ2h0LgogICAg
IHZpcnR1YWwgV2ViU2l6ZSBnZXRTaXplKFBhcnQpIHsgcmV0dXJuIFdlYlNpemUoKTsgfQogICAg
IC8vIFBhaW50IHRoZSBnaXZlbiB0aGUgZ2l2ZW4gdGhlbWUgcGFydC4KLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnQoCi0gICAgICAgIFdlYkNhbnZhcyosIFBhcnQsIFN0YXRlLCBjb25zdCBXZWJSZWN0
JiwgY29uc3QgRXh0cmFQYXJhbXMqKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52
YXMqLCBQYXJ0LCBTdGF0ZSwgY29uc3QgV2ViUmVjdCYsIGNvbnN0IEV4dHJhUGFyYW1zKikgeyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL3BsYXRmb3JtL21hYy9XZWJTYW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL21hYy9XZWJTYW5kYm94U3Vw
cG9ydC5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL21hYy9XZWJTYW5kYm94U3VwcG9ydC5oOjEwMTEyMikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL3BsYXRmb3JtL21hYy9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNhbmRib3hTdXBwb3J0X2gKKyNkZWZpbmUg
V2ViU2FuZGJveFN1cHBvcnRfaAorCit0eXBlZGVmIHN0cnVjdCBDR0ZvbnQqIENHRm9udFJlZjsK
KworI2lmZGVmIF9fT0JKQ19fCitAY2xhc3MgTlNGb250OworI2Vsc2UKK2NsYXNzIE5TRm9udDsK
KyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gUHV0IG1ldGhvZHMgaGVyZSB0aGF0
IGFyZSByZXF1aXJlZCBkdWUgdG8gc2FuZGJveCByZXN0cmljdGlvbnMuCitjbGFzcyBXZWJTYW5k
Ym94U3VwcG9ydCB7CitwdWJsaWM6CisgICAgLy8gR2l2ZW4gYW4gaW5wdXQgZm9udCAtIHxzcmNG
b250fCBbd2hpY2ggY2FuJ3QgYmUgbG9hZGVkIGR1ZSB0byBzYW5kYm94CisgICAgLy8gcmVzdHJp
Y3Rpb25zXS4gUmV0dXJuIGEgZm9udCBiZWxvbmdpbmcgdG8gYW4gZXF1aXZhbGVudCBmb250IGZp
bGUKKyAgICAvLyB0aGF0IGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgZm9udCBhbmQgYSB1bmlx
dWUgaWRlbnRpZmllciBjb3JyZXNwb25kaW5nCisgICAgLy8gdG8gdGhlIG9uLWRpc2sgZm9udCBm
aWxlLgorICAgIC8vCisgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIGNhbGxl
ciBhc3N1bWVzIG93bmVyc2hpcCBvZiB0aGUgfG91dHwKKyAgICAvLyBwYXJhbWV0ZXIgYW5kIG11
c3QgY2FsbCBDR0ZvbnRSZWxlYXNlKCkgdG8gdW5sb2FkIGl0IHdoZW4gZG9uZS4KKyAgICAvLwor
ICAgIC8vIFJldHVybnM6IHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZXJyb3IuCisgICAgdmly
dHVhbCBib29sIGxvYWRGb250KE5TRm9udCogc3JjRm9udCwgQ0dGb250UmVmKiBvdXQsIHVpbnQz
Ml90KiBmb250SUQpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL21hYy9XZWJUaGVt
ZUVuZ2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3Bs
YXRmb3JtL21hYy9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAxMDExMjIpCShmcm9tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL21hYy9XZWJUaGVtZUVuZ2luZS5oOjEwMTEyMikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL21hYy9XZWJUaGVtZUVuZ2lu
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRoZW1lRW5naW5l
X2gKKyNkZWZpbmUgV2ViVGhlbWVFbmdpbmVfaAorCisjaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViUmVjdDsKKworY2xhc3MgV2ViVGhl
bWVFbmdpbmUgeworcHVibGljOgorICAgIGVudW0gU3RhdGUgeworICAgICAgICBTdGF0ZURpc2Fi
bGVkLAorICAgICAgICBTdGF0ZUluYWN0aXZlLAorICAgICAgICBTdGF0ZUFjdGl2ZSwKKyAgICAg
ICAgU3RhdGVQcmVzc2VkLAorICAgIH07CisKKyAgICBlbnVtIFNpemUgeworICAgICAgICBTaXpl
UmVndWxhciwKKyAgICAgICAgU2l6ZVNtYWxsLAorICAgIH07CisKKyAgICBlbnVtIFNjcm9sbGJh
ck9yaWVudGF0aW9uIHsKKyAgICAgICAgU2Nyb2xsYmFyT3JpZW50YXRpb25Ib3Jpem9udGFsLAor
ICAgICAgICBTY3JvbGxiYXJPcmllbnRhdGlvblZlcnRpY2FsLAorICAgIH07CisKKyAgICBlbnVt
IFNjcm9sbGJhclBhcmVudCB7CisgICAgICAgIFNjcm9sbGJhclBhcmVudFNjcm9sbFZpZXcsCisg
ICAgICAgIFNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyLAorICAgIH07CisKKyAgICBzdHJ1Y3Qg
U2Nyb2xsYmFySW5mbyB7CisgICAgICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9u
OworICAgICAgICBTY3JvbGxiYXJQYXJlbnQgcGFyZW50OworICAgICAgICBpbnQgbWF4VmFsdWU7
CisgICAgICAgIGludCBjdXJyZW50VmFsdWU7CisgICAgICAgIGludCB2aXNpYmxlU2l6ZTsKKyAg
ICAgICAgaW50IHRvdGFsU2l6ZTsKKyAgICB9OworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Ny
b2xsYmFyVGh1bWIoV2ViQ2FudmFzKiwgU3RhdGUsIFNpemUsIGNvbnN0IFdlYlJlY3QmLCBjb25z
dCBTY3JvbGxiYXJJbmZvJikge30KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL21hYy9XZWJU
aGVtZUVuZ2luZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL21hYy9XZWJUaGVtZUVuZ2luZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vbWFjL1dlYlRoZW1lRW5naW5lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBpbnQgdG90YWxTaXpl
OwogICAgIH07CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUaHVtYihXZWJDYW52
YXMqLCBTdGF0ZSwgU2l6ZSwgY29uc3QgV2ViUmVjdCYsIGNvbnN0IFNjcm9sbGJhckluZm8mKSB7
fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhclRodW1iKFdlYkNhbnZhcyosIFN0YXRl
LCBTaXplLCBjb25zdCBXZWJSZWN0JiwgY29uc3QgU2Nyb2xsYmFySW5mbyYpIHsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9wbGF0Zm9ybS93aW4vV2ViU2FuZGJveFN1cHBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS93aW4vV2ViU2FuZGJveFN1cHBvcnQuaAko
cmV2aXNpb24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy93aW4v
V2ViU2FuZGJveFN1cHBvcnQuaDoxMDExMjIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS93aW4vV2ViU2FuZGJveFN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJTYW5kYm94U3VwcG9ydF9oCisjZGVmaW5lIFdlYlNhbmRi
b3hTdXBwb3J0X2gKKwordHlwZWRlZiBzdHJ1Y3QgSEZPTlRfXyogSEZPTlQ7CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBQdXQgbWV0aG9kcyBoZXJlIHRoYXQgYXJlIHJlcXVpcmVkIGR1ZSB0
byBzYW5kYm94IHJlc3RyaWN0aW9ucy4KK2NsYXNzIFdlYlNhbmRib3hTdXBwb3J0IHsKK3B1Ymxp
YzoKKyAgICAvLyBTb21ldGltZXMgYSBXaW4zMiBBUEkgY2FsbCB3aWxsIGZhaWwgYmVjYXVzZSBh
IGZvbnQgaXMgbm90IGxvYWRlZCwKKyAgICAvLyBhbmQgZHVlIHRvIHNhbmRib3ggcmVzdHJpY3Rp
b25zLCB0aGUgY3VycmVudCBwcm9jZXNzIG1heSBiZSB1bmFibGUKKyAgICAvLyB0byBhY2Nlc3Mg
dGhlIGZpbGVzeXN0ZW0gdG8gbG9hZCB0aGUgZm9udC4gIFNvLCB0aGlzIGNhbGwgc2VydmVzIGFz
CisgICAgLy8gYSBmYWlsb3ZlciB0byBhc2sgdGhlIGVtYmVkZGVyIHRvIHRyeSBzb21lIG90aGVy
IHdheSB0byBsb2FkIHRoZQorICAgIC8vIGZvbnQgKHVzdWFsbHkgYnkgZGVsZWdhdGluZyB0byBh
biBlbXBvd2VyZWQgcHJvY2VzcyB0byBoYXZlIGl0IGxvYWQKKyAgICAvLyB0aGUgZm9udCkuICBS
ZXR1cm5zIHRydWUgaWYgdGhlIGZvbnQgd2FzIHN1Y2Nlc3NmdWxseSBsb2FkZWQuCisgICAgdmly
dHVhbCBib29sIGVuc3VyZUZvbnRMb2FkZWQoSEZPTlQpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L3BsYXRmb3JtL3dpbi9XZWJTYW5kYm94U3VwcG9ydC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL3BsYXRmb3JtL3dpbi9XZWJTYW5kYm94U3VwcG9ydC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vd2lu
L1dlYlNhbmRib3hTdXBwb3J0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDEwICs0MCwxMCBAQCBj
bGFzcyBXZWJTYW5kYm94U3VwcG9ydCB7CiBwdWJsaWM6CiAgICAgLy8gU29tZXRpbWVzIGEgV2lu
MzIgQVBJIGNhbGwgd2lsbCBmYWlsIGJlY2F1c2UgYSBmb250IGlzIG5vdCBsb2FkZWQsCiAgICAg
Ly8gYW5kIGR1ZSB0byBzYW5kYm94IHJlc3RyaWN0aW9ucywgdGhlIGN1cnJlbnQgcHJvY2VzcyBt
YXkgYmUgdW5hYmxlCi0gICAgLy8gdG8gYWNjZXNzIHRoZSBmaWxlc3lzdGVtIHRvIGxvYWQgdGhl
IGZvbnQuICBTbywgdGhpcyBjYWxsIHNlcnZlcyBhcworICAgIC8vIHRvIGFjY2VzcyB0aGUgZmls
ZXN5c3RlbSB0byBsb2FkIHRoZSBmb250LiBTbywgdGhpcyBjYWxsIHNlcnZlcyBhcwogICAgIC8v
IGEgZmFpbG92ZXIgdG8gYXNrIHRoZSBlbWJlZGRlciB0byB0cnkgc29tZSBvdGhlciB3YXkgdG8g
bG9hZCB0aGUKICAgICAvLyBmb250ICh1c3VhbGx5IGJ5IGRlbGVnYXRpbmcgdG8gYW4gZW1wb3dl
cmVkIHByb2Nlc3MgdG8gaGF2ZSBpdCBsb2FkCi0gICAgLy8gdGhlIGZvbnQpLiAgUmV0dXJucyB0
cnVlIGlmIHRoZSBmb250IHdhcyBzdWNjZXNzZnVsbHkgbG9hZGVkLgorICAgIC8vIHRoZSBmb250
KS4gUmV0dXJucyB0cnVlIGlmIHRoZSBmb250IHdhcyBzdWNjZXNzZnVsbHkgbG9hZGVkLgogICAg
IHZpcnR1YWwgYm9vbCBlbnN1cmVGb250TG9hZGVkKEhGT05UKSA9IDA7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS93aW4vV2ViVGhlbWVFbmdpbmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS93
aW4vV2ViVGhlbWVFbmdpbmUuaAkocmV2aXNpb24gMTAxMTIyKQkoZnJvbSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy93aW4vV2ViVGhlbWVFbmdpbmUuaDoxMDExMjIpCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9wbGF0Zm9ybS93aW4vV2ViVGhlbWVFbmdpbmUuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9oCisjZGVm
aW5lIFdlYlRoZW1lRW5naW5lX2gKKworI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgorI2luY2x1
ZGUgIi4uL1dlYkNvbG9yLmgiCisjaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RydWN0IFdlYlJlY3Q7CitzdHJ1Y3QgV2ViU2l6ZTsKKworY2xhc3MgV2Vi
VGhlbWVFbmdpbmUgeworcHVibGljOgorLy8gVGhlIHBhcnQgYW5kIHN0YXRlIHBhcmFtZXRlcnMg
Y29ycmVzcG9uZCB0byB2YWx1ZXMgZGVmaW5lZCBieSB0aGUKKy8vIFdpbmRvd3MgVGhlbWUgQVBJ
IChzZWUKKy8vIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9iYjc3MzE4
NyhWUy44NSkuYXNweCApLgorLy8gVGhlIGNsYXNzaWNTdGF0ZSBwYXJhbWV0ZXIgY29ycmVzcG9u
ZHMgdG8gdGhlIHVTdGF0ZQorLy8gcGFyYW1ldGVyIG9mIHRoZSBXaW5kb3dzIERyYXdGcmFtZUNv
bnRyb2woKSBmdW5jdGlvbi4KKy8vIFNlZSB0aGUgZGVmaW5pdGlvbnMgaW4gPHZzc3R5bGUuaD4g
YW5kIDx3aW51c2VyLmg+LgorICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbigKKyAgICAgICAg
V2ViQ2FudmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKKyAgICAg
ICAgY29uc3QgV2ViUmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludE1lbnVMaXN0
KAorICAgICAgICBXZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0
YXRlLAorICAgICAgICBjb25zdCBXZWJSZWN0JikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHBh
aW50U2Nyb2xsYmFyQXJyb3coCisgICAgICAgIFdlYkNhbnZhcyosIGludCBzdGF0ZSwgaW50IGNs
YXNzaWNTdGF0ZSwKKyAgICAgICAgY29uc3QgV2ViUmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBwYWludFNjcm9sbGJhclRodW1iKAorICAgICAgICBXZWJDYW52YXMqLCBpbnQgcGFydCwg
aW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJSZWN0JikgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyVHJhY2soCisgICAgICAgIFdlYkNh
bnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNv
bnN0IFdlYlJlY3QmLCBjb25zdCBXZWJSZWN0JiBhbGlnblJlY3QpID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBwYWludFNwaW5CdXR0b24oCisgICAgICAgIFdlYkNhbnZhcyosIGludCBwYXJ0LCBp
bnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdlYlJlY3QmKSB7fQor
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGV4dEZpZWxkKAorICAgICAgICBXZWJDYW52YXMqLCBp
bnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAorICAgICAgICBjb25zdCBXZWJS
ZWN0JiwgV2ViQ29sb3IsIGJvb2wgZmlsbENvbnRlbnRBcmVhLCBib29sIGRyYXdFZGdlcykgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tiYXIoCisgICAgICAgIFdlYkNhbnZhcyos
IGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCisgICAgICAgIGNvbnN0IFdl
YlJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQcm9ncmVzc0JhcigKKyAgICAg
ICAgV2ViQ2FudmFzKiwgY29uc3QgV2ViUmVjdCYgYmFyUmVjdCwgY29uc3QgV2ViUmVjdCYgdmFs
dWVSZWN0LAorICAgICAgICBib29sIGRldGVybWluYXRlLCBkb3VibGUgYW5pbWF0ZWRTZWNvbmRz
KSB7fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vd2luL1dlYlRoZW1lRW5naW5lLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvcGxhdGZvcm0vd2luL1dl
YlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9wbGF0Zm9ybS93aW4vV2ViVGhlbWVFbmdpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
OSArMzEsOSBAQAogI2lmbmRlZiBXZWJUaGVtZUVuZ2luZV9oCiAjZGVmaW5lIFdlYlRoZW1lRW5n
aW5lX2gKIAotI2luY2x1ZGUgIi4uL1dlYkNhbnZhcy5oIgotI2luY2x1ZGUgIi4uL1dlYkNvbG9y
LmgiCi0jaW5jbHVkZSAiLi4vV2ViU2l6ZS5oIgorI2luY2x1ZGUgIldlYkNhbnZhcy5oIgorI2lu
Y2x1ZGUgIldlYkNvbG9yLmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvd2luL1dlYlNhbmRi
b3hTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
d2luL1dlYlNhbmRib3hTdXBwb3J0LmgJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL3dpbi9XZWJTYW5kYm94U3VwcG9ydC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNhbmRib3hTdXBwb3J0X2gKLSNkZWZpbmUgV2Vi
U2FuZGJveFN1cHBvcnRfaAotCi10eXBlZGVmIHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKLQotbmFt
ZXNwYWNlIFdlYktpdCB7Ci0KLS8vIFB1dCBtZXRob2RzIGhlcmUgdGhhdCBhcmUgcmVxdWlyZWQg
ZHVlIHRvIHNhbmRib3ggcmVzdHJpY3Rpb25zLgotY2xhc3MgV2ViU2FuZGJveFN1cHBvcnQgewot
cHVibGljOgotICAgIC8vIFNvbWV0aW1lcyBhIFdpbjMyIEFQSSBjYWxsIHdpbGwgZmFpbCBiZWNh
dXNlIGEgZm9udCBpcyBub3QgbG9hZGVkLAotICAgIC8vIGFuZCBkdWUgdG8gc2FuZGJveCByZXN0
cmljdGlvbnMsIHRoZSBjdXJyZW50IHByb2Nlc3MgbWF5IGJlIHVuYWJsZQotICAgIC8vIHRvIGFj
Y2VzcyB0aGUgZmlsZXN5c3RlbSB0byBsb2FkIHRoZSBmb250LiAgU28sIHRoaXMgY2FsbCBzZXJ2
ZXMgYXMKLSAgICAvLyBhIGZhaWxvdmVyIHRvIGFzayB0aGUgZW1iZWRkZXIgdG8gdHJ5IHNvbWUg
b3RoZXIgd2F5IHRvIGxvYWQgdGhlCi0gICAgLy8gZm9udCAodXN1YWxseSBieSBkZWxlZ2F0aW5n
IHRvIGFuIGVtcG93ZXJlZCBwcm9jZXNzIHRvIGhhdmUgaXQgbG9hZAotICAgIC8vIHRoZSBmb250
KS4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgZm9udCB3YXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZC4KLSAg
ICB2aXJ0dWFsIGJvb2wgZW5zdXJlRm9udExvYWRlZChIRk9OVCkgPSAwOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvd2luL1dlYlRoZW1lRW5naW5lLmgJKHJldmlzaW9uIDEwMTEyMikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL3dpbi9XZWJUaGVtZUVuZ2luZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlRoZW1lRW5naW5lX2gKLSNkZWZp
bmUgV2ViVGhlbWVFbmdpbmVfaAotCi0jaW5jbHVkZSAiLi4vV2ViQ2FudmFzLmgiCi0jaW5jbHVk
ZSAiLi4vV2ViQ29sb3IuaCIKLSNpbmNsdWRlICIuLi9XZWJTaXplLmgiCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1zdHJ1Y3QgV2ViUmVjdDsKLXN0cnVjdCBXZWJTaXplOwotCi1jbGFzcyBXZWJU
aGVtZUVuZ2luZSB7Ci1wdWJsaWM6Ci0vLyBUaGUgcGFydCBhbmQgc3RhdGUgcGFyYW1ldGVycyBj
b3JyZXNwb25kIHRvIHZhbHVlcyBkZWZpbmVkIGJ5IHRoZQotLy8gV2luZG93cyBUaGVtZSBBUEkg
KHNlZQotLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2JiNzczMTg3
KFZTLjg1KS5hc3B4ICkuCi0vLyBUaGUgY2xhc3NpY1N0YXRlIHBhcmFtZXRlciBjb3JyZXNwb25k
cyB0byB0aGUgdVN0YXRlCi0vLyBwYXJhbWV0ZXIgb2YgdGhlIFdpbmRvd3MgRHJhd0ZyYW1lQ29u
dHJvbCgpIGZ1bmN0aW9uLgotLy8gU2VlIHRoZSBkZWZpbml0aW9ucyBpbiA8dnNzdHlsZS5oPiBh
bmQgPHdpbnVzZXIuaD4uCi0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKAotICAgICAgICBX
ZWJDYW52YXMqLCBpbnQgcGFydCwgaW50IHN0YXRlLCBpbnQgY2xhc3NpY1N0YXRlLAotICAgICAg
ICBjb25zdCBXZWJSZWN0JikgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHBhaW50TWVudUxpc3Qo
Ci0gICAgICAgIFdlYkNhbnZhcyosIGludCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3Rh
dGUsCi0gICAgICAgIGNvbnN0IFdlYlJlY3QmKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRTY3JvbGxiYXJBcnJvdygKLSAgICAgICAgV2ViQ2FudmFzKiwgaW50IHN0YXRlLCBpbnQgY2xh
c3NpY1N0YXRlLAotICAgICAgICBjb25zdCBXZWJSZWN0JikgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsYmFyVGh1bWIoCi0gICAgICAgIFdlYkNhbnZhcyosIGludCBwYXJ0LCBp
bnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYlJlY3QmKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJUcmFjaygKLSAgICAgICAgV2ViQ2Fu
dmFzKiwgaW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29u
c3QgV2ViUmVjdCYsIGNvbnN0IFdlYlJlY3QmIGFsaWduUmVjdCkgPSAwOwotCi0gICAgdmlydHVh
bCB2b2lkIHBhaW50U3BpbkJ1dHRvbigKLSAgICAgICAgV2ViQ2FudmFzKiwgaW50IHBhcnQsIGlu
dCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2ViUmVjdCYpIHt9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUZXh0RmllbGQoCi0gICAgICAgIFdlYkNhbnZhcyosIGlu
dCBwYXJ0LCBpbnQgc3RhdGUsIGludCBjbGFzc2ljU3RhdGUsCi0gICAgICAgIGNvbnN0IFdlYlJl
Y3QmLCBXZWJDb2xvciwgYm9vbCBmaWxsQ29udGVudEFyZWEsIGJvb2wgZHJhd0VkZ2VzKSA9IDA7
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja2JhcigKLSAgICAgICAgV2ViQ2FudmFzKiwg
aW50IHBhcnQsIGludCBzdGF0ZSwgaW50IGNsYXNzaWNTdGF0ZSwKLSAgICAgICAgY29uc3QgV2Vi
UmVjdCYpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBwYWludFByb2dyZXNzQmFyKAotICAgICAg
ICBXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0JiBiYXJSZWN0LCBjb25zdCBXZWJSZWN0JiB2YWx1
ZVJlY3QsCi0gICAgICAgIGJvb2wgZGV0ZXJtaW5hdGUsIGRvdWJsZSBhbmltYXRlZFNlY29uZHMp
IHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCg==
</data>
<flag name="review"
          id="115666"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>