<?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>124406</bug_id>
          
          <creation_ts>2013-11-15 04:06:44 -0800</creation_ts>
          <short_desc>[GTK] Mark all deprecated symbols in GObject DOM bindings</short_desc>
          <delta_ts>2013-11-21 00:36:21 -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>Bindings</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>pnormand</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951026</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-11-15 04:06:44 -0800</bug_when>
    <thetext>We have custom (as not autogenerated) and deprecated symbols all in WebKitDOMCustom. The deprecated methods in WebKitDOMCustom are not marked as deprecated and they don&apos;t appear in the right documentation section, but all of them are mixed in WebKitDOMCustom, see:

http://webkitgtk.org/reference/webkitdomgtk/2.3.1/webkitdomgtk-WebKitDOMCustom.html

The deleted objects (also deprecated) are not included in the documentation either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951029</commentid>
    <comment_count>1</comment_count>
      <attachid>217041</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-11-15 04:22:23 -0800</bug_when>
    <thetext>Created attachment 217041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952456</commentid>
    <comment_count>2</comment_count>
      <attachid>217391</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-11-19 23:33:11 -0800</bug_when>
    <thetext>Created attachment 217391
Updated patch

Just rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952537</commentid>
    <comment_count>3</comment_count>
      <attachid>217391</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-20 04:07:26 -0800</bug_when>
    <thetext>Comment on attachment 217391
Updated patch

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

LGTM with one minor nit:

&gt; Source/WebCore/bindings/gobject/WebKitDOMDeprecated.cpp:22
&gt; +#if !defined(WEBKIT_DISABLE_DEPRECATED)

I don&apos;t think we want this in the implementation file, just on the header, since it&apos;s something that should be used only by stuff that use WebKit at build time only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952599</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-11-20 08:27:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 217391 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217391&amp;action=review
&gt; 
&gt; LGTM with one minor nit:

Thanks for the review.

&gt; &gt; Source/WebCore/bindings/gobject/WebKitDOMDeprecated.cpp:22
&gt; &gt; +#if !defined(WEBKIT_DISABLE_DEPRECATED)
&gt; 
&gt; I don&apos;t think we want this in the implementation file, just on the header, since it&apos;s something that should be used only by stuff that use WebKit at build time only.

I&apos;m not sure I get it. This is not used internally, when WebKit is built without deprecated symbols we don&apos;t want the implementations either, otherwise we will have a bunch of non static methods without a prototype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952634</commentid>
    <comment_count>5</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-11-20 09:45:32 -0800</bug_when>
    <thetext>What I mean is defining WEBKIT_DISABLE_DEPRECATED is not something we would do while building WebKit itself, it&apos;s something that people who depend on/link with WebKit will use, only. We want the symbols to always be in the library, the define exists only to make the prototypes disappear for API users at their build time, not WebKit&apos;s. Makes more sense put this way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952968</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-11-21 00:22:42 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; What I mean is defining WEBKIT_DISABLE_DEPRECATED is not something we would do while building WebKit itself, it&apos;s something that people who depend on/link with WebKit will use, only. We want the symbols to always be in the library, the define exists only to make the prototypes disappear for API users at their build time, not WebKit&apos;s. Makes more sense put this way?

Of course you are right, this is not an option to build webkit itself, thanks for the explanation. I&apos;ll remove it also from the generated code before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952973</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-11-21 00:36:21 -0800</bug_when>
    <thetext>Committed r159614: &lt;http://trac.webkit.org/changeset/159614&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217041</attachid>
            <date>2013-11-15 04:22:23 -0800</date>
            <delta_ts>2013-11-19 23:33:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wkdom-deprecated.diff</filename>
            <type>text/plain</type>
            <size>98002</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMDRjYWZhLi4xMTQ3M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUg
QEAKKzIwMTMtMTEtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIE1hcmsgYWxsIGRlcHJlY2F0ZWQgc3ltYm9scyBpbiBHT2JqZWN0
IERPTSBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBkZXByZWNhdGVkIEFQSSBmcm9tIFdlYktpdERPTUN1c3RvbSBvdCBhIG5ldyBm
aWxlCisgICAgICAgIFdlYktpdERPTURlcHJlY2F0ZWQgbGVhdmluZyBpbiBXZWJLaXRET01DdXN0
b20gb25seSB0aGUKKyAgICAgICAgbm9uLWRlcHJlY2F0ZWQgQVBJIHRoYXQgaXMgbm90IGF1dG9n
ZW5lcmF0ZWQuIEFsc28gYWRkZWQgdGhlCisgICAgICAgIGRlcHJlY2F0aW9uIGRlY29yYXRpb25z
IGFuZCB0YWdzIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvZ29i
amVjdC9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20u
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5zeW1ib2xzOgor
ICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRGVwcmVjYXRlZC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmNw
cC4KKyAgICAgICAgKHdlYmtpdF9kb21fYmxvYl93ZWJraXRfc2xpY2UpOgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2lkKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X3NldF9pZCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xh
c3NfbmFtZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfY2xhc3NfbmFt
ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3NfbGlzdCk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zvcm1fY2hhbmdl
KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9ybV9p
bnB1dCk6CisgICAgICAgICh3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyZmxv
dyk6CisgICAgICAgICh3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3dlYmtpdF9yZWdpb25fb3ZlcmZs
b3cpOgorICAgICAgICAod2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudF9u
b2Rlcyk6CisgICAgICAgICh3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25z
X2J5X2NvbnRlbnRfbm9kZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF9wcm9w
ZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2Jhcl9pbmZvX2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0X2RvbV9iYXJfaW5mb19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fYmFyX2lu
Zm9fZ2V0X3Zpc2libGUpOgorICAgICAgICAod2Via2l0X2RvbV9jb25zb2xlX2dldF9tZW1vcnkp
OgorICAgICAgICAod2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5
X2Nzc192YWx1ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfaGlk
ZGVuKToKKyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF92aXNpYmlsaXR5
X3N0YXRlKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9kb2N1bWVudF9vcGVuKToKKyAgICAg
ICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9pdGVtX2lkKToKKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX2lkKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRt
bF9lbGVtZW50X2dldF9pdGVtX3JlZik6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVu
dF9nZXRfaXRlbV9wcm9wKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9p
dGVtX3Njb3BlKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3Nj
b3BlKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3R5cGUpOgor
ICAgICAgICAod2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZCk6CisgICAg
ICAgICh3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfc2NvcGVkKToKKyAgICAgICAg
KHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X3Byb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2luaXQpOgor
ICAgICAgICAod2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pdGVtKToKKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbmFtZWRfaXRlbSk6
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9sZW5n
dGgpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRf
bmFtZXMpOgorICAgICAgICAod2Via2l0X2RvbV9ub2RlX2dldF9hdHRyaWJ1dGVzKToKKyAgICAg
ICAgKHdlYmtpdF9kb21fbm9kZV9oYXNfYXR0cmlidXRlcyk6CisgICAgICAgICh3ZWJraXRfZG9t
X21lbW9yeV9pbmZvX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX21lbW9yeV9p
bmZvX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9tZW1vcnlfaW5mb19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3RvdGFsX2pzX2hlYXBfc2l6ZSk6
CisgICAgICAgICh3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF91c2VkX2pzX2hlYXBfc2l6ZSk6
CisgICAgICAgICh3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF9qc19oZWFwX3NpemVfbGltaXQp
OgorICAgICAgICAod2Via2l0X2RvbV9taWNyb19kYXRhX2l0ZW1fdmFsdWVfY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRfZG9tX21pY3JvX2RhdGFfaXRlbV92YWx1ZV9pbml0KToKKyAgICAg
ICAgKHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZ2V0X21lbW9yeSk6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2Rv
bV9wcm9wZXJ0eV9ub2RlX2xpc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3By
b3BlcnR5X25vZGVfbGlzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fcHJvcGVydHlfbm9k
ZV9saXN0X2l0ZW0pOgorICAgICAgICAod2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfZ2V0
X2xlbmd0aCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfc3Rh
cnRfdGltZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfaW5p
dGlhbF90aW1lKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1lbnRfZ2V0X3By
b2ZpbGUpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmls
ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fZ2V0X2RhdGEp
OgorICAgICAgICAod2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX3NldF9kYXRhKToK
KyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uaC4K
KyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuc3ltYm9sczog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0
b20uc3ltYm9scy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUt
aGVhZGVycy5wbDogRG8gbm90IGNyZWF0ZQorICAgICAgICBmb3Jkd2FyZCBkZWNsYXJhdGlvbnMg
Zm9yIG5vbi1leGlzdGVudCBjbGFzc2VzIGxpa2UgQ3VzdG9tIGFuZAorICAgICAgICBEZXByZWNh
dGVkLgorCiAyMDEzLTExLTE0ICBWaWN0b3IgQ29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KIAog
ICAgICAgICBYTUxTZXJpYWxpemVyIGVzY2FwZXMgPCA+ICYgY29ycmVjdGx5IGluc2lkZSA8c2Ny
aXB0PiBhbmQgPHN0eWxlPiB0YWdzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvR05VbWFrZWZpbGUuYW0KaW5kZXggNDc4OWY5Yi4uNDUwZDRiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtCkBAIC0zOTYsNiArMzk2LDcg
QEAgd2Via2l0Z3RrX2dkb21fYnVpbHRfaF9hcGkgKz0gXAogCURlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET01CYXJQcm9wLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJL
aXRET01Db25zb2xlLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01DdXN0
b20uaCBcCisJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTURlcHJlY2F0ZWQuaCBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTURPTVdpbmRvd0NTUy5oIFwKIAlE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NRE9NV2luZG93LmggXAogCURlcml2ZWRT
b3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01ET01TZWxlY3Rpb24uaCBcCkBAIC00NjcsNyArNDY4
LDcgQEAgQlVJTFRfU09VUkNFUyArPSBcCiAJJCh3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3VyY2Vz
KQogCiBnZG9tX2NsYXNzX2xpc3QgOj0gJChzdWJzdCBXZWJLaXRET00sLCAkKGZpbHRlci1vdXQg
JVByaXZhdGUsICQoYmFzZW5hbWUgJChub3RkaXIgJCh3ZWJraXRndGtfZ2RvbV9idWlsdF9zb3Vy
Y2VzKSkpKSkKLWdkb21fY2xhc3NfbGlzdCArPSBDdXN0b20gRXZlbnRUYXJnZXQgT2JqZWN0Citn
ZG9tX2NsYXNzX2xpc3QgKz0gQ3VzdG9tIEV2ZW50VGFyZ2V0IE9iamVjdCBEZXByZWNhdGVkCiBE
ZXJpdmVkU291cmNlcy93ZWJraXRkb20vd2Via2l0ZG9tLmg6ICQoV2ViQ29yZSkvYmluZGluZ3Mv
c2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwgJChXZWJDb3JlKS9iaW5kaW5ncy9n
b2JqZWN0L0dOVW1ha2VmaWxlLmFtCiAJJChBTV9WX0dFTillY2hvICQoZ2RvbV9jbGFzc19saXN0
KSB8ICQoUEVSTCkgJDwgZ2RvbSA+ICRACiAKQEAgLTQ4Niw2ICs0ODcsOSBAQCAkKHRvcF9idWls
ZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUV2ZW50VGFyZ2V0LnN5bWJv
bHM6ICQoV2ViQ29yZQogJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9X
ZWJLaXRET01DdXN0b20uc3ltYm9sczogJChXZWJDb3JlKS9iaW5kaW5ncy9nb2JqZWN0L1dlYktp
dERPTUN1c3RvbS5zeW1ib2xzCiAJJChBTV9WX0dFTiljcCAtZiAkPCAkQAogCiskKHRvcF9idWls
ZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTURlcHJlY2F0ZWQuc3ltYm9s
czogJChXZWJDb3JlKS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuc3ltYm9s
cworCSQoQU1fVl9HRU4pY3AgLWYgJDwgJEAKKwogRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dl
YktpdERPTSUuc3ltYm9sczogRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTSUuaAog
CUB0cnVlCiAKQEAgLTQ5Nyw2ICs1MDEsNyBAQCBEZXJpdmVkU291cmNlcy93ZWJraXRkb20vd2Vi
a2l0ZG9tLnN5bWJvbHM6ICQoZ2RvbV9zeW1ib2xfZmlsZXMpICQoV2ViQ29yZSkvYmluZAogCiBF
WFRSQV9ESVNUICs9IFwKIAkkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3Vz
dG9tLnN5bWJvbHMgXAorCSQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXBy
ZWNhdGVkLnN5bWJvbHMgXAogCSQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01F
dmVudFRhcmdldC5zeW1ib2xzIFwKIAkkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0
RE9NT2JqZWN0LnN5bWJvbHMgXAogCSQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC93ZWJraXRk
b20uc3ltYm9scwpAQCAtNTIxLDYgKzUyNiw5IEBAICQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291
cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NRXZlbnRUYXJnZXRQcml2YXRlLmg6ICQoV2ViQ29yCiAk
KHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUN1c3RvbS5o
OiAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmgKIAkkKEFNX1Zf
R0VOKWNwIC1mICQ8ICRACiAKKyQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRk
b20vV2ViS2l0RE9NRGVwcmVjYXRlZC5oOiAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NRGVwcmVjYXRlZC5oCisJJChBTV9WX0dFTiljcCAtZiAkPCAkQAorCiAjIEZpbHRlciBv
dXQgU1ZHIGFuZCBJbmRleGVkREIgZm9yIG5vdwogZ2RvbV9mZWF0dXJlX2RlZmluZXMgOj0gJChm
aWx0ZXItb3V0IEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFPTEsICQoZmlsdGVyLW91dCBFTkFCTEVf
U1ZHJSwgJChmZWF0dXJlX2RlZmluZXMpKSkgRU5BQkxFX0lOREVYRURfREFUQUJBU0U9MAogRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTSUuY3BwIERlcml2ZWRTb3VyY2VzL3dlYmtp
dGRvbS9XZWJLaXRET00lLmggRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTSVQcml2
YXRlLmg6ICUuaWRsICQoU0NSSVBUU19GT1JfR0VORVJBVEVfQklORElOR1MpICQoV2ViQ29yZSkv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yR09iamVjdC5wbSAkKFdlYkNvcmUpL2JpbmRp
bmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0gJChzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxl
KQpAQCAtNTQ1LDYgKzU1Myw4IEBAIGxpYkdPYmplY3RET01CaW5kaW5nc19sYV9TT1VSQ0VTID0g
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIu
aCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQu
aCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdl
dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRXZlbnRU
YXJnZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVu
dFRhcmdldFByaXZhdGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUN1c3RvbS5jcHAKaW5kZXggM2Q3M2Y3MC4uZTJiYWI0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmNwcApA
QCAtMTksMjAgKzE5LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0
RE9NQ3VzdG9tLmgiCiAKLSNpbmNsdWRlICJXZWJLaXRET01CbG9iLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0RE9NRE9NU3RyaW5nTGlzdC5oIgotI2luY2x1ZGUgIldlYktpdERPTUhUTUxDb2xsZWN0aW9u
LmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50LmgiCi0jaW5jbHVkZSAiV2Vi
S2l0RE9NSFRNTEhlYWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NSFRNTElucHV0RWxl
bWVudC5oIgogI2luY2x1ZGUgIldlYktpdERPTUhUTUxJbnB1dEVsZW1lbnRQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0RE9NSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktp
dERPTUhUTUxUZXh0QXJlYUVsZW1lbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NTm9k
ZUxpc3QuaCIKLSNpbmNsdWRlICJXZWJLaXRET01PYmplY3QuaCIKLSNpbmNsdWRlICJXZWJLaXRE
T01Qcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgi
Ci0jaW5jbHVkZSAiV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93LmgiCiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKQEAgLTUwLDU0NCArNDAsMyBAQCBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxf
aW5wdXRfZWxlbWVudF9pc19lZGl0ZWQoV2ViS2l0RE9NSFRNTElucHV0RWxlbWVudCogaW5wdQog
ICAgIHJldHVybiBjb3JlKGlucHV0KS0+bGFzdENoYW5nZVdhc1VzZXJFZGl0KCk7CiB9CiAKLS8q
IENvbXBhdGliaWxpdHkgKi8KLVdlYktpdERPTUJsb2IqIHdlYmtpdF9kb21fYmxvYl93ZWJraXRf
c2xpY2UoV2ViS2l0RE9NQmxvYiogc2VsZiwgZ2ludDY0IHN0YXJ0LCBnaW50NjQgZW5kLCBjb25z
dCBnY2hhciogY29udGVudF90eXBlKQotewotICAgIHJldHVybiB3ZWJraXRfZG9tX2Jsb2Jfc2xp
Y2Uoc2VsZiwgc3RhcnQsIGVuZCwgY29udGVudF90eXBlKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9lbGVtZW50X2dldF9jbGFzc19uYW1lKFdlYktpdERPTUhUTUxFbGVtZW50KiBlbGVt
ZW50KQotewotICAgIHJldHVybiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUoV0VC
S0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQpKTsKLX0KLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxl
bWVudF9zZXRfY2xhc3NfbmFtZShXZWJLaXRET01IVE1MRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
Z2NoYXIqIHZhbHVlKQotewotICAgIHdlYmtpdF9kb21fZWxlbWVudF9zZXRfY2xhc3NfbmFtZShX
RUJLSVRfRE9NX0VMRU1FTlQoZWxlbWVudCksIHZhbHVlKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9k
b21faHRtbF9lbGVtZW50X2dldF9pZChXZWJLaXRET01IVE1MRWxlbWVudCogZWxlbWVudCkKLXsK
LSAgICBnX3dhcm5pbmcoIlRoZSBnZXRfaWQgbWV0aG9kIG9uIFdlYktpdERPTUhUTUxFbGVtZW50
IGlzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgb25lIGluIFdlYktpdERPTUVsZW1lbnQgaW5zdGVhZC4i
KTsKLSAgICByZXR1cm4gd2Via2l0X2RvbV9lbGVtZW50X2dldF9pZChXRUJLSVRfRE9NX0VMRU1F
TlQoZWxlbWVudCkpOwotfQotCi12b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9pZChX
ZWJLaXRET01IVE1MRWxlbWVudCogZWxlbWVudCwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAg
IGdfd2FybmluZygiVGhlIHNldF9pZCBtZXRob2Qgb24gV2ViS2l0RE9NSFRNTEVsZW1lbnQgaXMg
ZGVwcmVjYXRlZC4gVXNlIHRoZSBvbmUgaW4gV2ViS2l0RE9NRWxlbWVudCBpbnN0ZWFkLiIpOwot
ICAgIHdlYmtpdF9kb21fZWxlbWVudF9zZXRfaWQoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQp
LCB2YWx1ZSk7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0
X292ZXJmbG93KFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyogZmxvdykKLXsKLSAgICBnX3dhcm5p
bmcoIlRoZSBXZWJLaXRET01XZWJLaXROYW1lZEZsb3c6Om92ZXJmbG93IHByb3BlcnR5IGhhcyBi
ZWVuIHJlbmFtZWQgdG8gV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93OjpvdmVyc2V0LiBQbGVhc2Ug
dXBkYXRlIHlvdXIgY29kZSB0byB1c2UgdGhlIG5ldyBuYW1lLiIpOwotICAgIHJldHVybiB3ZWJr
aXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyc2V0KGZsb3cpOwotfQotCi1XZWJLaXRE
T01ET01Ub2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9jbGFzc19saXN0KFdl
YktpdERPTUhUTUxFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiB3ZWJraXRfZG9tX2Vs
ZW1lbnRfZ2V0X2NsYXNzX2xpc3QoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQpKTsKLX0KLQot
Z2NoYXIqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyZmxvdyhXZWJL
aXRET01FbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiB3ZWJraXRfZG9tX2VsZW1lbnRf
Z2V0X3dlYmtpdF9yZWdpb25fb3ZlcnNldChlbGVtZW50KTsKLX0KLQotV2ViS2l0RE9NTm9kZUxp
c3QqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X2NvbnRlbnRfbm9kZXMoV2ViS2l0
RE9NV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCi17Ci0gICAgcmV0dXJuIHdlYmtpdF9kb21f
d2Via2l0X25hbWVkX2Zsb3dfZ2V0X2NvbnRlbnQobmFtZWRGbG93KTsKLQotfQotCi1XZWJLaXRE
T01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfcmVnaW9uc19ieV9j
b250ZW50X25vZGUoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIFdlYktpdERP
TU5vZGUqIGNvbnRlbnROb2RlKQotewotICAgIHJldHVybiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1l
ZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRlbnQobmFtZWRGbG93LCBjb250ZW50Tm9kZSk7Ci19
Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2NoYW5n
ZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpCi17Ci0gICAgZ193YXJuaW5nKCJUaGUg
b25mb3JtY2hhbmdlIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00g
c3BlYywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7Ci19Ci0KLXZvaWQgd2Via2l0X2Rv
bV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2lucHV0KFdlYktpdERPTUhUTUxGb3Jt
RWxlbWVudCogc2VsZikKLXsKLSAgICBnX3dhcm5pbmcoIlRoZSBvbmZvcm1pbnB1dCBmdW5jdGlv
bmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHNwZWMsIHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3RoaW5nLiIpOwotfQotCi0vLyBXZWJLaXRET01CYXJJbmZvCi0KLXR5cGVkZWYgc3Ry
dWN0IF9XZWJLaXRET01CYXJJbmZvIHsKLSAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3Rh
bmNlOwotfSBXZWJLaXRET01CYXJJbmZvOwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NQmFy
SW5mb0NsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IFdl
YktpdERPTUJhckluZm9DbGFzczsKLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01CYXJJbmZvLCB3
ZWJraXRfZG9tX2Jhcl9pbmZvLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQotCi10eXBlZGVmIGVu
dW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1ZJU0lCTEUsCi19IFdlYktpdERPTUJhckluZm9Q
cm9wZXJ0aWVzOwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQotewotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJP
UF9WSVNJQkxFOiB7Ci0gICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIkJh
ckluZm8iKQotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBGQUxTRSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBHX09CSkVDVF9XQVJOX0lO
VkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9iYXJfaW5mb19jbGFzc19p
bml0KFdlYktpdERPTUJhckluZm9DbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RD
bGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBn
b2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fYmFyX2luZm9fZ2V0X3Byb3Bl
cnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3Ms
Ci0gICAgICAgIFBST1BfVklTSUJMRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oInZp
c2libGUiLAotICAgICAgICAgICAgImJhcl9pbmZvX3Zpc2libGUgLSByZW1vdmVkIGZyb20gV2Vi
S2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgInJlYWQtb25seSAgZ2Jvb2xlYW4gQmFy
SW5mby52aXNpYmxlIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKLSAgICAg
ICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci19Ci0K
LXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fYmFyX2luZm9faW5pdChXZWJLaXRET01CYXJJbmZvKikK
LXsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9iYXJfaW5mb19nZXRfdmlzaWJsZSh2b2lkKikK
LXsKLSAgICBnX3dhcm5pbmcoIlRoZSBCYXJJbmZvIHR5cGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9t
IHRoZSBET00gc3BlYywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7Ci0gICAgcmV0dXJu
IEZBTFNFOwotfQotCi0vLyBXZWJLaXRET01Db25zb2xlCi0KLXZvaWQqIHdlYmtpdF9kb21fY29u
c29sZV9nZXRfbWVtb3J5KFdlYktpdERPTUNvbnNvbGUqKQotewotICAgIGdfd2FybmluZygiJXM6
IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1
bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8v
IFdlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24KLQotV2ViS2l0RE9NQ1NTVmFsdWUqIHdlYmtp
dF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0eV9jc3NfdmFsdWUoV2ViS2l0
RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IGdjaGFyKikKLXsKLSAgICBnX3dhcm5pbmco
IiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhp
cyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiAwOwotfQot
Ci0vLyBXZWJLaXRET01Eb2N1bWVudAotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2RvY3VtZW50X2dl
dF93ZWJraXRfaGlkZGVuKFdlYktpdERPTURvY3VtZW50KikKLXsKLSAgICBnX3dhcm5pbmcoIiVz
OiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBm
dW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiBGQUxTRTsKLX0K
LQotZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF92aXNpYmlsaXR5X3N0YXRl
KFdlYktpdERPTURvY3VtZW50KikKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9u
YWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5v
dGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiBnX3N0cmR1cCgiIik7Ci19Ci0KLS8vIFdl
YktpdERPTUhUTUxEb2N1bWVudAotCi12b2lkIHdlYmtpdF9kb21faHRtbF9kb2N1bWVudF9vcGVu
KFdlYktpdERPTUhUTUxEb2N1bWVudCopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5j
dGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9l
cyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLX0KLQotLy8gV2ViS2l0RE9NSFRNTEVsZW1lbnQKLQot
dm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaXRlbV9pZChXZWJLaXRET01IVE1MRWxl
bWVudCosIGNvbnN0IGdjaGFyKikKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9u
YWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5v
dGhpbmcuIiwgX19mdW5jX18pOwotfQotCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRf
Z2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotewotICAgIGdfd2FybmluZygiJXM6
IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1
bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIGdfc3RyZHVwKCIi
KTsKLX0KLQotV2ViS2l0RE9NRE9NU2V0dGFibGVUb2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X2dldF9pdGVtX3JlZihXZWJLaXRET01IVE1MRWxlbWVudCopCi17Ci0gICAgZ193YXJu
aW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQs
IHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotV2ViS2l0RE9NRE9NU2V0dGFibGVUb2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVt
ZW50X2dldF9pdGVtX3Byb3AoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotewotICAgIGdfd2Fybmlu
ZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1fc2NvcGUoV2ViS2l0RE9N
SFRNTEVsZW1lbnQqLCBnYm9vbGVhbikKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0
aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuIiwgX19mdW5jX18pOwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfZWxl
bWVudF9nZXRfaXRlbV9zY29wZShXZWJLaXRET01IVE1MRWxlbWVudCopCi17Ci0gICAgZ193YXJu
aW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQs
IHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLSAgICByZXR1cm4gRkFM
U0U7Ci19Ci0KLXZvaWQqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3R5cGUoV2Vi
S2l0RE9NSFRNTEVsZW1lbnQqKQotewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25h
bGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90
aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vIFdlYktpdERPTUhUTUxT
dHlsZUVsZW1lbnQKLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9zZXRfc2Nv
cGVkKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqLCBnYm9vbGVhbikKLXsKLSAgICBnX3dhcm5p
bmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
dGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotfQotCi1nYm9vbGVhbiB3
ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfc2NvcGVkKFdlYktpdERPTUhUTUxTdHls
ZUVsZW1lbnQqKQotewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBf
X2Z1bmNfXyk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0vLyBXZWJLaXRET01IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24KLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUhUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbiB7Ci0gICAgV2ViS2l0RE9NSFRNTENvbGxlY3Rpb24gcGFyZW50X2luc3RhbmNl
OwotfSBXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb247Ci0KLXR5cGVkZWYgc3RydWN0
IF9XZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DbGFzcyB7Ci0gICAgV2ViS2l0RE9N
SFRNTENvbGxlY3Rpb25DbGFzcyBwYXJlbnRfY2xhc3M7Ci19IFdlYktpdERPTUhUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbkNsYXNzOwotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTUhUTUxQcm9wZXJ0
aWVzQ29sbGVjdGlvbiwgd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbiwgV0VC
S0lUX1RZUEVfRE9NX0hUTUxfQ09MTEVDVElPTikKLQotZW51bSB7Ci0gICAgSFRNTF9QUk9QRVJU
SUVTX0NPTExFQ1RJT05fUFJPUF8wLAotICAgIEhUTUxfUFJPUEVSVElFU19DT0xMRUNUSU9OX1BS
T1BfTEVOR1RILAotICAgIEhUTUxfUFJPUEVSVElFU19DT0xMRUNUSU9OX1BST1BfTkFNRVMsCi19
OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dl
dF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFs
dWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAg
IGNhc2UgSFRNTF9QUk9QRVJUSUVTX0NPTExFQ1RJT05fUFJPUF9MRU5HVEg6IHsKLSAgICAgICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWljcm9kYXRhIikKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGNhc2UgSFRNTF9QUk9QRVJUSUVTX0NPTExFQ1RJT05fUFJPUF9OQU1F
UzogewotICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJNaWNyb2RhdGEi
KQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21faHRtbF9wcm9w
ZXJ0aWVzX2NvbGxlY3Rpb25fY2xhc3NfaW5pdChXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb25DbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENs
YXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdl
dF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X3By
b3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xh
c3MsCi0gICAgICAgIEhUTUxfUFJPUEVSVElFU19DT0xMRUNUSU9OX1BST1BfTEVOR1RILAotICAg
ICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoImxlbmd0aCIsCi0gICAgICAgICAgICAiaHRtbF9wcm9w
ZXJ0aWVzX2NvbGxlY3Rpb25fbGVuZ3RoIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3Ro
aW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgIGd1bG9uZyBIVE1MUHJvcGVydGllc0NvbGxl
Y3Rpb24ubGVuZ3RoIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKLSAgICAg
ICAgICAgIDAsCi0gICAgICAgICAgICBHX01BWFVMT05HLAotICAgICAgICAgICAgMCwKLSAgICAg
ICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCi0gICAgICAgIEhUTUxfUFJPUEVSVElFU19DT0xM
RUNUSU9OX1BST1BfTkFNRVMsCi0gICAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QoIm5hbWVzIiwK
LSAgICAgICAgICAgICJodG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9uYW1lcyAtIHJlbW92ZWQg
ZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCi0gICAgICAgICAgICAicmVhZC1vbmx5ICBXZWJL
aXRET01ET01TdHJpbmdMaXN0KiBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24ubmFtZXMgLSByZW1v
dmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgV0VCS0lUX1RZUEVf
RE9NX0RPTV9TVFJJTkdfTElTVCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9u
X2luaXQoV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKiByZXF1ZXN0KQotewotfQot
Ci1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2l0
ZW0odm9pZCosIGd1bG9uZykKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGUgUHJvcGVydGllc0Nv
bGxlY3Rpb24gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCog
d2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9uYW1lZF9pdGVtKHZvaWQqLCBj
b25zdCBnY2hhciopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhlIFByb3BlcnRpZXNDb2xsZWN0
aW9uIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRv
ZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWd1bG9uZyB3ZWJr
aXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9sZW5ndGgodm9pZCopCi17Ci0g
ICAgZ193YXJuaW5nKCIlczogdGhlIFByb3BlcnRpZXNDb2xsZWN0aW9uIG9iamVjdCBoYXMgYmVl
biByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1
bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVdlYktpdERPTURPTVN0cmluZ0xpc3QqIHdlYmtp
dF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X25hbWVzKHZvaWQqKQotewotICAg
IGdfd2FybmluZygiJXM6IHRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5j
X18pOwotICAgIHJldHVybiAwOwotfQotCi0vLyBXZWJLaXRET01Ob2RlCi0KLVdlYktpdERPTU5h
bWVkTm9kZU1hcCogd2Via2l0X2RvbV9ub2RlX2dldF9hdHRyaWJ1dGVzKFdlYktpdERPTU5vZGUq
KQotewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1v
dmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21fbm9kZV9oYXNfYXR0cmli
dXRlcyhXZWJLaXRET01Ob2RlKikKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9u
YWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5v
dGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiBGQUxTRTsKLX0KLQotLy8gV2ViS2l0RE9N
TWVtb3J5SW5mbwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NTWVtb3J5SW5mbyB7Ci0gICAg
V2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX0gV2ViS2l0RE9NTWVtb3J5SW5mbzsK
LQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU1lbW9yeUluZm9DbGFzcyB7Ci0gICAgV2ViS2l0
RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfSBXZWJLaXRET01NZW1vcnlJbmZvQ2xhc3M7
Ci0KLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01NZW1vcnlJbmZvLCB3ZWJraXRfZG9tX21lbW9y
eV9pbmZvLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQotCi1lbnVtIHsKLSAgICBET01fTUVNT1JZ
X1BST1BfMCwKLSAgICBET01fTUVNT1JZX1BST1BfVE9UQUxfSlNfSEVBUF9TSVpFLAotICAgIERP
TV9NRU1PUllfUFJPUF9VU0VEX0pTX0hFQVBfU0laRSwKLSAgICBET01fTUVNT1JZX1BST1BfSlNf
SEVBUF9TSVpFX0xJTUlULAotfTsKLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZW1vcnlfaW5m
b19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUq
IHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsK
LSAgICBjYXNlIERPTV9NRU1PUllfUFJPUF9UT1RBTF9KU19IRUFQX1NJWkU6IHsKLSAgICAgICAg
Z192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIDApOwotICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJF
X05PVF9QUkVTRU5UKCJNZW1vcnlJbmZvIikKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNh
c2UgRE9NX01FTU9SWV9QUk9QX1VTRURfSlNfSEVBUF9TSVpFOiB7Ci0gICAgICAgIGdfdmFsdWVf
c2V0X3Vsb25nKHZhbHVlLCAwKTsKLSAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJF
U0VOVCgiTWVtb3J5SW5mbyIpCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIERPTV9N
RU1PUllfUFJPUF9KU19IRUFQX1NJWkVfTElNSVQ6IHsKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxv
bmcodmFsdWUsIDApOwotICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJN
ZW1vcnlJbmZvIikKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBz
cGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X21lbW9yeV9pbmZvX2NsYXNzX2luaXQoV2ViS2l0RE9NTWVtb3J5SW5mb0NsYXNzKiByZXF1ZXN0
Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0
X2RvbV9tZW1vcnlfaW5mb19nZXRfcHJvcGVydHk7Ci0KLSAgICBnX29iamVjdF9jbGFzc19pbnN0
YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKLSAgICAgICAgRE9NX01FTU9SWV9QUk9QX1RPVEFM
X0pTX0hFQVBfU0laRSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKCJ0b3RhbC1qcy1oZWFw
LXNpemUiLAotICAgICAgICAgICAgIm1lbW9yeV9pbmZvX3RvdGFsLWpzLWhlYXAtc2l6ZSAtIHJl
bW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCi0gICAgICAgICAgICAicmVhZC1vbmx5
ICBndWxvbmcgTWVtb3J5SW5mby50b3RhbC1qcy1oZWFwLXNpemUgLSByZW1vdmVkIGZyb20gV2Vi
S2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgMCwKLSAgICAgICAgICAgIEdfTUFYVUxP
TkcsCi0gICAgICAgICAgICAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7
Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCi0gICAg
ICAgIERPTV9NRU1PUllfUFJPUF9VU0VEX0pTX0hFQVBfU0laRSwKLSAgICAgICAgZ19wYXJhbV9z
cGVjX3Vsb25nKCJ1c2VkLWpzLWhlYXAtc2l6ZSIsCi0gICAgICAgICAgICAibWVtb3J5X2luZm9f
dXNlZC1qcy1oZWFwLXNpemUgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAot
ICAgICAgICAgICAgInJlYWQtb25seSAgZ3Vsb25nIE1lbW9yeUluZm8udXNlZC1qcy1oZWFwLXNp
emUgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgMCwK
LSAgICAgICAgICAgIEdfTUFYVUxPTkcsCi0gICAgICAgICAgICAwLAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0Q2xhc3MsCi0gICAgICAgIERPTV9NRU1PUllfUFJPUF9KU19IRUFQX1NJWkVfTElN
SVQsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygianMtaGVhcC1zaXplLWxpbWl0IiwKLSAg
ICAgICAgICAgICJtZW1vcnlfaW5mb19qcy1oZWFwLXNpemUtbGltaXQgLSByZW1vdmVkIGZyb20g
V2ViS2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgInJlYWQtb25seSAgZ3Vsb25nIE1l
bW9yeUluZm8uanMtaGVhcC1zaXplLWxpbWl0IC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBu
b3RoaW5nIiwKLSAgICAgICAgICAgIDAsCi0gICAgICAgICAgICBHX01BWFVMT05HLAotICAgICAg
ICAgICAgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotfQotCi1zdGF0
aWMgdm9pZCB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2luaXQoV2ViS2l0RE9NTWVtb3J5SW5mbyop
Ci17Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF90b3RhbF9qc19oZWFw
X3NpemUodm9pZCopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhlIE1lbW9yeUluZm8gb2JqZWN0
IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5n
LiIsIF9fZnVuY19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQotZ3Vsb25nIHdlYmtpdF9kb21fbWVt
b3J5X2luZm9fZ2V0X3VzZWRfanNfaGVhcF9zaXplKHZvaWQqKQotewotICAgIGdfd2FybmluZygi
JXM6IHRoZSBNZW1vcnlJbmZvIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF9qc19oZWFwX3NpemVfbGltaXQo
dm9pZCopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhlIE1lbW9yeUluZm8gb2JqZWN0IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9f
ZnVuY19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQotLy8gV2ViS2l0RE9NTWljcm9EYXRhSXRlbVZh
bHVlCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWUgewotICAg
IFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19IFdlYktpdERPTU1pY3JvRGF0YUl0
ZW1WYWx1ZTsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZUNs
YXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IFdlYktpdERP
TU1pY3JvRGF0YUl0ZW1WYWx1ZUNsYXNzOwotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTU1pY3Jv
RGF0YUl0ZW1WYWx1ZSwgd2Via2l0X2RvbV9taWNyb19kYXRhX2l0ZW1fdmFsdWUsIFdFQktJVF9U
WVBFX0RPTV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fbWljcm9fZGF0YV9pdGVt
X3ZhbHVlX2NsYXNzX2luaXQoV2ViS2l0RE9NTWljcm9EYXRhSXRlbVZhbHVlQ2xhc3MqKQotewot
fQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21pY3JvX2RhdGFfaXRlbV92YWx1ZV9pbml0KFdl
YktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZSopCi17Ci19Ci0KLS8vIFdlYktpdERPTVBlcmZvcm1h
bmNlCi0KLXZvaWQqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZ2V0X21lbW9yeShXZWJLaXRET01Q
ZXJmb3JtYW5jZSopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIs
IF9fZnVuY19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQotLy8gV2ViS2l0RE9NUHJvcGVydHlOb2Rl
TGlzdAotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdCB7Ci0gICAg
V2ViS2l0RE9NTm9kZUxpc3QgcGFyZW50X2luc3RhbmNlOwotfSBXZWJLaXRET01Qcm9wZXJ0eU5v
ZGVMaXN0OwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdENsYXNz
IHsKLSAgICBXZWJLaXRET01Ob2RlTGlzdENsYXNzIHBhcmVudF9jbGFzczsKLX0gV2ViS2l0RE9N
UHJvcGVydHlOb2RlTGlzdENsYXNzOwotCi1HX0RFRklORV9UWVBFKFdlYktpdERPTVByb3BlcnR5
Tm9kZUxpc3QsIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0LCBXRUJLSVRfVFlQRV9ET01f
Tk9ERV9MSVNUKQotCi1lbnVtIHsKLSAgICBQUk9QRVJUWV9OT0RFX0xJU1RfUFJPUF8wLAotICAg
IFBST1BFUlRZX05PREVfTElTVF9QUk9QX0xFTkdUSCwKLX07Ci0KLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAg
IHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJPUEVSVFlfTk9ERV9MSVNUX1BST1Bf
TEVOR1RIOiB7Ci0gICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCAwKTsKLSAgICAgICAg
V0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWljcm9kYXRhIikKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9jbGFz
c19pbml0KFdlYktpdERPTVByb3BlcnR5Tm9kZUxpc3RDbGFzcyogcmVxdWVzdENsYXNzKQotewot
ICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENs
YXNzKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fcHJvcGVy
dHlfbm9kZV9saXN0X2dldF9wcm9wZXJ0eTsKLQotICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ29iamVjdENsYXNzLAotICAgICAgICBQUk9QRVJUWV9OT0RFX0xJU1RfUFJPUF9M
RU5HVEgsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygibGVuZ3RoIiwKLSAgICAgICAgICAg
ICJwcm9wZXJ0eV9ub2RlX2xpc3RfbGVuZ3RoIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBu
b3RoaW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgIGd1bG9uZyBQcm9wZXJ0eU5vZGVMaXN0
Lmxlbmd0aCAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCi0gICAgICAgICAg
ICAwLAotICAgICAgICAgICAgR19NQVhVTE9ORywKLSAgICAgICAgICAgIDAsCi0gICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X2RvbV9w
cm9wZXJ0eV9ub2RlX2xpc3RfaW5pdChXZWJLaXRET01Qcm9wZXJ0eU5vZGVMaXN0KikKLXsKLX0K
LQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfaXRlbSh2b2lk
KiwgZ3Vsb25nKQotewotICAgIGdfd2FybmluZygiJXM6IHRoZSBQcm9wZXJ0eU5vZGVMaXN0IG9i
amVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90
aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9t
X3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfbGVuZ3RoKHZvaWQqKQotewotICAgIGdfd2FybmluZygi
JXM6IHRoZSBQcm9wZXJ0eU5vZGVMaXN0IG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2Vi
S2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWdkb3VibGUgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0
X3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCopCi17Ci0gICAgZ193YXJuaW5nKCIlczog
dGhlIEhUTUxNZWRpYUVsZW1lbnQ6c3RhcnQtdGltZSBwcm9wZXJ0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLWdkb3VibGUgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRf
Z2V0X2luaXRpYWxfdGltZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KikKLXsKLSAgICBnX3dh
cm5pbmcoIiVzOiB0aGUgSFRNTE1lZGlhRWxlbWVudDppbml0aWFsLXRpbWUgcHJvcGVydHkgaGFz
IGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwg
X19mdW5jX18pOwotICAgIHJldHVybiAwOwotfQotCi0vLyBXZWJLaXRET01IVE1MSGVhZEVsZW1l
bnQKLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1lbnRfZ2V0X3Byb2ZpbGUoV2Vi
S2l0RE9NSFRNTEhlYWRFbGVtZW50KiBzZWxmKQotewotICAgIGdfd2FybmluZygiJXM6IHRoZSBI
ZWFkRWxlbWVudCBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5j
dGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiBnX3N0cmR1cCgiIik7
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmlsZShXZWJL
aXRET01IVE1MSGVhZEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKLXsKLSAgICBn
X3dhcm5pbmcoIiVzOiB0aGUgSGVhZEVsZW1lbnQgb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJv
bSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLX0KLQot
Ly8gV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0KLWdjaGFyKiB3ZWJraXRfZG9tX3By
b2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fZ2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0
aW9uKiBzZWxmKQotewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBf
X2Z1bmNfXyk7Ci0gICAgcmV0dXJuIGdfc3RyZHVwKCIiKTsKLX0KLQotdm9pZCB3ZWJraXRfZG9t
X3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fc2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3Ry
dWN0aW9uKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUsIEdFcnJvcioqIGVycm9yKQotewotICAg
IGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20g
V2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uaAppbmRl
eCBjMDJjZTY5Li5iZDE1NjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
b2JqZWN0L1dlYktpdERPTUN1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dv
YmplY3QvV2ViS2l0RE9NQ3VzdG9tLmgKQEAgLTQxLDQ4NiArNDEsNiBAQCBXRUJLSVRfQVBJIGdi
b29sZWFuIHdlYmtpdF9kb21faHRtbF90ZXh0X2FyZWFfZWxlbWVudF9pc19lZGl0ZWQoV2ViS2l0
RE9NSFRNTFRleAogICovCiBXRUJLSVRfQVBJIGdib29sZWFuIHdlYmtpdF9kb21faHRtbF9pbnB1
dF9lbGVtZW50X2lzX2VkaXRlZChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50KiBpbnB1dCk7CiAK
LS8qKgotICogd2Via2l0X2RvbV9ibG9iX3dlYmtpdF9zbGljZToKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01CbG9iCi0gKiBAc3RhcnQ6IEEgI2dpbnQ2NAotICogQGVuZDogQSAjZ2ludDY0Ci0gKiBA
Y29udGVudF90eXBlOiBBICNnY2hhcgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToK
LSAqLwotV0VCS0lUX0FQSSBXZWJLaXRET01CbG9iKiB3ZWJraXRfZG9tX2Jsb2Jfd2Via2l0X3Ns
aWNlKFdlYktpdERPTUJsb2IqIHNlbGYsIGdpbnQ2NCBzdGFydCwgZ2ludDY0IGVuZCwgY29uc3Qg
Z2NoYXIqIGNvbnRlbnRfdHlwZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRf
Z2V0X2NsYXNzX25hbWU6Ci0gKiBAZWxlbWVudDogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqLwotV0VCS0lUX0FQSSBnY2hhciogd2Via2l0
X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIGVs
ZW1lbnQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9jbGFzc19uYW1l
OgotICogQGVsZW1lbnQ6IEEgI1dlYktpdERPTUhUTUxFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dj
aGFyCi0gKgotICovCi1XRUJLSVRfQVBJIHZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0
X2NsYXNzX25hbWUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IGdjaGFyKiB2
YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX2xpc3Q6
Ci0gKiBAZWxlbWVudDogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQKLSAqCi0gKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6Ci0gKgotICovCi1XRUJLSVRfQVBJIFdlYktpdERPTURPTVRva2VuTGlz
dCogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX2xpc3QoV2ViS2l0RE9NSFRNTEVs
ZW1lbnQqIGVsZW1lbnQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRf
ZGlzcGF0Y2hfZm9ybV9jaGFuZ2U6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEZvcm1FbGVt
ZW50Ci0gKgotICovCi1XRUJLSVRfQVBJIHZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVu
dF9kaXNwYXRjaF9mb3JtX2NoYW5nZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpOwot
Ci0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9ybV9pbnB1
dDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQKLSAqCi0gKi8KLVdFQktJ
VF9BUEkgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zvcm1faW5w
dXQoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9t
X2h0bWxfZWxlbWVudF9nZXRfaWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQK
LSAqCi0gKiBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBVc2Ugd2Via2l0X2RvbV9lbGVtZW50
X3NldF9pZCgpIGluc3RlYWQuCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIKLSAqCi0qKi8KLVdF
QktJVF9BUEkgZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pZChXZWJLaXRET01I
VE1MRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0
X2lkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dj
aGFyCi0gKgotICogVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gVXNlIHdlYmtpdF9kb21fZWxl
bWVudF9zZXRfaWQoKSBpbnN0ZWFkLgotICoKLSoqLwotV0VCS0lUX0FQSSB2b2lkIHdlYmtpdF9k
b21faHRtbF9lbGVtZW50X3NldF9pZChXZWJLaXRET01IVE1MRWxlbWVudCogc2VsZiwgY29uc3Qg
Z2NoYXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dl
dF9vdmVyZmxvdzoKLSAqIEBmbG93OiBBICNXZWJLaXRET01XZWJLaXROYW1lZEZsb3cKLSAqCi0g
KiBSZXR1cm5zOiBBICNnYm9vbGVhbgotICoKLSAqLwotV0VCS0lUX0FQSSBnYm9vbGVhbiB3ZWJr
aXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyZmxvdyhXZWJLaXRET01XZWJLaXROYW1l
ZEZsb3cqIGZsb3cpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0X3Jl
Z2lvbl9vdmVyZmxvdzoKLSAqIEBlbGVtZW50OiBBICNXZWJLaXRET01FbGVtZW50Ci0gKgotICog
UmV0dXJuczogQSAjZ2NoYXIKLSAqCi0gKi8KLVdFQktJVF9BUEkgZ2NoYXIqIHdlYmtpdF9kb21f
ZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyZmxvdyhXZWJLaXRET01FbGVtZW50KiBlbGVt
ZW50KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9jb250ZW50
X25vZGVzOgotICogQGZsb3c6IEEgI1dlYktpdERPTVdlYktpdE5hbWVkRmxvdwotICoKLSAqIFJl
dHVybnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0gKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NTm9k
ZUxpc3QqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X2NvbnRlbnRfbm9kZXMoV2Vi
S2l0RE9NV2ViS2l0TmFtZWRGbG93KiBmbG93KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3dlYmtp
dF9uYW1lZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRlbnRfbm9kZToKLSAqIEBmbG93OiBBICNX
ZWJLaXRET01XZWJLaXROYW1lZEZsb3cKLSAqIEBjb250ZW50X25vZGU6IEEgI1dlYktpdERPTU5v
ZGUKLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6Ci0gKgotICovCi1XRUJLSVRfQVBJ
IFdlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdp
b25zX2J5X2NvbnRlbnRfbm9kZShXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIGZsb3csIFdlYktp
dERPTU5vZGUqIGNvbnRlbnRfbm9kZSk7Ci0KLVdFQktJVF9BUEkgR1R5cGUgd2Via2l0X2RvbV9i
YXJfaW5mb19nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2Jhcl9pbmZvX2dl
dF92aXNpYmxlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUJhckluZm8KLSAqCi0gKiBUaGUgQmFy
SW5mbyB0eXBlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHNwZWMsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotKiovCi1X
RUJLSVRfQVBJIGdib29sZWFuIHdlYmtpdF9kb21fYmFyX2luZm9fZ2V0X3Zpc2libGUodm9pZCog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9jb25zb2xlX2dldF9tZW1vcnk6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NQ29uc29sZQotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVl
biByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0g
KiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6Ci0gKgotKiovCi1XRUJLSVRfQVBJIHZvaWQqIHdl
YmtpdF9kb21fY29uc29sZV9nZXRfbWVtb3J5KFdlYktpdERPTUNvbnNvbGUqIHNlbGYpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0eV9jc3Nf
dmFsdWU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbgotICogQHBy
b3BlcnR5TmFtZTogQSAjZ2NoYXIKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICog
UmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgotICoKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01D
U1NWYWx1ZSogd2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X2Nz
c192YWx1ZShXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiBzZWxmLCBjb25zdCBnY2hhciog
cHJvcGVydHlOYW1lKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRf
aGlkZGVuOgotICogQHNlbGY6IEEgI1dlYktpdERPTURvY3VtZW50Ci0gKgotICogVGhpcyBmdW5j
dGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9l
cyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotKiovCi1XRUJLSVRf
QVBJIGdib29sZWFuIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF9oaWRkZW4oV2ViS2l0
RE9NRG9jdW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dl
YmtpdF92aXNpYmlsaXR5X3N0YXRlOgotICogQHNlbGY6IEEgI1dlYktpdERPTURvY3VtZW50Ci0g
KgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRo
aXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgot
KiovCi1XRUJLSVRfQVBJIGdjaGFyKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfdmlz
aWJpbGl0eV9zdGF0ZShXZWJLaXRET01Eb2N1bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX2RvY3VtZW50X29wZW46Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTERvY3Vt
ZW50Ci0gKgotKiovCi1XRUJLSVRfQVBJIHZvaWQgd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X29w
ZW4oV2ViS2l0RE9NSFRNTERvY3VtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0
bWxfZWxlbWVudF9zZXRfaXRlbV9pZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxlbWVu
dAotICogQHZhbHVlOiBBICNnY2hhcgotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVl
biByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0q
Ki8KLVdFQktJVF9BUEkgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaXRlbV9pZChX
ZWJLaXRET01IVE1MRWxlbWVudCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9pZDoKLSAqIEBzZWxmOiBBICNXZWJL
aXRET01IVE1MRWxlbWVudAotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1v
dmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1
cm5zOiBBICNnY2hhcgotICoKLSoqLwotV0VCS0lUX0FQSSBnY2hhciogd2Via2l0X2RvbV9odG1s
X2VsZW1lbnRfZ2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3JlZjoKLSAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MRWxlbWVudAotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBS
ZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6Ci0gKgotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTURP
TVNldHRhYmxlVG9rZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9yZWYo
V2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X2dldF9pdGVtX3Byb3A6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQK
LSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
dGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIG5v
bmUpOgotICoKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01ET01TZXR0YWJsZVRva2VuTGlzdCog
d2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fcHJvcChXZWJLaXRET01IVE1MRWxlbWVu
dCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1fc2Nv
cGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2Jv
b2xlYW4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdl
YktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotKiovCi1XRUJLSVRfQVBJIHZv
aWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1fc2NvcGUoV2ViS2l0RE9NSFRNTEVs
ZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxf
ZWxlbWVudF9nZXRfaXRlbV9zY29wZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxlbWVu
dAotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0
LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5zOiBBICNnYm9vbGVh
bgotICoKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9n
ZXRfaXRlbV9zY29wZShXZWJLaXRET01IVE1MRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fdHlwZToKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MRWxlbWVudAotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5z
OiAodHJhbnNmZXIgbm9uZSk6Ci0gKgotKiovCi1XRUJLSVRfQVBJIHZvaWQqIHdlYmtpdF9kb21f
aHRtbF9lbGVtZW50X2dldF9pdGVtX3R5cGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYpOwot
Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZDoKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2dib29s
ZWFuCi0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSoqLwotV0VCS0lUX0FQSSB2b2lk
IHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50X3NldF9zY29wZWQoV2ViS2l0RE9NSFRNTFN0
eWxlRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
aHRtbF9zdHlsZV9lbGVtZW50X2dldF9zY29wZWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRN
TFN0eWxlRWxlbWVudAotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5z
OiBBICNnYm9vbGVhbgotICoKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbiB3ZWJraXRfZG9tX2h0
bWxfc3R5bGVfZWxlbWVudF9nZXRfc2NvcGVkKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqIHNl
bGYpOwotCi0KLVdFQktJVF9BUEkgR1R5cGUgd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29s
bGVjdGlvbl9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVy
dGllc19jb2xsZWN0aW9uX2l0ZW06Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uCi0gKiBAaW5kZXg6IEEgI2d1bG9uZwotICoKLSAqIFRoZSBQcm9wZXJ0aWVz
Q29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5j
dGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgotICoK
LSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGll
c19jb2xsZWN0aW9uX2l0ZW0odm9pZCogc2VsZiwgZ3Vsb25nIGluZGV4KTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX25hbWVkX2l0ZW06Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uCi0gKiBAbmFtZTogQSAjZ2No
YXIKLSAqCi0gKiBUaGUgUHJvcGVydGllc0NvbGxlY3Rpb24gb2JqZWN0IGhhcyBiZWVuIHJlbW92
ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVy
bnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0qKi8KLVdFQktJVF9BUEkgdm9pZCogd2Via2l0X2Rv
bV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9uYW1lZF9pdGVtKHZvaWQqIHNlbGYsIGNvbnN0
IGdjaGFyKiBuYW1lKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xs
ZWN0aW9uX2dldF9sZW5ndGg6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uCi0gKgotICogVGhlIFByb3BlcnRpZXNDb2xsZWN0aW9uIG9iamVjdCBoYXMgYmVl
biByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0g
KiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nIHdlYmtpdF9k
b21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X2xlbmd0aCh2b2lkKiBzZWxmKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9uYW1lczoK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24KLSAqCi0gKiBU
aGUgUHJvcGVydGllc0NvbGxlY3Rpb24gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKToKLSAqCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCogd2Vi
a2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfbmFtZXModm9pZCogc2VsZik7
Ci0KLS8qKgotICogd2Via2l0X2RvbV9ub2RlX2dldF9hdHRyaWJ1dGVzOgotICogQHNlbGY6IEEg
I1dlYktpdERPTU5vZGUKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3Zl
ZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJu
czogKHRyYW5zZmVyIG5vbmUpOgotICoKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01OYW1lZE5v
ZGVNYXAqIHdlYmtpdF9kb21fbm9kZV9nZXRfYXR0cmlidXRlcyhXZWJLaXRET01Ob2RlKiBzZWxm
KTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25vZGVfaGFzX2F0dHJpYnV0ZXM6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NTm9kZQotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1v
dmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1
cm5zOiBBICNnYm9vbGVhbgotICoKLSoqLwotV0VCS0lUX0FQSSBnYm9vbGVhbiB3ZWJraXRfZG9t
X25vZGVfaGFzX2F0dHJpYnV0ZXMoV2ViS2l0RE9NTm9kZSogc2VsZik7Ci0KLVdFQktJVF9BUEkg
R1R5cGUgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF90b3RhbF9qc19oZWFwX3NpemU6Ci0gKiBAc2VsZjog
QSAjV2ViS2l0RE9NTWVtb3J5SW5mbwotICoKLSAqIFRoZSBNZW1vcnlJbmZvIG9iamVjdCBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAq
Ci0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nIHdlYmtp
dF9kb21fbWVtb3J5X2luZm9fZ2V0X3RvdGFsX2pzX2hlYXBfc2l6ZSh2b2lkKiBzZWxmKTsKLQot
LyoqCi0gKiB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF91c2VkX2pzX2hlYXBfc2l6ZToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01NZW1vcnlJbmZvCi0gKgotICogVGhlIE1lbW9yeUluZm8gb2Jq
ZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Ro
aW5nLgotICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSoqLwotV0VCS0lUX0FQSSBndWxv
bmcgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdXNlZF9qc19oZWFwX3NpemUodm9pZCogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfanNfaGVhcF9zaXplX2xp
bWl0OgotICogQHNlbGY6IEEgI1dlYktpdERPTU1lbW9yeUluZm8KLSAqCi0gKiBUaGUgTWVtb3J5
SW5mbyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogQSAjZ3Vsb25nCi0gKgotKiovCi1XRUJLSVRf
QVBJIGd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF9qc19oZWFwX3NpemVfbGltaXQo
dm9pZCogc2VsZik7Ci0KLVdFQktJVF9BUEkgR1R5cGUgd2Via2l0X2RvbV9taWNyb19kYXRhX2l0
ZW1fdmFsdWVfZ2V0X3R5cGUodm9pZCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wZXJmb3JtYW5j
ZV9nZXRfbWVtb3J5OgotICogQHNlbGY6IEEgI1dlYktpdERPTVBlcmZvcm1hbmNlCi0gKgotICog
VGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVu
Y3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKLSAq
Ci0qKi8KLVdFQktJVF9BUEkgdm9pZCogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9nZXRfbWVtb3J5
KFdlYktpdERPTVBlcmZvcm1hbmNlKiBzZWxmKTsKLQotV0VCS0lUX0FQSSBHVHlwZSB3ZWJraXRf
ZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRf
ZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9pdGVtOgotICogQHNlbGY6IEEgI1dlYktpdERPTVByb3Bl
cnR5Tm9kZUxpc3QKLSAqIEBpbmRleDogQSAjZ3Vsb25nCi0gKgotICogVGhlIFByb3BlcnR5Tm9k
ZUxpc3Qgb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0qKi8K
LVdFQktJVF9BUEkgV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3Rf
aXRlbSh2b2lkKiBzZWxmLCBndWxvbmcgaW5kZXgpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcHJv
cGVydHlfbm9kZV9saXN0X2dldF9sZW5ndGg6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUHJvcGVy
dHlOb2RlTGlzdAotICoKLSAqIFRoZSBQcm9wZXJ0eU5vZGVMaXN0IG9iamVjdCBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBS
ZXR1cm5zOiBBICNndWxvbmcKLSAqCi0qKi8KLVdFQktJVF9BUEkgZ3Vsb25nIHdlYmtpdF9kb21f
cHJvcGVydHlfbm9kZV9saXN0X2dldF9sZW5ndGgodm9pZCogc2VsZik7Ci0KLS8qKgotICogd2Vi
a2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0X3RpbWU6Ci0gKiBAc2VsZjogQSAj
SFRNTE1lZGlhRWxlbWVudAotICoKLSAqIFRoZSBIVE1MTWVkaWFFbGVtZW50OnN0YXJ0LXRpbWUg
cHJvcGVydHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogQSAjZ2RvdWJsZQotICoKLSoqLwotV0VCS0lUX0FQ
SSBnZG91YmxlIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9zdGFydF90aW1lKFdl
YktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRt
bF9tZWRpYV9lbGVtZW50X2dldF9pbml0aWFsX3RpbWU6Ci0gKiBAc2VsZjogQSAjSFRNTE1lZGlh
RWxlbWVudAotICoKLSAqIFRoZSBIVE1MTWVkaWFFbGVtZW50OmluaXRpYWwtdGltZSBwcm9wZXJ0
eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGlu
Zy4KLSAqCi0gKiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotKiovCi1XRUJLSVRfQVBJIGdkb3Vi
bGUgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2luaXRpYWxfdGltZShXZWJLaXRE
T01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfaGVh
ZF9lbGVtZW50X2dldF9wcm9maWxlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxIZWFkRWxl
bWVudAotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2Vi
S2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5zOiBBIHN0cmlu
ZwotICoKLSoqLwotV0VCS0lUX0FQSSBnY2hhciogd2Via2l0X2RvbV9odG1sX2hlYWRfZWxlbWVu
dF9nZXRfcHJvZmlsZShXZWJLaXRET01IVE1MSGVhZEVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAq
IHdlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1lbnRfc2V0X3Byb2ZpbGU6Ci0gKiBAc2VsZjogQSAj
V2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogVGhp
cyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLgotICoKLSoqLwotV0VCS0lUX0FQSSB2b2lkIHdlYmtpdF9kb21faHRt
bF9oZWFkX2VsZW1lbnRfc2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50KiBzZWxm
LCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19p
bnN0cnVjdGlvbl9nZXRfZGF0YToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01Qcm9jZXNzaW5nSW5z
dHJ1Y3Rpb24KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9t
IFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogQSBz
dHJpbmcKLSAqCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19p
bnN0cnVjdGlvbl9nZXRfZGF0YShXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9zZXRfZGF0YToK
LSAqIEBzZWxmOiBBICNXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KLSAqIEB2YWx1ZTog
QSAjZ2NoYXIKLSAqIEBlcnJvcjogI0dFcnJvcgotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBo
YXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4K
LSAqCi0qKi8KLVdFQktJVF9BUEkgdm9pZCB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rp
b25fc2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBzZWxmLCBjb25zdCBn
Y2hhciogdmFsdWUsIEdFcnJvcioqIGVycm9yKTsKLQogR19FTkRfREVDTFMKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3Rv
bS5zeW1ib2xzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0
b20uc3ltYm9scwppbmRleCBhMzI2MjQ4Li4yODZjMTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5zeW1ib2xzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLnN5bWJvbHMKQEAgLTEs
NTAgKzEsMiBAQAogZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX3RleHRfYXJlYV9lbGVtZW50X2lz
X2VkaXRlZChXZWJLaXRET01IVE1MVGV4dEFyZWFFbGVtZW50KikKIGdib29sZWFuIHdlYmtpdF9k
b21faHRtbF9pbnB1dF9lbGVtZW50X2lzX2VkaXRlZChXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50
KikKLVdlYktpdERPTUJsb2IqIHdlYmtpdF9kb21fYmxvYl93ZWJraXRfc2xpY2UoV2ViS2l0RE9N
QmxvYiosIGdpbnQ2NCwgZ2ludDY0LCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9o
dG1sX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotdm9pZCB3
ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfY2xhc3NfbmFtZShXZWJLaXRET01IVE1MRWxlbWVu
dCosIGNvbnN0IGdjaGFyKikKLVdlYktpdERPTURPTVRva2VuTGlzdCogd2Via2l0X2RvbV9odG1s
X2VsZW1lbnRfZ2V0X2NsYXNzX2xpc3QoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotdm9pZCB3ZWJr
aXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zvcm1fY2hhbmdlKFdlYktpdERPTUhU
TUxGb3JtRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0
Y2hfZm9ybV9pbnB1dChXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqKQotZ2Jvb2xlYW4gd2Via2l0
X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfb3ZlcmZsb3coV2ViS2l0RE9NV2ViS2l0TmFtZWRG
bG93KikKLWdjaGFyKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3dlYmtpdF9yZWdpb25fb3ZlcmZs
b3coV2ViS2l0RE9NRWxlbWVudCopCi1XZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJr
aXRfbmFtZWRfZmxvd19nZXRfY29udGVudF9ub2RlcyhXZWJLaXRET01XZWJLaXROYW1lZEZsb3cq
KQotV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X3Jl
Z2lvbnNfYnlfY29udGVudF9ub2RlKFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyosIFdlYktpdERP
TU5vZGUqKQotR1R5cGUgd2Via2l0X2RvbV9iYXJfaW5mb19nZXRfdHlwZSh2b2lkKQotZ2Jvb2xl
YW4gd2Via2l0X2RvbV9iYXJfaW5mb19nZXRfdmlzaWJsZSh2b2lkKikKLXZvaWQqIHdlYmtpdF9k
b21fY29uc29sZV9nZXRfbWVtb3J5KFdlYktpdERPTUNvbnNvbGUqKQotV2ViS2l0RE9NQ1NTVmFs
dWUqIHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0eV9jc3NfdmFs
dWUoV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IGdjaGFyKikKLWdib29sZWFu
IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF9oaWRkZW4oV2ViS2l0RE9NRG9jdW1lbnQq
KQotZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF92aXNpYmlsaXR5X3N0YXRl
KFdlYktpdERPTURvY3VtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X29wZW4o
V2ViS2l0RE9NSFRNTERvY3VtZW50KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0
X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQot
V2ViS2l0RE9NRE9NU2V0dGFibGVUb2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dl
dF9pdGVtX3JlZihXZWJLaXRET01IVE1MRWxlbWVudCopCi1XZWJLaXRET01ET01TZXR0YWJsZVRv
a2VuTGlzdCogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fcHJvcChXZWJLaXRET01I
VE1MRWxlbWVudCopCi12b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9pdGVtX3Njb3Bl
KFdlYktpdERPTUhUTUxFbGVtZW50KiwgZ2Jvb2xlYW4pCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0
bWxfZWxlbWVudF9nZXRfaXRlbV9zY29wZShXZWJLaXRET01IVE1MRWxlbWVudCopCi12b2lkKiB3
ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV90eXBlKFdlYktpdERPTUhUTUxFbGVtZW50
KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZChXZWJLaXRE
T01IVE1MU3R5bGVFbGVtZW50KiwgZ2Jvb2xlYW4pCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxf
c3R5bGVfZWxlbWVudF9nZXRfc2NvcGVkKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqKQotR1R5
cGUgd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfdHlwZSh2b2lkKQot
V2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pdGVt
KHZvaWQqLCBndWxvbmcpCi12b2lkKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0
aW9uX25hbWVkX2l0ZW0odm9pZCosIGNvbnN0IGdjaGFyKikKLWd1bG9uZyB3ZWJraXRfZG9tX2h0
bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9sZW5ndGgodm9pZCopCi1XZWJLaXRET01ET01T
dHJpbmdMaXN0KiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9uYW1l
cyh2b2lkKikKLVdlYktpdERPTU5hbWVkTm9kZU1hcCogd2Via2l0X2RvbV9ub2RlX2dldF9hdHRy
aWJ1dGVzKFdlYktpdERPTU5vZGUqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9ub2RlX2hhc19hdHRy
aWJ1dGVzKFdlYktpdERPTU5vZGUqKQotR1R5cGUgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRf
dHlwZSh2b2lkKQotZ3Vsb25nIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3RvdGFsX2pzX2hl
YXBfc2l6ZSh2b2lkKikKLWd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF91c2VkX2pz
X2hlYXBfc2l6ZSh2b2lkKikKLWd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF9qc19o
ZWFwX3NpemVfbGltaXQodm9pZCopCi1HVHlwZSB3ZWJraXRfZG9tX21pY3JvX2RhdGFfaXRlbV92
YWx1ZV9nZXRfdHlwZSh2b2lkKQotdm9pZCogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9nZXRfbWVt
b3J5KFdlYktpdERPTVBlcmZvcm1hbmNlKikKLUdUeXBlIHdlYmtpdF9kb21fcHJvcGVydHlfbm9k
ZV9saXN0X2dldF90eXBlKHZvaWQpCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3Byb3BlcnR5
X25vZGVfbGlzdF9pdGVtKHZvaWQqLCBndWxvbmcpCi1ndWxvbmcgd2Via2l0X2RvbV9wcm9wZXJ0
eV9ub2RlX2xpc3RfZ2V0X2xlbmd0aCh2b2lkKikKLWdkb3VibGUgd2Via2l0X2RvbV9odG1sX21l
ZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0X3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCopCi1n
ZG91YmxlIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9pbml0aWFsX3RpbWUoV2Vi
S2l0RE9NSFRNTE1lZGlhRWxlbWVudCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2hlYWRfZWxl
bWVudF9nZXRfcHJvZmlsZShXZWJLaXRET01IVE1MSGVhZEVsZW1lbnQqKQotdm9pZCB3ZWJraXRf
ZG9tX2h0bWxfaGVhZF9lbGVtZW50X3NldF9wcm9maWxlKFdlYktpdERPTUhUTUxIZWFkRWxlbWVu
dCosIGNvbnN0IGdjaGFyKikKLWdjaGFyKiB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rp
b25fZ2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKikKLXZvaWQgd2Via2l0
X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX3NldF9kYXRhKFdlYktpdERPTVByb2Nlc3NpbmdJ
bnN0cnVjdGlvbiosIGNvbnN0IGdjaGFyKiwgR0Vycm9yKiopCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjE1NTRmCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmNwcApA
QCAtMCwwICsxLDU3OCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4K
KyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRET01EZXByZWNhdGVkLmgiCisKKyNpZiAhZGVmaW5lZChXRUJLSVRfRElT
QUJMRV9ERVBSRUNBVEVEKQorCisjaW5jbHVkZSAiV2ViS2l0RE9NQmxvYi5oIgorI2luY2x1ZGUg
IldlYktpdERPTURPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJXZWJLaXRET01IVE1MQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIldlYktpdERPTUhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUg
IldlYktpdERPTUhUTUxIZWFkRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYktpdERPTU5vZGVMaXN0
LmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NUHJp
dmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIldlYktpdERPTVdlYktpdE5hbWVkRmxvdy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitXZWJLaXRET01CbG9iKiB3ZWJraXRfZG9tX2Jsb2Jfd2Via2l0X3NsaWNlKFdlYktp
dERPTUJsb2IqIHNlbGYsIGdpbnQ2NCBzdGFydCwgZ2ludDY0IGVuZCwgY29uc3QgZ2NoYXIqIGNv
bnRlbnRfdHlwZSkKK3sKKyAgICByZXR1cm4gd2Via2l0X2RvbV9ibG9iX3NsaWNlKHNlbGYsIHN0
YXJ0LCBlbmQsIGNvbnRlbnRfdHlwZSk7Cit9CisKK2djaGFyKiB3ZWJraXRfZG9tX2h0bWxfZWxl
bWVudF9nZXRfaWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgZ193YXJu
aW5nKCJUaGUgZ2V0X2lkIG1ldGhvZCBvbiBXZWJLaXRET01IVE1MRWxlbWVudCBpcyBkZXByZWNh
dGVkLiBVc2UgdGhlIG9uZSBpbiBXZWJLaXRET01FbGVtZW50IGluc3RlYWQuIik7CisgICAgcmV0
dXJuIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfaWQoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQp
KTsKK30KKwordm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaWQoV2ViS2l0RE9NSFRN
TEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IGdjaGFyKiB2YWx1ZSkKK3sKKyAgICBnX3dhcm5pbmco
IlRoZSBzZXRfaWQgbWV0aG9kIG9uIFdlYktpdERPTUhUTUxFbGVtZW50IGlzIGRlcHJlY2F0ZWQu
IFVzZSB0aGUgb25lIGluIFdlYktpdERPTUVsZW1lbnQgaW5zdGVhZC4iKTsKKyAgICB3ZWJraXRf
ZG9tX2VsZW1lbnRfc2V0X2lkKFdFQktJVF9ET01fRUxFTUVOVChlbGVtZW50KSwgdmFsdWUpOwor
fQorCitnY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUoV2ViS2l0
RE9NSFRNTEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdlYmtpdF9kb21fZWxlbWVu
dF9nZXRfY2xhc3NfbmFtZShXRUJLSVRfRE9NX0VMRU1FTlQoZWxlbWVudCkpOworfQorCit2b2lk
IHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9jbGFzc19uYW1lKFdlYktpdERPTUhUTUxFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBnY2hhciogdmFsdWUpCit7CisgICAgd2Via2l0X2RvbV9lbGVt
ZW50X3NldF9jbGFzc19uYW1lKFdFQktJVF9ET01fRUxFTUVOVChlbGVtZW50KSwgdmFsdWUpOwor
fQorCitXZWJLaXRET01ET01Ub2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9j
bGFzc19saXN0KFdlYktpdERPTUhUTUxFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiB3
ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsYXNzX2xpc3QoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1l
bnQpKTsKK30KKwordm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zv
cm1fY2hhbmdlKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2VsZikKK3sKKyAgICBnX3dhcm5p
bmcoIlRoZSBvbmZvcm1jaGFuZ2UgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20g
dGhlIERPTSBzcGVjLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKK30KKwordm9pZCB3
ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zvcm1faW5wdXQoV2ViS2l0RE9N
SFRNTEZvcm1FbGVtZW50KiBzZWxmKQoreworICAgIGdfd2FybmluZygiVGhlIG9uZm9ybWlucHV0
IGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gc3BlYywgdGhpcyBm
dW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7Cit9CisKK2dib29sZWFuIHdlYmtpdF9kb21fd2Via2l0
X25hbWVkX2Zsb3dfZ2V0X292ZXJmbG93KFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyogZmxvdykK
K3sKKyAgICBnX3dhcm5pbmcoIlRoZSBXZWJLaXRET01XZWJLaXROYW1lZEZsb3c6Om92ZXJmbG93
IHByb3BlcnR5IGhhcyBiZWVuIHJlbmFtZWQgdG8gV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Ojpv
dmVyc2V0LiBQbGVhc2UgdXBkYXRlIHlvdXIgY29kZSB0byB1c2UgdGhlIG5ldyBuYW1lLiIpOwor
ICAgIHJldHVybiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyc2V0KGZsb3cp
OworfQorCitnY2hhciogd2Via2l0X2RvbV9lbGVtZW50X2dldF93ZWJraXRfcmVnaW9uX292ZXJm
bG93KFdlYktpdERPTUVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdlYmtpdF9kb21f
ZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyc2V0KGVsZW1lbnQpOworfQorCitXZWJLaXRE
T01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudF9ub2Rl
cyhXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAgICByZXR1cm4gd2Vi
a2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudChuYW1lZEZsb3cpOworCit9CisK
K1dlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdp
b25zX2J5X2NvbnRlbnRfbm9kZShXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywg
V2ViS2l0RE9NTm9kZSogY29udGVudE5vZGUpCit7CisgICAgcmV0dXJuIHdlYmtpdF9kb21fd2Vi
a2l0X25hbWVkX2Zsb3dfZ2V0X3JlZ2lvbnNfYnlfY29udGVudChuYW1lZEZsb3csIGNvbnRlbnRO
b2RlKTsKK30KKworLy8gV2ViS2l0RE9NQmFySW5mbworCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
RE9NQmFySW5mbyB7CisgICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK30gV2Vi
S2l0RE9NQmFySW5mbzsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUJhckluZm9DbGFzcyB7
CisgICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfSBXZWJLaXRET01CYXJJ
bmZvQ2xhc3M7CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0RE9NQmFySW5mbywgd2Via2l0X2RvbV9i
YXJfaW5mbywgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkKKwordHlwZWRlZiBlbnVtIHsKKyAgICBQ
Uk9QXzAsCisgICAgUFJPUF9WSVNJQkxFLAorfSBXZWJLaXRET01CYXJJbmZvUHJvcGVydGllczsK
Kworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9iYXJfaW5mb19nZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3Bl
YykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfVklTSUJMRTog
eworICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJCYXJJbmZvIikKKyAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgRkFMU0UpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fYmFyX2luZm9fY2xhc3NfaW5pdChXZWJLaXRE
T01CYXJJbmZvQ2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmpl
Y3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNz
LT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF9wcm9wZXJ0eTsKKworICAg
IGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICBQ
Uk9QX1ZJU0lCTEUsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJ2aXNpYmxlIiwKKyAg
ICAgICAgICAgICJiYXJfaW5mb192aXNpYmxlIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBu
b3RoaW5nIiwKKyAgICAgICAgICAgICJyZWFkLW9ubHkgIGdib29sZWFuIEJhckluZm8udmlzaWJs
ZSAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgICBGQUxT
RSwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX2Jhcl9pbmZvX2luaXQoV2ViS2l0RE9NQmFySW5mbyopCit7Cit9CisKK2di
b29sZWFuIHdlYmtpdF9kb21fYmFyX2luZm9fZ2V0X3Zpc2libGUodm9pZCopCit7CisgICAgZ193
YXJuaW5nKCJUaGUgQmFySW5mbyB0eXBlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHNw
ZWMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOworICAgIHJldHVybiBGQUxTRTsKK30K
KworLy8gV2ViS2l0RE9NQ29uc29sZQorCit2b2lkKiB3ZWJraXRfZG9tX2NvbnNvbGVfZ2V0X21l
bW9yeShXZWJLaXRET01Db25zb2xlKikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0
aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCisvLyBXZWJLaXRET01D
U1NTdHlsZURlY2xhcmF0aW9uCisKK1dlYktpdERPTUNTU1ZhbHVlKiB3ZWJraXRfZG9tX2Nzc19z
dHlsZV9kZWNsYXJhdGlvbl9nZXRfcHJvcGVydHlfY3NzX3ZhbHVlKFdlYktpdERPTUNTU1N0eWxl
RGVjbGFyYXRpb24qLCBjb25zdCBnY2hhciopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBm
dW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4gMDsKK30KKworLy8gV2ViS2l0
RE9NRG9jdW1lbnQKKworZ2Jvb2xlYW4gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfd2Via2l0X2hp
ZGRlbihXZWJLaXRET01Eb2N1bWVudCopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5j
dGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9l
cyBub3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK2djaGFyKiB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfdmlzaWJpbGl0eV9zdGF0ZShXZWJLaXRET01E
b2N1bWVudCopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9f
ZnVuY19fKTsKKyAgICByZXR1cm4gZ19zdHJkdXAoIiIpOworfQorCisvLyBXZWJLaXRET01IVE1M
RG9jdW1lbnQKKwordm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfb3BlbihXZWJLaXRET01I
VE1MRG9jdW1lbnQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBo
YXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4i
LCBfX2Z1bmNfXyk7Cit9CisKKy8vIFdlYktpdERPTUhUTUxFbGVtZW50CisKK3ZvaWQgd2Via2l0
X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqLCBjb25z
dCBnY2hhciopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9f
ZnVuY19fKTsKK30KKworZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX2lk
KFdlYktpdERPTUhUTUxFbGVtZW50KikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0
aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiBnX3N0cmR1cCgiIik7Cit9CisKK1dl
YktpdERPTURPTVNldHRhYmxlVG9rZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRf
aXRlbV9yZWYoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRo
aXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0
aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYktp
dERPTURPTVNldHRhYmxlVG9rZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRl
bV9wcm9wKFdlYktpdERPTUhUTUxFbGVtZW50KikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlz
IGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlv
biBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCit2b2lkIHdl
YmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9pdGVtX3Njb3BlKFdlYktpdERPTUhUTUxFbGVtZW50
KiwgZ2Jvb2xlYW4pCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIs
IF9fZnVuY19fKTsKK30KKworZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0
ZW1fc2NvcGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRo
aXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0
aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCit2
b2lkKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV90eXBlKFdlYktpdERPTUhUTUxF
bGVtZW50KikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19m
dW5jX18pOworICAgIHJldHVybiAwOworfQorCisvLyBXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50
CisKK3ZvaWQgd2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZChXZWJLaXRE
T01IVE1MU3R5bGVFbGVtZW50KiwgZ2Jvb2xlYW4pCit7CisgICAgZ193YXJuaW5nKCIlczogdGhp
cyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKK30KKworZ2Jvb2xlYW4gd2Via2l0X2RvbV9o
dG1sX3N0eWxlX2VsZW1lbnRfZ2V0X3Njb3BlZChXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50KikK
K3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3Zl
ZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwor
ICAgIHJldHVybiBGQUxTRTsKK30KKworLy8gV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24g
eworICAgIFdlYktpdERPTUhUTUxDb2xsZWN0aW9uIHBhcmVudF9pbnN0YW5jZTsKK30gV2ViS2l0
RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOworCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ2xhc3MgeworICAgIFdlYktpdERPTUhUTUxDb2xsZWN0
aW9uQ2xhc3MgcGFyZW50X2NsYXNzOworfSBXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rp
b25DbGFzczsKKworR19ERUZJTkVfVFlQRShXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24sIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb24sIFdFQktJVF9UWVBFX0RP
TV9IVE1MX0NPTExFQ1RJT04pCisKK2VudW0geworICAgIEhUTUxfUFJPUEVSVElFU19DT0xMRUNU
SU9OX1BST1BfMCwKKyAgICBIVE1MX1BST1BFUlRJRVNfQ09MTEVDVElPTl9QUk9QX0xFTkdUSCwK
KyAgICBIVE1MX1BST1BFUlRJRVNfQ09MTEVDVElPTl9QUk9QX05BTUVTLAorfTsKKworc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwc3BlYykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIEhUTUxf
UFJPUEVSVElFU19DT0xMRUNUSU9OX1BST1BfTEVOR1RIOiB7CisgICAgICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIk1pY3JvZGF0YSIpCisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIEhUTUxfUFJPUEVSVElFU19DT0xMRUNUSU9OX1BST1BfTkFNRVM6IHsKKyAgICAg
ICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWljcm9kYXRhIikKKyAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJ
RF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xs
ZWN0aW9uX2NsYXNzX2luaXQoV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ2xhc3Mq
IHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JK
RUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9wcm9wZXJ0eTsKKwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAg
ICBIVE1MX1BST1BFUlRJRVNfQ09MTEVDVElPTl9QUk9QX0xFTkdUSCwKKyAgICAgICAgZ19wYXJh
bV9zcGVjX3Vsb25nKCJsZW5ndGgiLAorICAgICAgICAgICAgImh0bWxfcHJvcGVydGllc19jb2xs
ZWN0aW9uX2xlbmd0aCAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisgICAg
ICAgICAgICAicmVhZC1vbmx5ICBndWxvbmcgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmxlbmd0
aCAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgICAwLAor
ICAgICAgICAgICAgR19NQVhVTE9ORywKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBXRUJL
SVRfUEFSQU1fUkVBREFCTEUpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVy
dHkoZ29iamVjdENsYXNzLAorICAgICAgICBIVE1MX1BST1BFUlRJRVNfQ09MTEVDVElPTl9QUk9Q
X05BTUVTLAorICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJuYW1lcyIsCisgICAgICAgICAg
ICAiaHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbmFtZXMgLSByZW1vdmVkIGZyb20gV2ViS2l0
LCBkb2VzIG5vdGhpbmciLAorICAgICAgICAgICAgInJlYWQtb25seSAgV2ViS2l0RE9NRE9NU3Ry
aW5nTGlzdCogSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLm5hbWVzIC0gcmVtb3ZlZCBmcm9tIFdl
YktpdCwgZG9lcyBub3RoaW5nIiwKKyAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPTV9ET01fU1RS
SU5HX0xJU1QsCisgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pbml0KFdlYktp
dERPTUhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiogcmVxdWVzdCkKK3sKK30KKworV2ViS2l0RE9N
Tm9kZSogd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pdGVtKHZvaWQqLCBn
dWxvbmcpCit7CisgICAgZ193YXJuaW5nKCIlczogdGhlIFByb3BlcnRpZXNDb2xsZWN0aW9uIG9i
amVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90
aGluZy4iLCBfX2Z1bmNfXyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQqIHdlYmtpdF9kb21f
aHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbmFtZWRfaXRlbSh2b2lkKiwgY29uc3QgZ2NoYXIq
KQoreworICAgIGdfd2FybmluZygiJXM6IHRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3Qg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcu
IiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCitndWxvbmcgd2Via2l0X2RvbV9odG1s
X3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfbGVuZ3RoKHZvaWQqKQoreworICAgIGdfd2Fybmlu
ZygiJXM6IHRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBm
cm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAg
IHJldHVybiAwOworfQorCitXZWJLaXRET01ET01TdHJpbmdMaXN0KiB3ZWJraXRfZG9tX2h0bWxf
cHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9uYW1lcyh2b2lkKikKK3sKKyAgICBnX3dhcm5pbmco
IiVzOiB0aGUgUHJvcGVydGllc0NvbGxlY3Rpb24gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJv
bSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworLy8gV2ViS2l0RE9NTm9kZQorCitXZWJLaXRET01OYW1lZE5vZGVNYXAq
IHdlYmtpdF9kb21fbm9kZV9nZXRfYXR0cmlidXRlcyhXZWJLaXRET01Ob2RlKikKK3sKKyAgICBn
X3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdl
YktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVy
biAwOworfQorCitnYm9vbGVhbiB3ZWJraXRfZG9tX25vZGVfaGFzX2F0dHJpYnV0ZXMoV2ViS2l0
RE9NTm9kZSopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9f
ZnVuY19fKTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKKy8vIFdlYktpdERPTU1lbW9yeUluZm8K
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU1lbW9yeUluZm8geworICAgIFdlYktpdERPTU9i
amVjdCBwYXJlbnRfaW5zdGFuY2U7Cit9IFdlYktpdERPTU1lbW9yeUluZm87CisKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRET01NZW1vcnlJbmZvQ2xhc3MgeworICAgIFdlYktpdERPTU9iamVjdENs
YXNzIHBhcmVudF9jbGFzczsKK30gV2ViS2l0RE9NTWVtb3J5SW5mb0NsYXNzOworCisKK0dfREVG
SU5FX1RZUEUoV2ViS2l0RE9NTWVtb3J5SW5mbywgd2Via2l0X2RvbV9tZW1vcnlfaW5mbywgV0VC
S0lUX1RZUEVfRE9NX09CSkVDVCkKKworZW51bSB7CisgICAgRE9NX01FTU9SWV9QUk9QXzAsCisg
ICAgRE9NX01FTU9SWV9QUk9QX1RPVEFMX0pTX0hFQVBfU0laRSwKKyAgICBET01fTUVNT1JZX1BS
T1BfVVNFRF9KU19IRUFQX1NJWkUsCisgICAgRE9NX01FTU9SWV9QUk9QX0pTX0hFQVBfU0laRV9M
SU1JVCwKK307CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1Bh
cmFtU3BlYyogcHNwZWMpCit7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBE
T01fTUVNT1JZX1BST1BfVE9UQUxfSlNfSEVBUF9TSVpFOiB7CisgICAgICAgIGdfdmFsdWVfc2V0
X3Vsb25nKHZhbHVlLCAwKTsKKyAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VO
VCgiTWVtb3J5SW5mbyIpCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERPTV9NRU1P
UllfUFJPUF9VU0VEX0pTX0hFQVBfU0laRTogeworICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2
YWx1ZSwgMCk7CisgICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIk1lbW9y
eUluZm8iKQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBET01fTUVNT1JZX1BST1Bf
SlNfSEVBUF9TSVpFX0xJTUlUOiB7CisgICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCAw
KTsKKyAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVtb3J5SW5mbyIp
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9X
QVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZW1vcnlfaW5m
b19jbGFzc19pbml0KFdlYktpdERPTU1lbW9yeUluZm9DbGFzcyogcmVxdWVzdENsYXNzKQorewor
ICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENs
YXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fbWVtb3J5
X2luZm9fZ2V0X3Byb3BlcnR5OworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0Q2xhc3MsCisgICAgICAgIERPTV9NRU1PUllfUFJPUF9UT1RBTF9KU19IRUFQX1NJ
WkUsCisgICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygidG90YWwtanMtaGVhcC1zaXplIiwKKyAg
ICAgICAgICAgICJtZW1vcnlfaW5mb190b3RhbC1qcy1oZWFwLXNpemUgLSByZW1vdmVkIGZyb20g
V2ViS2l0LCBkb2VzIG5vdGhpbmciLAorICAgICAgICAgICAgInJlYWQtb25seSAgZ3Vsb25nIE1l
bW9yeUluZm8udG90YWwtanMtaGVhcC1zaXplIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBu
b3RoaW5nIiwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBHX01BWFVMT05HLAorICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICBET01fTUVN
T1JZX1BST1BfVVNFRF9KU19IRUFQX1NJWkUsCisgICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygi
dXNlZC1qcy1oZWFwLXNpemUiLAorICAgICAgICAgICAgIm1lbW9yeV9pbmZvX3VzZWQtanMtaGVh
cC1zaXplIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKKyAgICAgICAgICAg
ICJyZWFkLW9ubHkgIGd1bG9uZyBNZW1vcnlJbmZvLnVzZWQtanMtaGVhcC1zaXplIC0gcmVtb3Zl
ZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAg
ICBHX01BWFVMT05HLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENs
YXNzLAorICAgICAgICBET01fTUVNT1JZX1BST1BfSlNfSEVBUF9TSVpFX0xJTUlULAorICAgICAg
ICBnX3BhcmFtX3NwZWNfdWxvbmcoImpzLWhlYXAtc2l6ZS1saW1pdCIsCisgICAgICAgICAgICAi
bWVtb3J5X2luZm9fanMtaGVhcC1zaXplLWxpbWl0IC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9l
cyBub3RoaW5nIiwKKyAgICAgICAgICAgICJyZWFkLW9ubHkgIGd1bG9uZyBNZW1vcnlJbmZvLmpz
LWhlYXAtc2l6ZS1saW1pdCAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgR19NQVhVTE9ORywKKyAgICAgICAgICAgIDAsCisg
ICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV9tZW1vcnlfaW5mb19pbml0KFdlYktpdERPTU1lbW9yeUluZm8qKQoreworfQorCitn
dWxvbmcgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdG90YWxfanNfaGVhcF9zaXplKHZvaWQq
KQoreworICAgIGdfd2FybmluZygiJXM6IHRoZSBNZW1vcnlJbmZvIG9iamVjdCBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNf
Xyk7CisgICAgcmV0dXJuIDA7Cit9CisKK2d1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dl
dF91c2VkX2pzX2hlYXBfc2l6ZSh2b2lkKikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgTWVt
b3J5SW5mbyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlv
biBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCitndWxvbmcg
d2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfanNfaGVhcF9zaXplX2xpbWl0KHZvaWQqKQorewor
ICAgIGdfd2FybmluZygiJXM6IHRoZSBNZW1vcnlJbmZvIG9iamVjdCBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKy8vIFdlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZQorCit0eXBl
ZGVmIHN0cnVjdCBfV2ViS2l0RE9NTWljcm9EYXRhSXRlbVZhbHVlIHsKKyAgICBXZWJLaXRET01P
YmplY3QgcGFyZW50X2luc3RhbmNlOworfSBXZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWU7CisK
K3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWVDbGFzcyB7CisgICAg
V2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfSBXZWJLaXRET01NaWNyb0RhdGFJ
dGVtVmFsdWVDbGFzczsKKworR19ERUZJTkVfVFlQRShXZWJLaXRET01NaWNyb0RhdGFJdGVtVmFs
dWUsIHdlYmtpdF9kb21fbWljcm9fZGF0YV9pdGVtX3ZhbHVlLCBXRUJLSVRfVFlQRV9ET01fT0JK
RUNUKQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21pY3JvX2RhdGFfaXRlbV92YWx1ZV9jbGFz
c19pbml0KFdlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZUNsYXNzKikKK3sKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV9taWNyb19kYXRhX2l0ZW1fdmFsdWVfaW5pdChXZWJLaXRET01NaWNy
b0RhdGFJdGVtVmFsdWUqKQoreworfQorCisvLyBXZWJLaXRET01QZXJmb3JtYW5jZQorCit2b2lk
KiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2dldF9tZW1vcnkoV2ViS2l0RE9NUGVyZm9ybWFuY2Uq
KQoreworICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1v
dmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7
CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIFdlYktpdERPTVByb3BlcnR5Tm9kZUxpc3QKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVByb3BlcnR5Tm9kZUxpc3QgeworICAgIFdlYktpdERPTU5v
ZGVMaXN0IHBhcmVudF9pbnN0YW5jZTsKK30gV2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdDsKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTVByb3BlcnR5Tm9kZUxpc3RDbGFzcyB7CisgICAgV2Vi
S2l0RE9NTm9kZUxpc3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9IFdlYktpdERPTVByb3BlcnR5Tm9k
ZUxpc3RDbGFzczsKKworR19ERUZJTkVfVFlQRShXZWJLaXRET01Qcm9wZXJ0eU5vZGVMaXN0LCB3
ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdCwgV0VCS0lUX1RZUEVfRE9NX05PREVfTElTVCkK
KworZW51bSB7CisgICAgUFJPUEVSVFlfTk9ERV9MSVNUX1BST1BfMCwKKyAgICBQUk9QRVJUWV9O
T0RFX0xJU1RfUFJPUF9MRU5HVEgsCit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Byb3Bl
cnR5X25vZGVfbGlzdF9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0
eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBzd2l0Y2ggKHBy
b3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BFUlRZX05PREVfTElTVF9QUk9QX0xFTkdUSDogewor
ICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgMCk7CisgICAgICAgIFdFQktJVF9XQVJO
X0ZFQVRVUkVfTk9UX1BSRVNFTlQoIk1pY3JvZGF0YSIpCisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
c3RhdGljIHZvaWQgd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfY2xhc3NfaW5pdChXZWJL
aXRET01Qcm9wZXJ0eU5vZGVMaXN0Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0
Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAg
Z29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlz
dF9nZXRfcHJvcGVydHk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RDbGFzcywKKyAgICAgICAgUFJPUEVSVFlfTk9ERV9MSVNUX1BST1BfTEVOR1RILAorICAg
ICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoImxlbmd0aCIsCisgICAgICAgICAgICAicHJvcGVydHlf
bm9kZV9saXN0X2xlbmd0aCAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisg
ICAgICAgICAgICAicmVhZC1vbmx5ICBndWxvbmcgUHJvcGVydHlOb2RlTGlzdC5sZW5ndGggLSBy
ZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAorICAgICAgICAgICAgMCwKKyAgICAg
ICAgICAgIEdfTUFYVUxPTkcsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fcHJvcGVydHlfbm9k
ZV9saXN0X2luaXQoV2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdCopCit7Cit9CisKK1dlYktpdERP
TU5vZGUqIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2l0ZW0odm9pZCosIGd1bG9uZykK
K3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgUHJvcGVydHlOb2RlTGlzdCBvYmplY3QgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19m
dW5jX18pOworICAgIHJldHVybiAwOworfQorCitndWxvbmcgd2Via2l0X2RvbV9wcm9wZXJ0eV9u
b2RlX2xpc3RfZ2V0X2xlbmd0aCh2b2lkKikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgUHJv
cGVydHlOb2RlTGlzdCBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBm
dW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCitn
ZG91YmxlIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9zdGFydF90aW1lKFdlYktp
dERPTUhUTUxNZWRpYUVsZW1lbnQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRoZSBIVE1MTWVk
aWFFbGVtZW50OnN0YXJ0LXRpbWUgcHJvcGVydHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktp
dCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAw
OworfQorCitnZG91YmxlIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9pbml0aWFs
X3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCopCit7CisgICAgZ193YXJuaW5nKCIlczog
dGhlIEhUTUxNZWRpYUVsZW1lbnQ6aW5pdGlhbC10aW1lIHByb3BlcnR5IGhhcyBiZWVuIHJlbW92
ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsK
KyAgICByZXR1cm4gMDsKK30KKworLy8gV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50CisKK2djaGFy
KiB3ZWJraXRfZG9tX2h0bWxfaGVhZF9lbGVtZW50X2dldF9wcm9maWxlKFdlYktpdERPTUhUTUxI
ZWFkRWxlbWVudCogc2VsZikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgSGVhZEVsZW1lbnQg
b2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBu
b3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4gZ19zdHJkdXAoIiIpOworfQorCit2b2lk
IHdlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1lbnRfc2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhl
YWRFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpCit7CisgICAgZ193YXJuaW5nKCIl
czogdGhlIEhlYWRFbGVtZW50IG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Cit9CisKKy8vIFdlYktpdERP
TVByb2Nlc3NpbmdJbnN0cnVjdGlvbgorCitnY2hhciogd2Via2l0X2RvbV9wcm9jZXNzaW5nX2lu
c3RydWN0aW9uX2dldF9kYXRhKFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiogc2VsZikK
K3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3Zl
ZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwor
ICAgIHJldHVybiBnX3N0cmR1cCgiIik7Cit9CisKK3ZvaWQgd2Via2l0X2RvbV9wcm9jZXNzaW5n
X2luc3RydWN0aW9uX3NldF9kYXRhKFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiogc2Vs
ZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3dhcm5pbmco
IiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhp
cyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworfQorCisjZW5kaWYgLy8gV0VC
S0lUX0RJU0FCTEVfREVQUkVDQVRFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hZDE4YzhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmgKQEAgLTAsMCArMSw2MDkgQEAKKy8q
CisgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAx
ICBVU0EKKyAqLworCisjaWZuZGVmIFdlYktpdERPTURlcHJlY2F0ZWRfaAorI2RlZmluZSBXZWJL
aXRET01EZXByZWNhdGVkX2gKKworI2lmICFkZWZpbmVkKFdFQktJVF9ESVNBQkxFX0RFUFJFQ0FU
RUQpCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNs
dWRlIDx3ZWJraXRkb20vd2Via2l0ZG9tZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKy8q
KgorICogd2Via2l0X2RvbV9ibG9iX3dlYmtpdF9zbGljZToKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01CbG9iCisgKiBAc3RhcnQ6IEEgI2dpbnQ2NAorICogQGVuZDogQSAjZ2ludDY0CisgKiBAY29u
dGVudF90eXBlOiBBICNnY2hhcgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogYSAj
V2ViS2l0RE9NQmxvYgorICoKKyAqIERlcHJlY2F0ZWQ6IDEuMTA6IFVzZSB3ZWJraXRfZG9tX2Js
b2Jfc2xpY2UoKSBpbnN0ZWFkLgorICovCitXRUJLSVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X2Rv
bV9ibG9iX3NsaWNlKSBXZWJLaXRET01CbG9iKgord2Via2l0X2RvbV9ibG9iX3dlYmtpdF9zbGlj
ZShXZWJLaXRET01CbG9iKiBzZWxmLCBnaW50NjQgc3RhcnQsIGdpbnQ2NCBlbmQsIGNvbnN0IGdj
aGFyKiBjb250ZW50X3R5cGUpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dl
dF9pZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxlbWVudAorICoKKyAqIFJldHVybnM6
IEEgI2djaGFyCisgKgorICogRGVwcmVjYXRlZDogMi4yOiBVc2Ugd2Via2l0X2RvbV9lbGVtZW50
X2dldF9pZCgpIGluc3RlYWQuCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfZG9t
X2VsZW1lbnRfZ2V0X2lkKSBnY2hhcioKK3dlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pZChX
ZWJLaXRET01IVE1MRWxlbWVudCogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX2Vs
ZW1lbnRfc2V0X2lkOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxFbGVtZW50CisgKiBAdmFs
dWU6IEEgI2djaGFyCisgKgorICogRGVwcmVjYXRlZDogMi4yOiBVc2Ugd2Via2l0X2RvbV9lbGVt
ZW50X3NldF9pZCgpIGluc3RlYWQuCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRf
ZG9tX2VsZW1lbnRfc2V0X2lkKSB2b2lkCit3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaWQo
V2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgor
ICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWU6CisgKiBAZWxlbWVudDog
QSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQKKyAqCisgKiBSZXR1cm5zOiBBICNnY2hhcgorICoKKyAq
IERlcHJlY2F0ZWQ6IDEuMTA6IFVzZSB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUo
KSBpbnN0ZWFkLgorICovCitXRUJLSVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X2RvbV9lbGVtZW50
X2dldF9jbGFzc19uYW1lKSBnY2hhcioKK3dlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9jbGFz
c19uYW1lKFdlYktpdERPTUhUTUxFbGVtZW50KiBlbGVtZW50KTsKKworLyoqCisgKiB3ZWJraXRf
ZG9tX2h0bWxfZWxlbWVudF9zZXRfY2xhc3NfbmFtZToKKyAqIEBlbGVtZW50OiBBICNXZWJLaXRE
T01IVE1MRWxlbWVudAorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqCisgKiBEZXByZWNhdGVk
OiAxLjEwOiBVc2Ugd2Via2l0X2RvbV9lbGVtZW50X3NldF9jbGFzc19uYW1lKCkgaW5zdGVhZC4K
KyAqLworV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9kb21fZWxlbWVudF9zZXRfY2xhc3Nf
bmFtZSkgdm9pZAord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2NsYXNzX25hbWUoV2ViS2l0
RE9NSFRNTEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgorICog
d2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX2xpc3Q6CisgKiBAZWxlbWVudDogQSAj
V2ViS2l0RE9NSFRNTEVsZW1lbnQKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEg
I1dlYktpdERPTURPTVRva2VuTGlzdAorICoKKyAqIERlcHJlY2F0ZWQ6IDEuMTA6IFVzZSB3ZWJr
aXRfZG9tX2VsZW1lbnRfZ2V0X2NsYXNzX2xpc3QoKSBpbnN0ZWFkLgorICovCitXRUJLSVRfREVQ
UkVDQVRFRF9GT1Iod2Via2l0X2RvbV9lbGVtZW50X2dldF9jbGFzc19saXN0KSBXZWJLaXRET01E
T01Ub2tlbkxpc3QqCit3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3NfbGlzdChXZWJL
aXRET01IVE1MRWxlbWVudCogZWxlbWVudCk7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX2Zv
cm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2NoYW5nZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01I
VE1MRm9ybUVsZW1lbnQKKyAqCisgKiBEZXByZWNhdGVkOiAxLjYKKyAqLworV0VCS0lUX0RFUFJF
Q0FURUQgdm9pZAord2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2No
YW5nZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9k
b21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9ybV9pbnB1dDoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MRm9ybUVsZW1lbnQKKyAqCisgKiBEZXByZWNhdGVkOiAxLjYKKyAqLworV0VC
S0lUX0RFUFJFQ0FURUQgdm9pZAord2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRj
aF9mb3JtX2lucHV0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2VsZik7CisKKy8qKgorICog
d2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfb3ZlcmZsb3c6CisgKiBAZmxvdzogQSAj
V2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93CisgKgorICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KKyAq
CisgKiBEZXByZWNhdGVkOiAxLjEwOiBVc2Ugd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19n
ZXRfb3ZlcnNldCgpIGluc3RlYWQuCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRf
ZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyc2V0KSBnYm9vbGVhbgord2Via2l0X2RvbV93
ZWJraXRfbmFtZWRfZmxvd19nZXRfb3ZlcmZsb3coV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBm
bG93KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3dlYmtpdF9yZWdpb25fb3Zl
cmZsb3c6CisgKiBAZWxlbWVudDogQSAjV2ViS2l0RE9NRWxlbWVudAorICoKKyAqIFJldHVybnM6
IEEgI2djaGFyCisgKgorICogRGVwcmVjYXRlZDogMS4xMDogVXNlIHdlYmtpdF9kb21fZWxlbWVu
dF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyc2V0KCkgaW5zdGVhZC4KKyAqLworV0VCS0lUX0RFUFJF
Q0FURURfRk9SKHdlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyc2V0KSBn
Y2hhcioKK3dlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyZmxvdyhXZWJL
aXRET01FbGVtZW50KiBlbGVtZW50KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1l
ZF9mbG93X2dldF9jb250ZW50X25vZGVzOgorICogQGZsb3c6IEEgI1dlYktpdERPTVdlYktpdE5h
bWVkRmxvdworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogYSAjV2ViS2l0RE9NTm9k
ZUxpc3QKKyAqCisgKiBEZXByZWNhdGVkOiAxLjEwOiBVc2Ugd2Via2l0X2RvbV93ZWJraXRfbmFt
ZWRfZmxvd19nZXRfY29udGVudCgpIGluc3RlYWQuCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZP
Uih3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9jb250ZW50KSBXZWJLaXRET01Ob2Rl
TGlzdCoKK3dlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X2NvbnRlbnRfbm9kZXMoV2Vi
S2l0RE9NV2ViS2l0TmFtZWRGbG93KiBmbG93KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3dlYmtp
dF9uYW1lZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRlbnRfbm9kZToKKyAqIEBmbG93OiBBICNX
ZWJLaXRET01XZWJLaXROYW1lZEZsb3cKKyAqIEBjb250ZW50X25vZGU6IEEgI1dlYktpdERPTU5v
ZGUKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTU5vZGVMaXN0
CisgKgorICogRGVwcmVjYXRlZDogMS4xMDogVXNlIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zs
b3dfZ2V0X3JlZ2lvbnNfYnlfY29udGVudCgpIGluc3RlYWQuCisgKi8KK1dFQktJVF9ERVBSRUNB
VEVEX0ZPUih3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRl
bnQpIFdlYktpdERPTU5vZGVMaXN0Kgord2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRf
cmVnaW9uc19ieV9jb250ZW50X25vZGUoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBmbG93LCBX
ZWJLaXRET01Ob2RlKiBjb250ZW50X25vZGUpOworCitXRUJLSVRfREVQUkVDQVRFRCBHVHlwZQor
d2Via2l0X2RvbV9iYXJfaW5mb19nZXRfdHlwZSh2b2lkKTsKKworLyoqCisgKiB3ZWJraXRfZG9t
X2Jhcl9pbmZvX2dldF92aXNpYmxlOgorICogQHNlbGY6IEEgI1dlYktpdERPTUJhckluZm8KKyAq
CisgKiBUaGUgQmFySW5mbyB0eXBlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHNwZWMs
IHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6IEEgI2dib29sZWFu
CisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGdib29sZWFu
Cit3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF92aXNpYmxlKHZvaWQqIHNlbGYpOworCisvKioKKyAq
IHdlYmtpdF9kb21fY29uc29sZV9nZXRfbWVtb3J5OgorICogQHNlbGY6IEEgI1dlYktpdERPTUNv
bnNvbGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdl
YktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogKHRyYW5z
ZmVyIG5vbmUpOgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRF
RCB2b2lkKgord2Via2l0X2RvbV9jb25zb2xlX2dldF9tZW1vcnkoV2ViS2l0RE9NQ29uc29sZSog
c2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3By
b3BlcnR5X2Nzc192YWx1ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0
aW9uCisgKiBAcHJvcGVydHlOYW1lOiBBICNnY2hhcgorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0
eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGlu
Zy4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTUNTU1ZhbHVl
CisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdlYktpdERP
TUNTU1ZhbHVlKgord2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5
X2Nzc192YWx1ZShXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiBzZWxmLCBjb25zdCBnY2hh
ciogcHJvcGVydHlOYW1lKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJr
aXRfaGlkZGVuOgorICogQHNlbGY6IEEgI1dlYktpdERPTURvY3VtZW50CisgKgorICogVGhpcyBm
dW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24g
ZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6IEEgI2dib29sZWFuCisgKgorICogRGVwcmVj
YXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGdib29sZWFuCit3ZWJraXRfZG9tX2Rv
Y3VtZW50X2dldF93ZWJraXRfaGlkZGVuKFdlYktpdERPTURvY3VtZW50KiBzZWxmKTsKKworLyoq
CisgKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfdmlzaWJpbGl0eV9zdGF0ZToKKyAq
IEBzZWxmOiBBICNXZWJLaXRET01Eb2N1bWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBo
YXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4K
KyAqCisgKiBSZXR1cm5zOiBBICNnY2hhcgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitX
RUJLSVRfREVQUkVDQVRFRCBnY2hhcioKK3dlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF92
aXNpYmlsaXR5X3N0YXRlKFdlYktpdERPTURvY3VtZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJr
aXRfZG9tX2h0bWxfZG9jdW1lbnRfb3BlbjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRG9j
dW1lbnQKKyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdl
YktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogRGVwcmVjYXRlZDogMi4y
CisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIHZvaWQKK3dlYmtpdF9kb21faHRtbF9kb2N1bWVudF9v
cGVuKFdlYktpdERPTUhUTUxEb2N1bWVudCogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9o
dG1sX2VsZW1lbnRfc2V0X2l0ZW1faWQ6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEVsZW1l
bnQKKyAqIEB2YWx1ZTogQSAjZ2NoYXIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgor
ICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIHZvaWQKK3dlYmtpdF9k
b21faHRtbF9lbGVtZW50X3NldF9pdGVtX2lkKFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmLCBj
b25zdCBnY2hhciogdmFsdWUpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dl
dF9pdGVtX2lkOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxFbGVtZW50CisgKgorICogVGhp
cyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6IEEgI2djaGFyCisgKgorICogRGVwcmVj
YXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGdjaGFyKgord2Via2l0X2RvbV9odG1s
X2VsZW1lbnRfZ2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYpOworCisvKioK
KyAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3JlZjoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MRWxlbWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTURPTVNldHRhYmxlVG9rZW5MaXN0
CisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdlYktpdERP
TURPTVNldHRhYmxlVG9rZW5MaXN0Kgord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1f
cmVmKFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0
bWxfZWxlbWVudF9nZXRfaXRlbV9wcm9wOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxFbGVt
ZW50CisgKgorICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKTogYSAjV2ViS2l0RE9NRE9NU2V0dGFibGVUb2tlbkxpc3QKKyAqCisgKiBEZXByZWNh
dGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgV2ViS2l0RE9NRE9NU2V0dGFibGVUb2tl
bkxpc3QqCit3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9wcm9wKFdlYktpdERPTUhU
TUxFbGVtZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRf
aXRlbV9zY29wZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxlbWVudAorICogQHZhbHVl
OiBBICNnYm9vbGVhbgorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBEZXByZWNh
dGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZAord2Via2l0X2RvbV9odG1sX2Vs
ZW1lbnRfc2V0X2l0ZW1fc2NvcGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYsIGdib29sZWFu
IHZhbHVlKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9zY29w
ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxlbWVudAorICoKKyAqIFRoaXMgZnVuY3Rp
b25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMg
bm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAqIERlcHJlY2F0ZWQ6
IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRFRCBnYm9vbGVhbgord2Via2l0X2RvbV9odG1sX2Vs
ZW1lbnRfZ2V0X2l0ZW1fc2NvcGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYpOworCisvKioK
KyAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3R5cGU6CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NSFRNTEVsZW1lbnQKKyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICog
UmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitX
RUJLSVRfREVQUkVDQVRFRCB2b2lkKgord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1f
dHlwZShXZWJLaXRET01IVE1MRWxlbWVudCogc2VsZik7CisKKworLyoqCisgKiB3ZWJraXRfZG9t
X2h0bWxfc3R5bGVfZWxlbWVudF9zZXRfc2NvcGVkOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxTdHlsZUVsZW1lbnQKKyAqIEB2YWx1ZTogQSAjZ2Jvb2xlYW4KKyAqCisgKiBUaGlzIGZ1bmN0
aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVE
IHZvaWQKK3dlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50X3NldF9zY29wZWQoV2ViS2l0RE9N
SFRNTFN0eWxlRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOworCisvKioKKyAqIHdlYmtp
dF9kb21faHRtbF9zdHlsZV9lbGVtZW50X2dldF9zY29wZWQ6CisgKiBAc2VsZjogQSAjV2ViS2l0
RE9NSFRNTFN0eWxlRWxlbWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBS
ZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRf
REVQUkVDQVRFRCBnYm9vbGVhbgord2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfZ2V0X3Nj
b3BlZChXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50KiBzZWxmKTsKKworCitXRUJLSVRfREVQUkVD
QVRFRCBHVHlwZQord2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfdHlw
ZSh2b2lkKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9u
X2l0ZW06CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uCisg
KiBAaW5kZXg6IEEgI2d1bG9uZworICoKKyAqIFRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmpl
Y3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhp
bmcuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRET01Ob2RlCisg
KgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdlYktpdERPTU5v
ZGUqCit3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2l0ZW0odm9pZCogc2Vs
ZiwgZ3Vsb25nIGluZGV4KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19j
b2xsZWN0aW9uX25hbWVkX2l0ZW06CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uCisgKiBAbmFtZTogQSAjZ2NoYXIKKyAqCisgKiBUaGUgUHJvcGVydGllc0Nv
bGxlY3Rpb24gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisg
KiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZCoKK3dlYmtpdF9k
b21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbmFtZWRfaXRlbSh2b2lkKiBzZWxmLCBjb25z
dCBnY2hhciogbmFtZSk7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29s
bGVjdGlvbl9nZXRfbGVuZ3RoOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxQcm9wZXJ0aWVz
Q29sbGVjdGlvbgorICoKKyAqIFRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgor
ICogUmV0dXJuczogQSAjZ3Vsb25nCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJ
VF9ERVBSRUNBVEVEIGd1bG9uZword2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlv
bl9nZXRfbGVuZ3RoKHZvaWQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9wcm9w
ZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X25hbWVzOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxQ
cm9wZXJ0aWVzQ29sbGVjdGlvbgorICoKKyAqIFRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmpl
Y3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhp
bmcuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRET01ET01TdHJp
bmdMaXN0CisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdl
YktpdERPTURPTVN0cmluZ0xpc3QqCit3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0
aW9uX2dldF9uYW1lcyh2b2lkKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX25vZGVfZ2V0
X2F0dHJpYnV0ZXM6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NTm9kZQorICoKKyAqIFRoaXMgZnVu
Y3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRv
ZXMgbm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERP
TU5hbWVkTm9kZU1hcAorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVD
QVRFRCBXZWJLaXRET01OYW1lZE5vZGVNYXAqCit3ZWJraXRfZG9tX25vZGVfZ2V0X2F0dHJpYnV0
ZXMoV2ViS2l0RE9NTm9kZSogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9ub2RlX2hhc19h
dHRyaWJ1dGVzOgorICogQHNlbGY6IEEgI1dlYktpdERPTU5vZGUKKyAqCisgKiBUaGlzIGZ1bmN0
aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuCisgKgorICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KKyAqCisgKiBEZXByZWNhdGVk
OiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgZ2Jvb2xlYW4KK3dlYmtpdF9kb21fbm9kZV9o
YXNfYXR0cmlidXRlcyhXZWJLaXRET01Ob2RlKiBzZWxmKTsKKworV0VCS0lUX0RFUFJFQ0FURUQg
R1R5cGUKK3dlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3R5cGUodm9pZCk7CisKKy8qKgorICog
d2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdG90YWxfanNfaGVhcF9zaXplOgorICogQHNlbGY6
IEEgI1dlYktpdERPTU1lbW9yeUluZm8KKyAqCisgKiBUaGUgTWVtb3J5SW5mbyBvYmplY3QgaGFz
IGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisg
KgorICogUmV0dXJuczogQSAjZ3Vsb25nCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dF
QktJVF9ERVBSRUNBVEVEIGd1bG9uZword2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdG90YWxf
anNfaGVhcF9zaXplKHZvaWQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fbWVtb3J5X2lu
Zm9fZ2V0X3VzZWRfanNfaGVhcF9zaXplOgorICogQHNlbGY6IEEgI1dlYktpdERPTU1lbW9yeUlu
Zm8KKyAqCisgKiBUaGUgTWVtb3J5SW5mbyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdl
YktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogQSAjZ3Vs
b25nCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGd1bG9u
Zword2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdXNlZF9qc19oZWFwX3NpemUodm9pZCogc2Vs
Zik7CisKKy8qKgorICogd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfanNfaGVhcF9zaXplX2xp
bWl0OgorICogQHNlbGY6IEEgI1dlYktpdERPTU1lbW9yeUluZm8KKyAqCisgKiBUaGUgTWVtb3J5
SW5mbyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogQSAjZ3Vsb25nCisgKgorICogRGVwcmVjYXRl
ZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGd1bG9uZword2Via2l0X2RvbV9tZW1vcnlf
aW5mb19nZXRfanNfaGVhcF9zaXplX2xpbWl0KHZvaWQqIHNlbGYpOworCitXRUJLSVRfREVQUkVD
QVRFRCBHVHlwZQord2Via2l0X2RvbV9taWNyb19kYXRhX2l0ZW1fdmFsdWVfZ2V0X3R5cGUodm9p
ZCk7CisKKy8qKgorICogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9nZXRfbWVtb3J5OgorICogQHNl
bGY6IEEgI1dlYktpdERPTVBlcmZvcm1hbmNlCisgKgorICogVGhpcyBmdW5jdGlvbmFsaXR5IGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgor
ICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIK
KyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZCoKK3dlYmtpdF9kb21fcGVyZm9ybWFuY2VfZ2V0
X21lbW9yeShXZWJLaXRET01QZXJmb3JtYW5jZSogc2VsZik7CisKK1dFQktJVF9ERVBSRUNBVEVE
IEdUeXBlCit3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfdHlwZSh2b2lkKTsKKwor
LyoqCisgKiB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9pdGVtOgorICogQHNlbGY6IEEg
I1dlYktpdERPTVByb3BlcnR5Tm9kZUxpc3QKKyAqIEBpbmRleDogQSAjZ3Vsb25nCisgKgorICog
VGhlIFByb3BlcnR5Tm9kZUxpc3Qgb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQs
IHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBu
b25lKTogYSAjV2ViS2l0RE9NTm9kZQorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJL
SVRfREVQUkVDQVRFRCBXZWJLaXRET01Ob2RlKgord2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xp
c3RfaXRlbSh2b2lkKiBzZWxmLCBndWxvbmcgaW5kZXgpOworCisvKioKKyAqIHdlYmtpdF9kb21f
cHJvcGVydHlfbm9kZV9saXN0X2dldF9sZW5ndGg6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NUHJv
cGVydHlOb2RlTGlzdAorICoKKyAqIFRoZSBQcm9wZXJ0eU5vZGVMaXN0IG9iamVjdCBoYXMgYmVl
biByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisg
KiBSZXR1cm5zOiBBICNndWxvbmcKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lU
X0RFUFJFQ0FURUQgZ3Vsb25nCit3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfbGVu
Z3RoKHZvaWQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50
X2dldF9zdGFydF90aW1lOgorICogQHNlbGY6IEEgI0hUTUxNZWRpYUVsZW1lbnQKKyAqCisgKiBU
aGUgSFRNTE1lZGlhRWxlbWVudDpzdGFydC10aW1lIHByb3BlcnR5IGhhcyBiZWVuIHJlbW92ZWQg
ZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6
IEEgI2dkb3VibGUKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FU
RUQgZ2RvdWJsZQord2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0X3RpbWUo
V2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9o
dG1sX21lZGlhX2VsZW1lbnRfZ2V0X2luaXRpYWxfdGltZToKKyAqIEBzZWxmOiBBICNIVE1MTWVk
aWFFbGVtZW50CisgKgorICogVGhlIEhUTUxNZWRpYUVsZW1lbnQ6aW5pdGlhbC10aW1lIHByb3Bl
cnR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Ro
aW5nLgorICoKKyAqIFJldHVybnM6IEEgI2dkb3VibGUKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIK
KyAqLworV0VCS0lUX0RFUFJFQ0FURUQgZ2RvdWJsZQord2Via2l0X2RvbV9odG1sX21lZGlhX2Vs
ZW1lbnRfZ2V0X2luaXRpYWxfdGltZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsK
KworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfaGVhZF9lbGVtZW50X2dldF9wcm9maWxlOgorICog
QHNlbGY6IEEgI1dlYktpdERPTUhUTUxIZWFkRWxlbWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb25h
bGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90
aGluZy4KKyAqCisgKiBSZXR1cm5zOiBhICNnY2hhcgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuNAor
ICovCitXRUJLSVRfREVQUkVDQVRFRCBnY2hhcioKK3dlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1l
bnRfZ2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50KiBzZWxmKTsKKworLyoqCisg
KiB3ZWJraXRfZG9tX2h0bWxfaGVhZF9lbGVtZW50X3NldF9wcm9maWxlOgorICogQHNlbGY6IEEg
I1dlYktpdERPTUhUTUxIZWFkRWxlbWVudAorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFRo
aXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0
aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBEZXByZWNhdGVkOiAyLjQKKyAqLworV0VCS0lUX0RF
UFJFQ0FURUQgdm9pZAord2Via2l0X2RvbV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmlsZShX
ZWJLaXRET01IVE1MSGVhZEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8q
KgorICogd2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX2dldF9kYXRhOgorICogQHNl
bGY6IEEgI1dlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgorICoKKyAqIFRoaXMgZnVuY3Rp
b25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMg
bm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiBhICNnY2hhcgorICoKKyAqIERlcHJlY2F0ZWQ6IDIu
NAorICovCitXRUJLSVRfREVQUkVDQVRFRCBnY2hhcioKK3dlYmtpdF9kb21fcHJvY2Vzc2luZ19p
bnN0cnVjdGlvbl9nZXRfZGF0YShXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHNlbGYp
OworCisvKioKKyAqIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9zZXRfZGF0YToK
KyAqIEBzZWxmOiBBICNXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KKyAqIEB2YWx1ZTog
QSAjZ2NoYXIKKyAqIEBlcnJvcjogI0dFcnJvcgorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBo
YXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4K
KyAqCisgKiBEZXByZWNhdGVkOiAyLjQKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZAord2Vi
a2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX3NldF9kYXRhKFdlYktpdERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7
CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBXRUJLSVRfRElTQUJMRV9ERVBSRUNBVEVEICov
CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01EZXByZWNhdGVkLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuc3ltYm9scwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45MjA2ZDgxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLnN5bWJvbHMKQEAgLTAsMCArMSw0OCBA
QAorV2ViS2l0RE9NQmxvYiogd2Via2l0X2RvbV9ibG9iX3dlYmtpdF9zbGljZShXZWJLaXRET01C
bG9iKiwgZ2ludDY0LCBnaW50NjQsIGNvbnN0IGdjaGFyKikKK2djaGFyKiB3ZWJraXRfZG9tX2h0
bWxfZWxlbWVudF9nZXRfY2xhc3NfbmFtZShXZWJLaXRET01IVE1MRWxlbWVudCopCit2b2lkIHdl
YmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9jbGFzc19uYW1lKFdlYktpdERPTUhUTUxFbGVtZW50
KiwgY29uc3QgZ2NoYXIqKQorV2ViS2l0RE9NRE9NVG9rZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxf
ZWxlbWVudF9nZXRfY2xhc3NfbGlzdChXZWJLaXRET01IVE1MRWxlbWVudCopCit2b2lkIHdlYmtp
dF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9ybV9jaGFuZ2UoV2ViS2l0RE9NSFRN
TEZvcm1FbGVtZW50KikKK3ZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRj
aF9mb3JtX2lucHV0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCopCitnYm9vbGVhbiB3ZWJraXRf
ZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyZmxvdyhXZWJLaXRET01XZWJLaXROYW1lZEZs
b3cqKQorZ2NoYXIqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyZmxv
dyhXZWJLaXRET01FbGVtZW50KikKK1dlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX3dlYmtp
dF9uYW1lZF9mbG93X2dldF9jb250ZW50X25vZGVzKFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyop
CitXZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfcmVn
aW9uc19ieV9jb250ZW50X25vZGUoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiwgV2ViS2l0RE9N
Tm9kZSopCitHVHlwZSB3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF90eXBlKHZvaWQpCitnYm9vbGVh
biB3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF92aXNpYmxlKHZvaWQqKQordm9pZCogd2Via2l0X2Rv
bV9jb25zb2xlX2dldF9tZW1vcnkoV2ViS2l0RE9NQ29uc29sZSopCitXZWJLaXRET01DU1NWYWx1
ZSogd2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X2Nzc192YWx1
ZShXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgZ2NoYXIqKQorZ2Jvb2xlYW4g
d2Via2l0X2RvbV9kb2N1bWVudF9nZXRfd2Via2l0X2hpZGRlbihXZWJLaXRET01Eb2N1bWVudCop
CitnY2hhciogd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfd2Via2l0X3Zpc2liaWxpdHlfc3RhdGUo
V2ViS2l0RE9NRG9jdW1lbnQqKQordm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfb3BlbihX
ZWJLaXRET01IVE1MRG9jdW1lbnQqKQordm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRf
aXRlbV9pZChXZWJLaXRET01IVE1MRWxlbWVudCosIGNvbnN0IGdjaGFyKikKK2djaGFyKiB3ZWJr
aXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9pZChXZWJLaXRET01IVE1MRWxlbWVudCopCitX
ZWJLaXRET01ET01TZXR0YWJsZVRva2VuTGlzdCogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0
X2l0ZW1fcmVmKFdlYktpdERPTUhUTUxFbGVtZW50KikKK1dlYktpdERPTURPTVNldHRhYmxlVG9r
ZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9wcm9wKFdlYktpdERPTUhU
TUxFbGVtZW50KikKK3ZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1fc2NvcGUo
V2ViS2l0RE9NSFRNTEVsZW1lbnQqLCBnYm9vbGVhbikKK2dib29sZWFuIHdlYmtpdF9kb21faHRt
bF9lbGVtZW50X2dldF9pdGVtX3Njb3BlKFdlYktpdERPTUhUTUxFbGVtZW50KikKK3ZvaWQqIHdl
YmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3R5cGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQq
KQordm9pZCB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9zZXRfc2NvcGVkKFdlYktpdERP
TUhUTUxTdHlsZUVsZW1lbnQqLCBnYm9vbGVhbikKK2dib29sZWFuIHdlYmtpdF9kb21faHRtbF9z
dHlsZV9lbGVtZW50X2dldF9zY29wZWQoV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudCopCitHVHlw
ZSB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF90eXBlKHZvaWQpCitX
ZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2l0ZW0o
dm9pZCosIGd1bG9uZykKK3ZvaWQqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rp
b25fbmFtZWRfaXRlbSh2b2lkKiwgY29uc3QgZ2NoYXIqKQorZ3Vsb25nIHdlYmtpdF9kb21faHRt
bF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X2xlbmd0aCh2b2lkKikKK1dlYktpdERPTURPTVN0
cmluZ0xpc3QqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X25hbWVz
KHZvaWQqKQorV2ViS2l0RE9NTmFtZWROb2RlTWFwKiB3ZWJraXRfZG9tX25vZGVfZ2V0X2F0dHJp
YnV0ZXMoV2ViS2l0RE9NTm9kZSopCitnYm9vbGVhbiB3ZWJraXRfZG9tX25vZGVfaGFzX2F0dHJp
YnV0ZXMoV2ViS2l0RE9NTm9kZSopCitHVHlwZSB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF90
eXBlKHZvaWQpCitndWxvbmcgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdG90YWxfanNfaGVh
cF9zaXplKHZvaWQqKQorZ3Vsb25nIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3VzZWRfanNf
aGVhcF9zaXplKHZvaWQqKQorZ3Vsb25nIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X2pzX2hl
YXBfc2l6ZV9saW1pdCh2b2lkKikKK0dUeXBlIHdlYmtpdF9kb21fbWljcm9fZGF0YV9pdGVtX3Zh
bHVlX2dldF90eXBlKHZvaWQpCit2b2lkKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2dldF9tZW1v
cnkoV2ViS2l0RE9NUGVyZm9ybWFuY2UqKQorR1R5cGUgd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2Rl
X2xpc3RfZ2V0X3R5cGUodm9pZCkKK1dlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fcHJvcGVydHlf
bm9kZV9saXN0X2l0ZW0odm9pZCosIGd1bG9uZykKK2d1bG9uZyB3ZWJraXRfZG9tX3Byb3BlcnR5
X25vZGVfbGlzdF9nZXRfbGVuZ3RoKHZvaWQqKQorZ2RvdWJsZSB3ZWJraXRfZG9tX2h0bWxfbWVk
aWFfZWxlbWVudF9nZXRfc3RhcnRfdGltZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KikKK2dk
b3VibGUgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2luaXRpYWxfdGltZShXZWJL
aXRET01IVE1MTWVkaWFFbGVtZW50KikKK2djaGFyKiB3ZWJraXRfZG9tX2h0bWxfaGVhZF9lbGVt
ZW50X2dldF9wcm9maWxlKFdlYktpdERPTUhUTUxIZWFkRWxlbWVudCopCit2b2lkIHdlYmtpdF9k
b21faHRtbF9oZWFkX2VsZW1lbnRfc2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50
KiwgY29uc3QgZ2NoYXIqKQorZ2NoYXIqIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19pbnN0cnVjdGlv
bl9nZXRfZGF0YShXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qKQordm9pZCB3ZWJraXRf
ZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fc2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0lu
c3RydWN0aW9uKiwgY29uc3QgZ2NoYXIqLCBHRXJyb3IqKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwK
aW5kZXggOTdjZDRmZi4uYjM5Y2YyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwKQEAgLTgwLDkg
KzgwLDExIEBAIGlmICgkb3V0VHlwZSBlcSAiZGVmaW5lcyIpIHsKICAgICBwcmludCAiI2VuZGlm
XG4iOwogCiAgICAgZm9yZWFjaCBteSAkY2xhc3MgKEBjbGFzc2VzKSB7Ci0gICAgICAgIHByaW50
ICJ0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NJHtjbGFzc30gV2ViS2l0RE9NJHtjbGFzc307XG4i
OwotICAgICAgICBwcmludCAidHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTSR7Y2xhc3N9Q2xhc3Mg
V2ViS2l0RE9NJHtjbGFzc31DbGFzcztcbiI7Ci0gICAgICAgIHByaW50ICJcbiI7CisgICAgICAg
IGlmICgkY2xhc3MgbmUgIkRlcHJlY2F0ZWQiICYmICRjbGFzcyBuZSAiQ3VzdG9tIikgeworICAg
ICAgICAgICAgcHJpbnQgInR5cGVkZWYgc3RydWN0IF9XZWJLaXRET00ke2NsYXNzfSBXZWJLaXRE
T00ke2NsYXNzfTtcbiI7CisgICAgICAgICAgICBwcmludCAidHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTSR7Y2xhc3N9Q2xhc3MgV2ViS2l0RE9NJHtjbGFzc31DbGFzcztcbiI7CisgICAgICAgICAg
ICBwcmludCAiXG4iOworICAgICAgICB9CiAgICAgfQogfSBlbHNpZiAoJG91dFR5cGUgZXEgImdk
b20iKSB7CiAgICAgcHJpbnQgIiNkZWZpbmUgX19XRUJLSVRET01fSF9JTlNJREVfX1xuXG4iOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU1MWQ4
MGMuLjYwNjVlMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMy0xMS0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gTWFyayBhbGwgZGVwcmVjYXRl
ZCBzeW1ib2xzIGluIEdPYmplY3QgRE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weTogQWRkIHNwZWNpYWwgY2FzZSBmb3IKKyAgICAgICAgV2ViS2l0RE9NRGVwcmVjYXRlZC4K
KyAgICAgICAgKiBndGsvZ2VuZXJhdGUtZ3RrZG9jOgorICAgICAgICAoZ2V0X3dlYmtpdDJfb3B0
aW9ucyk6IFVzZSB0aGUgcHJlZml4IG9mIHRoZSBtZXRob2RzIGFzIG5hbWVzcGFjZSwKKyAgICAg
ICAgc2luY2UgdGhpcyBpcyB3aGF0IGd0a2RvYyBleHBlY3RzIHRvIHNvcnQgdGhlIGluZGV4Lgor
ICAgICAgICAoZ2V0X3dlYmtpdDFfb3B0aW9ucyk6IERpdHRvLgorICAgICAgICAoZ2V0X3dlYmtp
dGRvbV9vcHRpb25zKTogRGl0dG8uCisgICAgICAgICogZ3RrL2dlbmVyYXRlLXdlYmtpdGRvbS1k
b2MtZmlsZXM6CisgICAgICAgIChXZWJLaXRET01Eb2NHZW5lcmF0b3IpOiBBZGQgYSBnbG9iYWwg
bGlzdCBvZiBkZWxldGVkIG9iamVjdHMuCisgICAgICAgIChXZWJLaXRET01Eb2NHZW5lcmF0b3Iu
d3JpdGVfZGVsZXRlZF9jbGFzc2VzKTogTmV3IG1ldGhvZCB0byB3cml0ZQorICAgICAgICB0aGUg
ZG9jdW1lbnRhdGlvbiBmb3IgY2xhc3NlcyB0aGF0IGFyZSBkZXByZWNhdGVkIGJlY2F1c2UgdGhl
eQorICAgICAgICBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgICAgICAgKFdlYktpdERPTURvY0dlbmVy
YXRvckRvY3Mud3JpdGVfZGVsZXRlZF9jbGFzc2VzKTogQWRkIHNlY3Rpb25zCisgICAgICAgIGZv
ciBkZWxldGVkIGNsYXNzZXMgdG9vLgorICAgICAgICAoV2ViS2l0RE9NRG9jR2VuZXJhdG9yU2Vj
dGlvbnMuX19pbml0X18pOiBCdWlsZCBhIGxpc3Qgb2YKKyAgICAgICAgZGVwcmVjYXRlZCBzeW1i
b2xzIHVzaW5nIHRoZSBnaXZlbiBzeW1ib2xzIGZpbGUuCisgICAgICAgIChXZWJLaXRET01Eb2NH
ZW5lcmF0b3JTZWN0aW9ucy5fZGVsZXRlZF9jbGFzcyk6IFJldHVybnMgdGhlCisgICAgICAgIGRl
bGV0ZWQgY2xhc3MgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gZnVuY3Rpb24uCisgICAgICAg
IChXZWJLaXRET01Eb2NHZW5lcmF0b3JTZWN0aW9ucy5fZGVwcmVjYXRlZF9zeW1ib2xzKTogQnVp
bGRzIGEKKyAgICAgICAgZGljdGlvbmFyeSBvZiBkZXByZWNhdGVkIHN5bWJvbHMgZm9yIGV2ZXJ5
IGNsYXNzLgorICAgICAgICAoV2ViS2l0RE9NRG9jR2VuZXJhdG9yU2VjdGlvbnMud3JpdGVfc2Vj
dGlvbik6IEFkZCBhbHNvIHRoZQorICAgICAgICBkZXByZWNhdGVkIHN5bWJvbHMgaW4gZXZlcnkg
c2VjdGlvbi4KKyAgICAgICAgKFdlYktpdERPTURvY0dlbmVyYXRvclNlY3Rpb25zLndyaXRlX2Rl
bGV0ZWRfY2xhc3Nlcyk6IEFkZAorICAgICAgICBzZWN0aW9ucyBmb3IgZGVsZXRlZCBjbGFzc2Vz
IHRvby4KKwogMjAxMy0xMS0xNSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEJ1bXBpbmcgR1N0cmVhbWVyIHZlcnNpb24gdG8g
MS4yLjEgZm9yIHRoZSBkZXBlbmRlbmNpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlci5weQppbmRleCA2YzVmOThiLi44OTIwNTdhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2VyLnB5CkBAIC0xNTIsNiArMTUyLDcgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVS
ID0gWwogICAgICAgIyBwYXJlbnMgZm9yIGZ1bmN0aW9uIGNhbGxzLCBhbmQgYWx3YXlzIGhhdmlu
ZyB2YXJpYWJsZSBuYW1lcy4KICAgICAgICMgQWxzbywgR1RLKyBhbGxvd3MgdGhlIHVzZSBvZiBO
VUxMLgogICAgICAgIlNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3Vz
dG9tLmgiLAorICAgICAgIlNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
RGVwcmVjYXRlZC5oIiwKICAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dl
YktpdERPTUV2ZW50VGFyZ2V0LmgiLAogICAgICAgIlNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0IiwKICAgICAgICJTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvIiwK
QEAgLTIyMiw2ICsyMjMsNyBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgKFsjIFRo
ZXNlIGZpbGVzIGRlZmluZSBHT2JqZWN0cywgd2hpY2ggaW1wbGllcyBzb21lIGRlZmluaXRpb25z
IG9mCiAgICAgICAjIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIGNvbnRhaW5pbmcgdW5kZXJzY29y
ZXMuCiAgICAgICAiU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0
b20uY3BwIiwKKyAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TURlcHJlY2F0ZWQuY3BwIiwKICAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L1dlYktpdERPTUV2ZW50VGFyZ2V0LmNwcCIsCiAgICAgICAiU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lcjEuY3BwIiwKICAgICAgICJT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcCIsCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jIGIvVG9vbHMv
Z3RrL2dlbmVyYXRlLWd0a2RvYwppbmRleCBlMDM5MjlkLi44N2Y2ODQ0IDEwMDc1NQotLS0gYS9U
b29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCisrKyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MK
QEAgLTkxLDcgKzkxLDcgQEAgZGVmIGdldF93ZWJraXQyX29wdGlvbnMoKToKICAgICBvcHRpb25z
ID0gZ2V0X2NvbW1vbl9vcHRpb25zKCkuY29weSgpCiAgICAgb3B0aW9ucy51cGRhdGUoewogICAg
ICAgICAnbW9kdWxlX25hbWUnIDogJ3dlYmtpdDJndGsnLAotICAgICAgICAnbmFtZXNwYWNlJyA6
ICdXZWJLaXQnLAorICAgICAgICAnbmFtZXNwYWNlJyA6ICd3ZWJraXQnLAogICAgICAgICAnZG9j
X2RpcicgOiBzcmNfcGF0aCgnZG9jcycpLAogICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24u
YnVpbGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3ZWJraXQyZ3RrJyksCiAgICAgICAgICdzb3Vy
Y2VfZGlycycgOiBbc3JjX3BhdGgoKSwgZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ3dlYmtpdDJndGsn
LCAnd2Via2l0MicpLCBpbmplY3RlZF9idW5kbGVfc3JjX3BhdGgoKV0sCkBAIC0xMzIsNyArMTMy
LDcgQEAgZGVmIGdldF93ZWJraXQxX29wdGlvbnMoZ3RrX3ZlcnNpb24pOgogICAgIG9wdGlvbnMg
PSBnZXRfY29tbW9uX29wdGlvbnMoKS5jb3B5KCkKICAgICBvcHRpb25zLnVwZGF0ZSh7CiAgICAg
ICAgICdtb2R1bGVfbmFtZScgOiAnd2Via2l0Z3RrJywKLSAgICAgICAgJ25hbWVzcGFjZScgOiAn
V2ViS2l0JywKKyAgICAgICAgJ25hbWVzcGFjZScgOiAnd2Via2l0JywKICAgICAgICAgJ2RvY19k
aXInIDogc3JjX3BhdGgoJ2RvY3MnKSwKICAgICAgICAgJ291dHB1dF9kaXInIDogY29tbW9uLmJ1
aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24nLCAnd2Via2l0Z3RrJyksCiAgICAgICAgICdzb3VyY2Vf
ZGlycycgOiBbc3JjX3BhdGgoJ3dlYmtpdCcpLCBjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywg
J1dlYktpdCcsICdndGsnLCAnd2Via2l0JyldLApAQCAtMTU5LDcgKzE1OSw3IEBAIGRlZiBnZXRf
d2Via2l0ZG9tX29wdGlvbnMoKToKICAgICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCku
Y29weSgpCiAgICAgb3B0aW9ucy51cGRhdGUoewogICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dl
YmtpdGRvbWd0aycsCi0gICAgICAgICduYW1lc3BhY2UnIDogJ1dlYktpdERPTScsCisgICAgICAg
ICduYW1lc3BhY2UnIDogJ3dlYmtpdF9kb20nLAogICAgICAgICAnZG9jX2RpcicgOiBkZXJpdmVk
X3NvdXJjZXNfcGF0aCgnZG9jcycpLAogICAgICAgICAnb3V0cHV0X2RpcicgOiBjb21tb24uYnVp
bGRfcGF0aCgnRG9jdW1lbnRhdGlvbicsICd3ZWJraXRkb21ndGsnKSwKICAgICAgICAgJ3NvdXJj
ZV9kaXJzJyA6IFtkZXJpdmVkX3NvdXJjZXNfcGF0aCgpXSwKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0
ay9nZW5lcmF0ZS13ZWJraXRkb20tZG9jLWZpbGVzIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLXdlYmtp
dGRvbS1kb2MtZmlsZXMKaW5kZXggM2I1OGI0ZC4uYjQ3ZTI5YSAxMDA3NTUKLS0tIGEvVG9vbHMv
Z3RrL2dlbmVyYXRlLXdlYmtpdGRvbS1kb2MtZmlsZXMKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRl
LXdlYmtpdGRvbS1kb2MtZmlsZXMKQEAgLTIyLDEyICsyMiwxNyBAQCBpbXBvcnQgc3lzCiAKIGNs
YXNzIFdlYktpdERPTURvY0dlbmVyYXRvcjoKIAorICAgIERFTEVURURfQ0xBU1NFUyA9IFsiV2Vi
S2l0RE9NQmFySW5mbyIsICJXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24iLCAiV2Vi
S2l0RE9NTWVtb3J5SW5mbyIsICJXZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWUiLCAiV2ViS2l0
RE9NUHJvcGVydHlOb2RlTGlzdCIgXQorCiAgICAgZGVmIHdyaXRlX2hlYWRlcihzZWxmKToKICAg
ICAgICAgcGFzcwogCiAgICAgZGVmIHdyaXRlX3NlY3Rpb24oc2VsZiwgc3ltYm9sX2ZpbGUpOgog
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKKyAgICBkZWYgd3JpdGVfZGVsZXRl
ZF9jbGFzc2VzKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKICAg
ICBkZWYgd3JpdGVfZm9vdGVyKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTUzLDExICs1OCwy
MCBAQCBjbGFzcyBXZWJLaXRET01Eb2NHZW5lcmF0b3JEb2NzKFdlYktpdERPTURvY0dlbmVyYXRv
cik6CiAgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShzeW1ib2xfZmlsZSkKICAg
ICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC8lcyIvPlxu
JyAlIGJhc2VuYW1lLnJlcGxhY2UoIi5zeW1ib2xzIiwgIi54bWwiKSkKIAorICAgIGRlZiB3cml0
ZV9kZWxldGVkX2NsYXNzZXMoc2VsZik6CisgICAgICAgIGZvciBjbGFzc19uYW1lIGluIHNlbGYu
REVMRVRFRF9DTEFTU0VTOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAgIDx4aTpp
bmNsdWRlIGhyZWY9InhtbC8lcy54bWwiLz5cbicgJSBjbGFzc19uYW1lKQorCiAgICAgZGVmIHdy
aXRlX2Zvb3RlcihzZWxmKToKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnJycgIDwvY2hhcHRl
cj4KIAogICA8aW5kZXggaWQ9ImluZGV4LWFsbCI+CiAgICAgPHRpdGxlPkluZGV4PC90aXRsZT4K
KyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LWZ1bGwueG1sIj48eGk6ZmFsbGJh
Y2sgLz48L3hpOmluY2x1ZGU+CisgIDwvaW5kZXg+CisgIDxpbmRleCBpZD0iYXBpLWluZGV4LWRl
cHJlY2F0ZWQiIHJvbGU9ImRlcHJlY2F0ZWQiPgorICAgIDx0aXRsZT5JbmRleCBvZiBkZXByZWNh
dGVkIHN5bWJvbHM8L3RpdGxlPgorICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9hcGktaW5kZXgt
ZGVwcmVjYXRlZC54bWwiPjx4aTpmYWxsYmFjayAvPjwveGk6aW5jbHVkZT4KICAgPC9pbmRleD4K
IAogICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYW5ub3RhdGlvbi1nbG9zc2FyeS54bWwiPjx4aTpm
YWxsYmFjayAvPjwveGk6aW5jbHVkZT4KQEAgLTY2LDExICs4MCwxMyBAQCBjbGFzcyBXZWJLaXRE
T01Eb2NHZW5lcmF0b3JEb2NzKFdlYktpdERPTURvY0dlbmVyYXRvcik6CiAKIGNsYXNzIFdlYktp
dERPTURvY0dlbmVyYXRvclNlY3Rpb25zKFdlYktpdERPTURvY0dlbmVyYXRvcik6CiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlcHJlY2F0ZWRfc3lt
Ym9sX2ZpbGUpOgogICAgICAgICBzZWxmLl9maXJzdF9kZWNhbWVsaXplX3JlID0gcmUuY29tcGls
ZSgnKC4pKFtBLVpdW2Etel0rKScpCiAgICAgICAgIHNlbGYuX3NlY29uZF9kZWNhbWVsaXplX3Jl
ID0gcmUuY29tcGlsZSgnKFthLXowLTldKShbQS1aXSknKQogICAgICAgICBzZWxmLl9kb21fY2xh
c3NfcmUgPSByZS5jb21waWxlKCcoXldlYktpdERPTSkoLispJCcpCi0gICAgICAgIHNlbGYuX2Z1
bmN0aW9uX3JlID0gcmUuY29tcGlsZSgnXi4rICguKylcKC4rJCcpCisgICAgICAgIHNlbGYuX2Z1
bmN0aW9uX3JlID0gcmUuY29tcGlsZSgnXi4rICguKylcKCguKylcKSQnKQorCisgICAgICAgIHNl
bGYuX2RlcHJlY2F0ZWRfc3ltYm9scyA9IHNlbGYuX2RlcHJlY2F0ZWRfc3ltYm9scyhkZXByZWNh
dGVkX3N5bWJvbF9maWxlKQogCiAgICAgZGVmIF9kb21fY2xhc3Moc2VsZiwgY2xhc3NfbmFtZSk6
CiAgICAgICAgIHJldHVybiBzZWxmLl9kb21fY2xhc3NfcmUuc3ViKHInXDInLCBjbGFzc19uYW1l
KQpAQCAtODYsNiArMTAyLDMxIEBAIGNsYXNzIFdlYktpdERPTURvY0dlbmVyYXRvclNlY3Rpb25z
KFdlYktpdERPTURvY0dlbmVyYXRvcik6CiAKICAgICAgICAgcmV0dXJuIHJldHZhbAogCisgICAg
ZGVmIF9kZWxldGVkX2NsYXNzKHNlbGYsIGZ1bmN0aW9uKToKKyAgICAgICAgZm9yIGRlbGV0ZWRf
Y2xhc3MgaW4gc2VsZi5ERUxFVEVEX0NMQVNTRVM6CisgICAgICAgICAgICBkZWNhbWVsaXplZCA9
ICd3ZWJraXRfZG9tXyVzJyAlIHNlbGYuX2RvbV9jbGFzc19kZWNhbWVsaXplKGRlbGV0ZWRfY2xh
c3MpLmxvd2VyKCkKKyAgICAgICAgICAgIGlmIGZ1bmN0aW9uLnN0YXJ0c3dpdGgoZGVjYW1lbGl6
ZWQpOgorICAgICAgICAgICAgICAgIHJldHVybiBkZWxldGVkX2NsYXNzCisgICAgICAgIHJldHVy
biBOb25lCisKKyAgICBkZWYgX2RlcHJlY2F0ZWRfc3ltYm9scyhzZWxmLCBzeW1ib2xfZmlsZSk6
CisgICAgICAgIHJldHZhbCA9IHt9CisgICAgICAgIGYgPSBvcGVuKHN5bWJvbF9maWxlLCAncicp
CisgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICBtYXRjaCA9
IHNlbGYuX2Z1bmN0aW9uX3JlLm1hdGNoKGxpbmUpCisgICAgICAgICAgICBpZiBub3QgbWF0Y2g6
CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZnVuY3Rpb24gPSBtYXRj
aC5ncm91cCgxKQorICAgICAgICAgICAgYXJncyA9IG1hdGNoLmdyb3VwKDIpLnNwbGl0KCcsICcp
CisgICAgICAgICAgICBjbGFzc19uYW1lID0gYXJnc1swXS5zdHJpcCgnKicpCisgICAgICAgICAg
ICBpZiBjbGFzc19uYW1lID09ICd2b2lkJzoKKyAgICAgICAgICAgICAgICBjbGFzc19uYW1lID0g
c2VsZi5fZGVsZXRlZF9jbGFzcyhmdW5jdGlvbikKKworICAgICAgICAgICAgcmV0dmFsLnNldGRl
ZmF1bHQoY2xhc3NfbmFtZSwgW10pLmFwcGVuZChmdW5jdGlvbikKKworICAgICAgICByZXR1cm4g
cmV0dmFsCisKICAgICBkZWYgX3N5bWJvbF9saXN0KHNlbGYsIHN5bWJvbF9maWxlKToKICAgICAg
ICAgcmV0dmFsID0gW10KICAgICAgICAgZiA9IG9wZW4oc3ltYm9sX2ZpbGUsICdyJykKQEAgLTEw
OCw2ICsxNDksMTEgQEAgY2xhc3MgV2ViS2l0RE9NRG9jR2VuZXJhdG9yU2VjdGlvbnMoV2ViS2l0
RE9NRG9jR2VuZXJhdG9yKToKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyVzXG4nICUg
Y2xhc3NfbmFtZSkKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnXG4nKQogICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlKCdcbicuam9pbihzZWxmLl9zeW1ib2xfbGlzdChzeW1ib2xfZmlsZSkpICsg
J1xuJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVwcmVjYXRlZF9mdW5jdGlvbnMgPSBz
ZWxmLl9kZXByZWNhdGVkX3N5bWJvbHNbY2xhc3NfbmFtZV0KKyAgICAgICAgICAgIHN5cy5zdGRv
dXQud3JpdGUoJ1xuJy5qb2luKGRlcHJlY2F0ZWRfZnVuY3Rpb25zKSArICdcbicpCisgICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgaWYgbm90IGlzX2N1
c3RvbToKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJ1xuPFNVQlNFQ1RJT04gU3RhbmRh
cmQ+XG4nKQogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnJXNDbGFzc1xuJyAlIGNsYXNz
X25hbWUpCkBAIC0xMzMsMTQgKzE3OSwzMSBAQCBjbGFzcyBXZWJLaXRET01Eb2NHZW5lcmF0b3JT
ZWN0aW9ucyhXZWJLaXRET01Eb2NHZW5lcmF0b3IpOgogICAgICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZSgnd2Via2l0X2RvbV8lc19nZXRfdHlwZVxuJyAlIGRvbV9jbGFzcy5sb3dlcigpKQogICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKCc8L1NFQ1RJT04+XG5cbicpCiAKKyAgICBkZWYgd3JpdGVf
ZGVsZXRlZF9jbGFzc2VzKHNlbGYpOgorICAgICAgICBmb3IgY2xhc3NfbmFtZSBpbiBzZWxmLkRF
TEVURURfQ0xBU1NFUzoKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJzxTRUNUSU9OPlxu
JykKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJzxGSUxFPiVzPC9GSUxFPlxuPFRJVExF
PiVzPC9USVRMRT5cbicgJSAoY2xhc3NfbmFtZSwgY2xhc3NfbmFtZSkpCisgICAgICAgICAgICBz
eXMuc3Rkb3V0LndyaXRlKCdcbicuam9pbihbbmFtZSBmb3IgbmFtZSBpbiBzZWxmLl9kZXByZWNh
dGVkX3N5bWJvbHNbY2xhc3NfbmFtZV0gaWYgbm90IG5hbWUuZW5kc3dpdGgoJ2dldF90eXBlJyld
KSArICdcbicpCisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdcbjxTVUJTRUNUSU9OIFBy
aXZhdGU+XG4nKQorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnd2Via2l0X2RvbV8lc19n
ZXRfdHlwZVxuJyAlIHNlbGYuX2RvbV9jbGFzc19kZWNhbWVsaXplKGNsYXNzX25hbWUpLmxvd2Vy
KCkpCisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCc8L1NFQ1RJT04+XG5cbicpCisKIAog
c3ltYm9sX2ZpbGVzID0gc3lzLnN0ZGluLnJlYWQoKS5zdHJpcCgnXG4nKS5zcGxpdCgnICcpCiBp
ZiAnZG9jcycgaW4gc3lzLmFyZ3ZbMTpdOgogICAgIGdlbmVyYXRvciA9IFdlYktpdERPTURvY0dl
bmVyYXRvckRvY3MoKQogZWxpZiAnc2VjdGlvbnMnIGluIHN5cy5hcmd2WzE6XToKLSAgICBnZW5l
cmF0b3IgPSBXZWJLaXRET01Eb2NHZW5lcmF0b3JTZWN0aW9ucygpCisgICAgZGVwcmVjYXRlZF9z
eW1ib2xfZmlsZSA9IE5vbmUKKyAgICBmb3Igc3ltYm9sX2ZpbGUgaW4gc3ltYm9sX2ZpbGVzOgor
ICAgICAgICBpZiAnV2ViS2l0RE9NRGVwcmVjYXRlZCcgaW4gc3ltYm9sX2ZpbGU6CisgICAgICAg
ICAgICBkZXByZWNhdGVkX3N5bWJvbF9maWxlID0gc3ltYm9sX2ZpbGUKKyAgICAgICAgICAgIGJy
ZWFrCisgICAgZ2VuZXJhdG9yID0gV2ViS2l0RE9NRG9jR2VuZXJhdG9yU2VjdGlvbnMoZGVwcmVj
YXRlZF9zeW1ib2xfZmlsZSkKIAogZ2VuZXJhdG9yLndyaXRlX2hlYWRlcigpCiBmb3Igc3ltYm9s
X2ZpbGUgaW4gc3ltYm9sX2ZpbGVzOgorICAgIGlmICdXZWJLaXRET01EZXByZWNhdGVkJyBpbiBz
eW1ib2xfZmlsZToKKyAgICAgICAgY29udGludWUKICAgICBnZW5lcmF0b3Iud3JpdGVfc2VjdGlv
bihzeW1ib2xfZmlsZSkKK2dlbmVyYXRvci53cml0ZV9kZWxldGVkX2NsYXNzZXMoKQogZ2VuZXJh
dG9yLndyaXRlX2Zvb3RlcigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217391</attachid>
            <date>2013-11-19 23:33:11 -0800</date>
            <delta_ts>2013-11-20 04:07:26 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>wkdom-deprecated.diff</filename>
            <type>text/plain</type>
            <size>98207</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YTA1Njc0Li5lMjlkYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUg
QEAKKzIwMTMtMTEtMTUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIE1hcmsgYWxsIGRlcHJlY2F0ZWQgc3ltYm9scyBpbiBHT2JqZWN0
IERPTSBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI0NDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTW92ZSBkZXByZWNhdGVkIEFQSSBmcm9tIFdlYktpdERPTUN1c3RvbSB0byBhIG5ldyBm
aWxlCisgICAgICAgIFdlYktpdERPTURlcHJlY2F0ZWQgbGVhdmluZyBpbiBXZWJLaXRET01DdXN0
b20gb25seSB0aGUKKyAgICAgICAgbm9uLWRlcHJlY2F0ZWQgQVBJIHRoYXQgaXMgbm90IGF1dG9n
ZW5lcmF0ZWQuIEFsc28gYWRkZWQgdGhlCisgICAgICAgIGRlcHJlY2F0aW9uIGRlY29yYXRpb25z
IGFuZCB0YWdzIGluIHRoZSBkb2N1bWVudGF0aW9uLgorCisgICAgICAgICogYmluZGluZ3MvZ29i
amVjdC9HTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20u
aDoKKyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5zeW1ib2xzOgor
ICAgICAgICAqIGJpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NRGVwcmVjYXRlZC5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmNw
cC4KKyAgICAgICAgKHdlYmtpdF9kb21fYmxvYl93ZWJraXRfc2xpY2UpOgorICAgICAgICAod2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2lkKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X3NldF9pZCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xh
c3NfbmFtZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfY2xhc3NfbmFt
ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3NfbGlzdCk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zvcm1fY2hhbmdl
KToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9ybV9p
bnB1dCk6CisgICAgICAgICh3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyZmxv
dyk6CisgICAgICAgICh3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3dlYmtpdF9yZWdpb25fb3ZlcmZs
b3cpOgorICAgICAgICAod2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudF9u
b2Rlcyk6CisgICAgICAgICh3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25z
X2J5X2NvbnRlbnRfbm9kZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF9wcm9w
ZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX2Jhcl9pbmZvX2NsYXNzX2luaXQpOgorICAgICAg
ICAod2Via2l0X2RvbV9iYXJfaW5mb19pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fYmFyX2lu
Zm9fZ2V0X3Zpc2libGUpOgorICAgICAgICAod2Via2l0X2RvbV9jb25zb2xlX2dldF9tZW1vcnkp
OgorICAgICAgICAod2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5
X2Nzc192YWx1ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfaGlk
ZGVuKToKKyAgICAgICAgKHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF92aXNpYmlsaXR5
X3N0YXRlKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9kb2N1bWVudF9vcGVuKToKKyAgICAg
ICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9pdGVtX2lkKToKKyAgICAgICAgKHdlYmtp
dF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX2lkKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRt
bF9lbGVtZW50X2dldF9pdGVtX3JlZik6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfZWxlbWVu
dF9nZXRfaXRlbV9wcm9wKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9p
dGVtX3Njb3BlKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3Nj
b3BlKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3R5cGUpOgor
ICAgICAgICAod2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZCk6CisgICAg
ICAgICh3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfc2NvcGVkKToKKyAgICAgICAg
KHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X3Byb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2luaXQpOgor
ICAgICAgICAod2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pdGVtKToKKyAg
ICAgICAgKHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbmFtZWRfaXRlbSk6
CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9sZW5n
dGgpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRf
bmFtZXMpOgorICAgICAgICAod2Via2l0X2RvbV9ub2RlX2dldF9hdHRyaWJ1dGVzKToKKyAgICAg
ICAgKHdlYmtpdF9kb21fbm9kZV9oYXNfYXR0cmlidXRlcyk6CisgICAgICAgICh3ZWJraXRfZG9t
X21lbW9yeV9pbmZvX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX21lbW9yeV9p
bmZvX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2RvbV9tZW1vcnlfaW5mb19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3RvdGFsX2pzX2hlYXBfc2l6ZSk6
CisgICAgICAgICh3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF91c2VkX2pzX2hlYXBfc2l6ZSk6
CisgICAgICAgICh3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF9qc19oZWFwX3NpemVfbGltaXQp
OgorICAgICAgICAod2Via2l0X2RvbV9taWNyb19kYXRhX2l0ZW1fdmFsdWVfY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRfZG9tX21pY3JvX2RhdGFfaXRlbV92YWx1ZV9pbml0KToKKyAgICAg
ICAgKHdlYmtpdF9kb21fcGVyZm9ybWFuY2VfZ2V0X21lbW9yeSk6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2Rv
bV9wcm9wZXJ0eV9ub2RlX2xpc3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3By
b3BlcnR5X25vZGVfbGlzdF9pbml0KToKKyAgICAgICAgKHdlYmtpdF9kb21fcHJvcGVydHlfbm9k
ZV9saXN0X2l0ZW0pOgorICAgICAgICAod2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfZ2V0
X2xlbmd0aCk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfc3Rh
cnRfdGltZSk6CisgICAgICAgICh3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfaW5p
dGlhbF90aW1lKToKKyAgICAgICAgKHdlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1lbnRfZ2V0X3By
b2ZpbGUpOgorICAgICAgICAod2Via2l0X2RvbV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmls
ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fZ2V0X2RhdGEp
OgorICAgICAgICAod2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX3NldF9kYXRhKToK
KyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uaC4K
KyAgICAgICAgKiBiaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuc3ltYm9sczog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0
b20uc3ltYm9scy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUt
aGVhZGVycy5wbDogRG8gbm90IGNyZWF0ZQorICAgICAgICBmb3Jkd2FyZCBkZWNsYXJhdGlvbnMg
Zm9yIG5vbi1leGlzdGVudCBjbGFzc2VzIGxpa2UgQ3VzdG9tIGFuZAorICAgICAgICBEZXByZWNh
dGVkLgorCiAyMDEzLTExLTE5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIEVuYWJsZSBIVE1MVGVtcGxhdGVFbGVtZW50IG9uIE1hYyBwb3J0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1ha2VmaWxlLmFtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQppbmRleCA0Nzg5ZjliLi40
NTBkNGJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dOVW1h
a2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZp
bGUuYW0KQEAgLTM5Niw2ICszOTYsNyBAQCB3ZWJraXRndGtfZ2RvbV9idWlsdF9oX2FwaSArPSBc
CiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUJhclByb3AuaCBcCiAJRGVyaXZl
ZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUNvbnNvbGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMv
d2Via2l0ZG9tL1dlYktpdERPTUN1c3RvbS5oIFwKKwlEZXJpdmVkU291cmNlcy93ZWJraXRkb20v
V2ViS2l0RE9NRGVwcmVjYXRlZC5oIFwKIAlEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0
RE9NRE9NV2luZG93Q1NTLmggXAogCURlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01E
T01XaW5kb3cuaCBcCiAJRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTURPTVNlbGVj
dGlvbi5oIFwKQEAgLTQ2Nyw3ICs0NjgsNyBAQCBCVUlMVF9TT1VSQ0VTICs9IFwKIAkkKHdlYmtp
dGd0a19nZG9tX2J1aWx0X3NvdXJjZXMpCiAKIGdkb21fY2xhc3NfbGlzdCA6PSAkKHN1YnN0IFdl
YktpdERPTSwsICQoZmlsdGVyLW91dCAlUHJpdmF0ZSwgJChiYXNlbmFtZSAkKG5vdGRpciAkKHdl
YmtpdGd0a19nZG9tX2J1aWx0X3NvdXJjZXMpKSkpKQotZ2RvbV9jbGFzc19saXN0ICs9IEN1c3Rv
bSBFdmVudFRhcmdldCBPYmplY3QKK2dkb21fY2xhc3NfbGlzdCArPSBDdXN0b20gRXZlbnRUYXJn
ZXQgT2JqZWN0IERlcHJlY2F0ZWQKIERlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb20u
aDogJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL2dvYmplY3QtZ2VuZXJhdGUtaGVhZGVycy5w
bCAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZpbGUuYW0KIAkkKEFNX1ZfR0VO
KWVjaG8gJChnZG9tX2NsYXNzX2xpc3QpIHwgJChQRVJMKSAkPCBnZG9tID4gJEAKIApAQCAtNDg2
LDYgKzQ4Nyw5IEBAICQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NRXZlbnRUYXJnZXQuc3ltYm9sczogJChXZWJDb3JlCiAkKHRvcF9idWlsZGRpcikvRGVy
aXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTUN1c3RvbS5zeW1ib2xzOiAkKFdlYkNvcmUp
L2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLnN5bWJvbHMKIAkkKEFNX1ZfR0VOKWNw
IC1mICQ8ICRACiAKKyQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2Vi
S2l0RE9NRGVwcmVjYXRlZC5zeW1ib2xzOiAkKFdlYkNvcmUpL2JpbmRpbmdzL2dvYmplY3QvV2Vi
S2l0RE9NRGVwcmVjYXRlZC5zeW1ib2xzCisJJChBTV9WX0dFTiljcCAtZiAkPCAkQAorCiBEZXJp
dmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NJS5zeW1ib2xzOiBEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NJS5oCiAJQHRydWUKIApAQCAtNDk3LDYgKzUwMSw3IEBAIERlcml2
ZWRTb3VyY2VzL3dlYmtpdGRvbS93ZWJraXRkb20uc3ltYm9sczogJChnZG9tX3N5bWJvbF9maWxl
cykgJChXZWJDb3JlKS9iaW5kCiAKIEVYVFJBX0RJU1QgKz0gXAogCSQoV2ViQ29yZSkvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uc3ltYm9scyBcCisJJChXZWJDb3JlKS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuc3ltYm9scyBcCiAJJChXZWJDb3JlKS9iaW5k
aW5ncy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LnN5bWJvbHMgXAogCSQoV2ViQ29yZSkv
YmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01PYmplY3Quc3ltYm9scyBcCiAJJChXZWJDb3JlKS9i
aW5kaW5ncy9nb2JqZWN0L3dlYmtpdGRvbS5zeW1ib2xzCkBAIC01MjEsNiArNTI2LDkgQEAgJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01FdmVudFRhcmdl
dFByaXZhdGUuaDogJChXZWJDb3IKICQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy93ZWJr
aXRkb20vV2ViS2l0RE9NQ3VzdG9tLmg6ICQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9XZWJL
aXRET01DdXN0b20uaAogCSQoQU1fVl9HRU4pY3AgLWYgJDwgJEAKIAorJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL3dlYmtpdGRvbS9XZWJLaXRET01EZXByZWNhdGVkLmg6ICQoV2ViQ29y
ZSkvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmgKKwkkKEFNX1ZfR0VOKWNw
IC1mICQ8ICRACisKICMgRmlsdGVyIG91dCBTVkcgYW5kIEluZGV4ZWREQiBmb3Igbm93CiBnZG9t
X2ZlYXR1cmVfZGVmaW5lcyA6PSAkKGZpbHRlci1vdXQgRU5BQkxFX0lOREVYRURfREFUQUJBU0U9
MSwgJChmaWx0ZXItb3V0IEVOQUJMRV9TVkclLCAkKGZlYXR1cmVfZGVmaW5lcykpKSBFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRT0wCiBEZXJpdmVkU291cmNlcy93ZWJraXRkb20vV2ViS2l0RE9NJS5j
cHAgRGVyaXZlZFNvdXJjZXMvd2Via2l0ZG9tL1dlYktpdERPTSUuaCBEZXJpdmVkU291cmNlcy93
ZWJraXRkb20vV2ViS2l0RE9NJVByaXZhdGUuaDogJS5pZGwgJChTQ1JJUFRTX0ZPUl9HRU5FUkFU
RV9CSU5ESU5HUykgJChXZWJDb3JlKS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JHT2Jq
ZWN0LnBtICQoV2ViQ29yZSkvYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbSAkKHN1cHBs
ZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUpCkBAIC01NDUsNiArNTUzLDggQEAgbGliR09iamVjdERP
TUJpbmRpbmdzX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvV2ViS2l0RE9NQ3VzdG9tLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
V2ViS2l0RE9NRGVwcmVjYXRlZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmpl
Y3QvV2ViS2l0RE9NRGVwcmVjYXRlZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9nb2JqZWN0L1dlYktpdERPTUV2ZW50VGFyZ2V0UHJpdmF0ZS5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmNwcAppbmRleCA4Y2Mz
M2Q4Li5lNzc3ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0
L1dlYktpdERPTUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9XZWJLaXRET01DdXN0b20uY3BwCkBAIC0yMSwyMyArMjEsMTMgQEAKIAogI2luY2x1ZGUgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTUF1ZGlvVHJhY2tQcml2
YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NQmxvYi5oIgotI2luY2x1ZGUgIldlYktpdERPTURP
TVN0cmluZ0xpc3QuaCIKLSNpbmNsdWRlICJXZWJLaXRET01IVE1MQ29sbGVjdGlvbi5oIgotI2lu
Y2x1ZGUgIldlYktpdERPTUhUTUxGb3JtRWxlbWVudC5oIgotI2luY2x1ZGUgIldlYktpdERPTUhU
TUxIZWFkRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktpdERPTUhUTUxJbnB1dEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJXZWJLaXRET01IVE1MSW5wdXRFbGVtZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdERPTUhUTUxNZWRpYUVsZW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9N
SFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIldlYktpdERPTUhUTUxUZXh0QXJlYUVs
ZW1lbnRQcml2YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NTm9kZUxpc3QuaCIKLSNpbmNsdWRl
ICJXZWJLaXRET01PYmplY3QuaCIKLSNpbmNsdWRlICJXZWJLaXRET01Qcml2YXRlLmgiCi0jaW5j
bHVkZSAiV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiV2ViS2l0
RE9NVGV4dFRyYWNrUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVZpZGVvVHJhY2tQcml2
YXRlLmgiCi0jaW5jbHVkZSAiV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93LmgiCiAjaW5jbHVkZSAi
Z29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CkBAIC0xNTIsNTQ0ICsxNDIsMyBAQCBnY2hhciogd2Via2l0X2RvbV92aWRlb190cmFja19nZXRf
bGFuZ3VhZ2UoV2ViS2l0RE9NVmlkZW9UcmFjayogc2VsZikKICNlbmRpZiAvKiBFTkFCTEUoVklE
RU9fVFJBQ0spICovCiB9CiAKLS8qIENvbXBhdGliaWxpdHkgKi8KLVdlYktpdERPTUJsb2IqIHdl
YmtpdF9kb21fYmxvYl93ZWJraXRfc2xpY2UoV2ViS2l0RE9NQmxvYiogc2VsZiwgZ2ludDY0IHN0
YXJ0LCBnaW50NjQgZW5kLCBjb25zdCBnY2hhciogY29udGVudF90eXBlKQotewotICAgIHJldHVy
biB3ZWJraXRfZG9tX2Jsb2Jfc2xpY2Uoc2VsZiwgc3RhcnQsIGVuZCwgY29udGVudF90eXBlKTsK
LX0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9jbGFzc19uYW1lKFdlYktp
dERPTUhUTUxFbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVybiB3ZWJraXRfZG9tX2VsZW1l
bnRfZ2V0X2NsYXNzX25hbWUoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQpKTsKLX0KLQotdm9p
ZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfY2xhc3NfbmFtZShXZWJLaXRET01IVE1MRWxl
bWVudCogZWxlbWVudCwgY29uc3QgZ2NoYXIqIHZhbHVlKQotewotICAgIHdlYmtpdF9kb21fZWxl
bWVudF9zZXRfY2xhc3NfbmFtZShXRUJLSVRfRE9NX0VMRU1FTlQoZWxlbWVudCksIHZhbHVlKTsK
LX0KLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pZChXZWJLaXRET01IVE1M
RWxlbWVudCogZWxlbWVudCkKLXsKLSAgICBnX3dhcm5pbmcoIlRoZSBnZXRfaWQgbWV0aG9kIG9u
IFdlYktpdERPTUhUTUxFbGVtZW50IGlzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgb25lIGluIFdlYktp
dERPTUVsZW1lbnQgaW5zdGVhZC4iKTsKLSAgICByZXR1cm4gd2Via2l0X2RvbV9lbGVtZW50X2dl
dF9pZChXRUJLSVRfRE9NX0VMRU1FTlQoZWxlbWVudCkpOwotfQotCi12b2lkIHdlYmtpdF9kb21f
aHRtbF9lbGVtZW50X3NldF9pZChXZWJLaXRET01IVE1MRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
Z2NoYXIqIHZhbHVlKQotewotICAgIGdfd2FybmluZygiVGhlIHNldF9pZCBtZXRob2Qgb24gV2Vi
S2l0RE9NSFRNTEVsZW1lbnQgaXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBvbmUgaW4gV2ViS2l0RE9N
RWxlbWVudCBpbnN0ZWFkLiIpOwotICAgIHdlYmtpdF9kb21fZWxlbWVudF9zZXRfaWQoV0VCS0lU
X0RPTV9FTEVNRU5UKGVsZW1lbnQpLCB2YWx1ZSk7Ci19Ci0KLWdib29sZWFuIHdlYmtpdF9kb21f
d2Via2l0X25hbWVkX2Zsb3dfZ2V0X292ZXJmbG93KFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyog
ZmxvdykKLXsKLSAgICBnX3dhcm5pbmcoIlRoZSBXZWJLaXRET01XZWJLaXROYW1lZEZsb3c6Om92
ZXJmbG93IHByb3BlcnR5IGhhcyBiZWVuIHJlbmFtZWQgdG8gV2ViS2l0RE9NV2ViS2l0TmFtZWRG
bG93OjpvdmVyc2V0LiBQbGVhc2UgdXBkYXRlIHlvdXIgY29kZSB0byB1c2UgdGhlIG5ldyBuYW1l
LiIpOwotICAgIHJldHVybiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyc2V0
KGZsb3cpOwotfQotCi1XZWJLaXRET01ET01Ub2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVt
ZW50X2dldF9jbGFzc19saXN0KFdlYktpdERPTUhUTUxFbGVtZW50KiBlbGVtZW50KQotewotICAg
IHJldHVybiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsYXNzX2xpc3QoV0VCS0lUX0RPTV9FTEVN
RU5UKGVsZW1lbnQpKTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0
X3JlZ2lvbl9vdmVyZmxvdyhXZWJLaXRET01FbGVtZW50KiBlbGVtZW50KQotewotICAgIHJldHVy
biB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X3dlYmtpdF9yZWdpb25fb3ZlcnNldChlbGVtZW50KTsK
LX0KLQotV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0
X2NvbnRlbnRfbm9kZXMoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCi17Ci0g
ICAgcmV0dXJuIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X2NvbnRlbnQobmFtZWRG
bG93KTsKLQotfQotCi1XZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRf
Zmxvd19nZXRfcmVnaW9uc19ieV9jb250ZW50X25vZGUoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93
KiBuYW1lZEZsb3csIFdlYktpdERPTU5vZGUqIGNvbnRlbnROb2RlKQotewotICAgIHJldHVybiB3
ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRlbnQobmFtZWRG
bG93LCBjb250ZW50Tm9kZSk7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVu
dF9kaXNwYXRjaF9mb3JtX2NoYW5nZShXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpCi17
Ci0gICAgZ193YXJuaW5nKCJUaGUgb25mb3JtY2hhbmdlIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIHRoZSBET00gc3BlYywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIik7
Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2lu
cHV0KFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2VsZikKLXsKLSAgICBnX3dhcm5pbmcoIlRo
ZSBvbmZvcm1pbnB1dCBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9N
IHNwZWMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIpOwotfQotCi0vLyBXZWJLaXRET01C
YXJJbmZvCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01CYXJJbmZvIHsKLSAgICBXZWJLaXRE
T01PYmplY3QgcGFyZW50X2luc3RhbmNlOwotfSBXZWJLaXRET01CYXJJbmZvOwotCi10eXBlZGVm
IHN0cnVjdCBfV2ViS2l0RE9NQmFySW5mb0NsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFz
cyBwYXJlbnRfY2xhc3M7Ci19IFdlYktpdERPTUJhckluZm9DbGFzczsKLQotR19ERUZJTkVfVFlQ
RShXZWJLaXRET01CYXJJbmZvLCB3ZWJraXRfZG9tX2Jhcl9pbmZvLCBXRUJLSVRfVFlQRV9ET01f
T0JKRUNUKQotCi10eXBlZGVmIGVudW0gewotICAgIFBST1BfMCwKLSAgICBQUk9QX1ZJU0lCTEUs
Ci19IFdlYktpdERPTUJhckluZm9Qcm9wZXJ0aWVzOwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X2Jhcl9pbmZvX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQs
IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIHN3aXRjaCAocHJvcGVy
dHlJZCkgewotICAgIGNhc2UgUFJPUF9WSVNJQkxFOiB7Ci0gICAgICAgIFdFQktJVF9XQVJOX0ZF
QVRVUkVfTk9UX1BSRVNFTlQoIkJhckluZm8iKQotICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCBGQUxTRSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAg
ICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlk
LCBwc3BlYyk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgd2Via2l0
X2RvbV9iYXJfaW5mb19jbGFzc19pbml0KFdlYktpdERPTUJhckluZm9DbGFzcyogcmVxdWVzdENs
YXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Mo
cmVxdWVzdENsYXNzKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9k
b21fYmFyX2luZm9fZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9w
cm9wZXJ0eShnb2JqZWN0Q2xhc3MsCi0gICAgICAgIFBST1BfVklTSUJMRSwKLSAgICAgICAgZ19w
YXJhbV9zcGVjX2Jvb2xlYW4oInZpc2libGUiLAotICAgICAgICAgICAgImJhcl9pbmZvX3Zpc2li
bGUgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgInJl
YWQtb25seSAgZ2Jvb2xlYW4gQmFySW5mby52aXNpYmxlIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
ZG9lcyBub3RoaW5nIiwKLSAgICAgICAgICAgIEZBTFNFLAotICAgICAgICAgICAgV0VCS0lUX1BB
UkFNX1JFQURBQkxFKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fYmFyX2luZm9faW5p
dChXZWJLaXRET01CYXJJbmZvKikKLXsKLX0KLQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9iYXJfaW5m
b19nZXRfdmlzaWJsZSh2b2lkKikKLXsKLSAgICBnX3dhcm5pbmcoIlRoZSBCYXJJbmZvIHR5cGUg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gc3BlYywgdGhpcyBmdW5jdGlvbiBkb2VzIG5v
dGhpbmcuIik7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0vLyBXZWJLaXRET01Db25zb2xlCi0K
LXZvaWQqIHdlYmtpdF9kb21fY29uc29sZV9nZXRfbWVtb3J5KFdlYktpdERPTUNvbnNvbGUqKQot
ewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLS8vIFdlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24KLQotV2Vi
S2l0RE9NQ1NTVmFsdWUqIHdlYmtpdF9kb21fY3NzX3N0eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9w
ZXJ0eV9jc3NfdmFsdWUoV2ViS2l0RE9NQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IGdjaGFy
KikKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18p
OwotICAgIHJldHVybiAwOwotfQotCi0vLyBXZWJLaXRET01Eb2N1bWVudAotCi1nYm9vbGVhbiB3
ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfaGlkZGVuKFdlYktpdERPTURvY3VtZW50KikK
LXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3Zl
ZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwot
ICAgIHJldHVybiBGQUxTRTsKLX0KLQotZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dl
YmtpdF92aXNpYmlsaXR5X3N0YXRlKFdlYktpdERPTURvY3VtZW50KikKLXsKLSAgICBnX3dhcm5p
bmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
dGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiBnX3N0
cmR1cCgiIik7Ci19Ci0KLS8vIFdlYktpdERPTUhUTUxEb2N1bWVudAotCi12b2lkIHdlYmtpdF9k
b21faHRtbF9kb2N1bWVudF9vcGVuKFdlYktpdERPTUhUTUxEb2N1bWVudCopCi17Ci0gICAgZ193
YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLX0KLQotLy8gV2Vi
S2l0RE9NSFRNTEVsZW1lbnQKLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaXRl
bV9pZChXZWJLaXRET01IVE1MRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLXsKLSAgICBnX3dhcm5p
bmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
dGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotfQotCi1nY2hhciogd2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQot
ewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0g
ICAgcmV0dXJuIGdfc3RyZHVwKCIiKTsKLX0KLQotV2ViS2l0RE9NRE9NU2V0dGFibGVUb2tlbkxp
c3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3JlZihXZWJLaXRET01IVE1MRWxl
bWVudCopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVu
Y19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQotV2ViS2l0RE9NRE9NU2V0dGFibGVUb2tlbkxpc3Qq
IHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3Byb3AoV2ViS2l0RE9NSFRNTEVsZW1l
bnQqKQotewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNf
Xyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0
X2l0ZW1fc2NvcGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqLCBnYm9vbGVhbikKLXsKLSAgICBnX3dh
cm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktp
dCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotfQotCi1nYm9vbGVh
biB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9zY29wZShXZWJLaXRET01IVE1MRWxl
bWVudCopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVu
Y19fKTsKLSAgICByZXR1cm4gRkFMU0U7Ci19Ci0KLXZvaWQqIHdlYmtpdF9kb21faHRtbF9lbGVt
ZW50X2dldF9pdGVtX3R5cGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotewotICAgIGdfd2Fybmlu
ZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLS8vIFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQKLQotdm9pZCB3ZWJraXRfZG9tX2h0bWxf
c3R5bGVfZWxlbWVudF9zZXRfc2NvcGVkKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqLCBnYm9v
bGVhbikKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5j
X18pOwotfQotCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfc2Nv
cGVkKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqKQotewotICAgIGdfd2FybmluZygiJXM6IHRo
aXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0
aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0v
LyBXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24KLQotdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTUhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiB7Ci0gICAgV2ViS2l0RE9NSFRNTENvbGxl
Y3Rpb24gcGFyZW50X2luc3RhbmNlOwotfSBXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rp
b247Ci0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25D
bGFzcyB7Ci0gICAgV2ViS2l0RE9NSFRNTENvbGxlY3Rpb25DbGFzcyBwYXJlbnRfY2xhc3M7Ci19
IFdlYktpdERPTUhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbkNsYXNzOwotCi1HX0RFRklORV9UWVBF
KFdlYktpdERPTUhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiwgd2Via2l0X2RvbV9odG1sX3Byb3Bl
cnRpZXNfY29sbGVjdGlvbiwgV0VCS0lUX1RZUEVfRE9NX0hUTUxfQ09MTEVDVElPTikKLQotZW51
bSB7Ci0gICAgSFRNTF9QUk9QRVJUSUVTX0NPTExFQ1RJT05fUFJPUF8wLAotICAgIEhUTUxfUFJP
UEVSVElFU19DT0xMRUNUSU9OX1BST1BfTEVOR1RILAotICAgIEhUTUxfUFJPUEVSVElFU19DT0xM
RUNUSU9OX1BST1BfTkFNRVMsCi19OwotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxfcHJv
cGVydGllc19jb2xsZWN0aW9uX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQotewotICAgIHN3aXRj
aCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgSFRNTF9QUk9QRVJUSUVTX0NPTExFQ1RJT05fUFJP
UF9MRU5HVEg6IHsKLSAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWlj
cm9kYXRhIikKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgSFRNTF9QUk9QRVJUSUVT
X0NPTExFQ1RJT05fUFJPUF9OQU1FUzogewotICAgICAgICBXRUJLSVRfV0FSTl9GRUFUVVJFX05P
VF9QUkVTRU5UKCJNaWNyb2RhdGEiKQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVs
dDoKLSAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJv
cGVydHlJZCwgcHNwZWMpOwotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fY2xhc3NfaW5pdChXZWJLaXRE
T01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DbGFzcyogcmVxdWVzdENsYXNzKQotewotICAgIEdP
YmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsK
LSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0
aWVzX2NvbGxlY3Rpb25fZ2V0X3Byb3BlcnR5OwotCi0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCi0gICAgICAgIEhUTUxfUFJPUEVSVElFU19DT0xMRUNU
SU9OX1BST1BfTEVOR1RILAotICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmcoImxlbmd0aCIsCi0g
ICAgICAgICAgICAiaHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbGVuZ3RoIC0gcmVtb3ZlZCBm
cm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgIGd1bG9u
ZyBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24ubGVuZ3RoIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
ZG9lcyBub3RoaW5nIiwKLSAgICAgICAgICAgIDAsCi0gICAgICAgICAgICBHX01BWFVMT05HLAot
ICAgICAgICAgICAgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwotCi0g
ICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCi0gICAgICAg
IEhUTUxfUFJPUEVSVElFU19DT0xMRUNUSU9OX1BST1BfTkFNRVMsCi0gICAgICAgIGdfcGFyYW1f
c3BlY19vYmplY3QoIm5hbWVzIiwKLSAgICAgICAgICAgICJodG1sX3Byb3BlcnRpZXNfY29sbGVj
dGlvbl9uYW1lcyAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCi0gICAgICAg
ICAgICAicmVhZC1vbmx5ICBXZWJLaXRET01ET01TdHJpbmdMaXN0KiBIVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb24ubmFtZXMgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAotICAg
ICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX0RPTV9TVFJJTkdfTElTVCwKLSAgICAgICAgICAgIFdF
QktJVF9QQVJBTV9SRUFEQUJMRSkpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2h0bWxf
cHJvcGVydGllc19jb2xsZWN0aW9uX2luaXQoV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uKiByZXF1ZXN0KQotewotfQotCi1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX2h0bWxfcHJv
cGVydGllc19jb2xsZWN0aW9uX2l0ZW0odm9pZCosIGd1bG9uZykKLXsKLSAgICBnX3dhcm5pbmco
IiVzOiB0aGUgUHJvcGVydGllc0NvbGxlY3Rpb24gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJv
bSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotdm9pZCogd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlv
bl9uYW1lZF9pdGVtKHZvaWQqLCBjb25zdCBnY2hhciopCi17Ci0gICAgZ193YXJuaW5nKCIlczog
dGhlIFByb3BlcnRpZXNDb2xsZWN0aW9uIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2Vi
S2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJu
IDA7Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dl
dF9sZW5ndGgodm9pZCopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhlIFByb3BlcnRpZXNDb2xs
ZWN0aW9uIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9u
IGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVdlYktpdERP
TURPTVN0cmluZ0xpc3QqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0
X25hbWVzKHZvaWQqKQotewotICAgIGdfd2FybmluZygiJXM6IHRoZSBQcm9wZXJ0aWVzQ29sbGVj
dGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiAwOwotfQotCi0vLyBXZWJLaXRE
T01Ob2RlCi0KLVdlYktpdERPTU5hbWVkTm9kZU1hcCogd2Via2l0X2RvbV9ub2RlX2dldF9hdHRy
aWJ1dGVzKFdlYktpdERPTU5vZGUqKQotewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rp
b25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMg
bm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWdib29sZWFuIHdlYmtp
dF9kb21fbm9kZV9oYXNfYXR0cmlidXRlcyhXZWJLaXRET01Ob2RlKikKLXsKLSAgICBnX3dhcm5p
bmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
dGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiBGQUxT
RTsKLX0KLQotLy8gV2ViS2l0RE9NTWVtb3J5SW5mbwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0
RE9NTWVtb3J5SW5mbyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKLX0g
V2ViS2l0RE9NTWVtb3J5SW5mbzsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTU1lbW9yeUlu
Zm9DbGFzcyB7Ci0gICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwotfSBXZWJL
aXRET01NZW1vcnlJbmZvQ2xhc3M7Ci0KLQotR19ERUZJTkVfVFlQRShXZWJLaXRET01NZW1vcnlJ
bmZvLCB3ZWJraXRfZG9tX21lbW9yeV9pbmZvLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQotCi1l
bnVtIHsKLSAgICBET01fTUVNT1JZX1BST1BfMCwKLSAgICBET01fTUVNT1JZX1BST1BfVE9UQUxf
SlNfSEVBUF9TSVpFLAotICAgIERPTV9NRU1PUllfUFJPUF9VU0VEX0pTX0hFQVBfU0laRSwKLSAg
ICBET01fTUVNT1JZX1BST1BfSlNfSEVBUF9TSVpFX0xJTUlULAotfTsKLQotc3RhdGljIHZvaWQg
d2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKLXsKLSAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKLSAgICBjYXNlIERPTV9NRU1PUllfUFJPUF9UT1RBTF9KU19I
RUFQX1NJWkU6IHsKLSAgICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIDApOwotICAgICAg
ICBXRUJLSVRfV0FSTl9GRUFUVVJFX05PVF9QUkVTRU5UKCJNZW1vcnlJbmZvIikKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIGNhc2UgRE9NX01FTU9SWV9QUk9QX1VTRURfSlNfSEVBUF9TSVpF
OiB7Ci0gICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCAwKTsKLSAgICAgICAgV0VCS0lU
X1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVtb3J5SW5mbyIpCi0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBjYXNlIERPTV9NRU1PUllfUFJPUF9KU19IRUFQX1NJWkVfTElNSVQ6IHsKLSAg
ICAgICAgZ192YWx1ZV9zZXRfdWxvbmcodmFsdWUsIDApOwotICAgICAgICBXRUJLSVRfV0FSTl9G
RUFUVVJFX05PVF9QUkVTRU5UKCJNZW1vcnlJbmZvIikKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2NsYXNzX2luaXQoV2ViS2l0RE9NTWVt
b3J5SW5mb0NsYXNzKiByZXF1ZXN0Q2xhc3MpCi17Ci0gICAgR09iamVjdENsYXNzKiBnb2JqZWN0
Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwotICAgIGdvYmplY3RDbGFzcy0+
Z2V0X3Byb3BlcnR5ID0gd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfcHJvcGVydHk7Ci0KLSAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKLSAgICAgICAg
RE9NX01FTU9SWV9QUk9QX1RPVEFMX0pTX0hFQVBfU0laRSwKLSAgICAgICAgZ19wYXJhbV9zcGVj
X3Vsb25nKCJ0b3RhbC1qcy1oZWFwLXNpemUiLAotICAgICAgICAgICAgIm1lbW9yeV9pbmZvX3Rv
dGFsLWpzLWhlYXAtc2l6ZSAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCi0g
ICAgICAgICAgICAicmVhZC1vbmx5ICBndWxvbmcgTWVtb3J5SW5mby50b3RhbC1qcy1oZWFwLXNp
emUgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgMCwK
LSAgICAgICAgICAgIEdfTUFYVUxPTkcsCi0gICAgICAgICAgICAwLAotICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0gICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0
eShnb2JqZWN0Q2xhc3MsCi0gICAgICAgIERPTV9NRU1PUllfUFJPUF9VU0VEX0pTX0hFQVBfU0la
RSwKLSAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKCJ1c2VkLWpzLWhlYXAtc2l6ZSIsCi0gICAg
ICAgICAgICAibWVtb3J5X2luZm9fdXNlZC1qcy1oZWFwLXNpemUgLSByZW1vdmVkIGZyb20gV2Vi
S2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAgInJlYWQtb25seSAgZ3Vsb25nIE1lbW9y
eUluZm8udXNlZC1qcy1oZWFwLXNpemUgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhp
bmciLAotICAgICAgICAgICAgMCwKLSAgICAgICAgICAgIEdfTUFYVUxPTkcsCi0gICAgICAgICAg
ICAwLAotICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0gICAgZ19vYmplY3Rf
Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCi0gICAgICAgIERPTV9NRU1PUllf
UFJPUF9KU19IRUFQX1NJWkVfTElNSVQsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygianMt
aGVhcC1zaXplLWxpbWl0IiwKLSAgICAgICAgICAgICJtZW1vcnlfaW5mb19qcy1oZWFwLXNpemUt
bGltaXQgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAotICAgICAgICAgICAg
InJlYWQtb25seSAgZ3Vsb25nIE1lbW9yeUluZm8uanMtaGVhcC1zaXplLWxpbWl0IC0gcmVtb3Zl
ZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKLSAgICAgICAgICAgIDAsCi0gICAgICAgICAg
ICBHX01BWFVMT05HLAotICAgICAgICAgICAgMCwKLSAgICAgICAgICAgIFdFQktJVF9QQVJBTV9S
RUFEQUJMRSkpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2luaXQo
V2ViS2l0RE9NTWVtb3J5SW5mbyopCi17Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9p
bmZvX2dldF90b3RhbF9qc19oZWFwX3NpemUodm9pZCopCi17Ci0gICAgZ193YXJuaW5nKCIlczog
dGhlIE1lbW9yeUluZm8gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMg
ZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQot
Z3Vsb25nIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3VzZWRfanNfaGVhcF9zaXplKHZvaWQq
KQotewotICAgIGdfd2FybmluZygiJXM6IHRoZSBNZW1vcnlJbmZvIG9iamVjdCBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNf
Xyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dl
dF9qc19oZWFwX3NpemVfbGltaXQodm9pZCopCi17Ci0gICAgZ193YXJuaW5nKCIlczogdGhlIE1l
bW9yeUluZm8gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQotLy8gV2Vi
S2l0RE9NTWljcm9EYXRhSXRlbVZhbHVlCi0KLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRET01NaWNy
b0RhdGFJdGVtVmFsdWUgewotICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7Ci19
IFdlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZTsKLQotdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERP
TU1pY3JvRGF0YUl0ZW1WYWx1ZUNsYXNzIHsKLSAgICBXZWJLaXRET01PYmplY3RDbGFzcyBwYXJl
bnRfY2xhc3M7Ci19IFdlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZUNsYXNzOwotCi1HX0RFRklO
RV9UWVBFKFdlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZSwgd2Via2l0X2RvbV9taWNyb19kYXRh
X2l0ZW1fdmFsdWUsIFdFQktJVF9UWVBFX0RPTV9PQkpFQ1QpCi0KLXN0YXRpYyB2b2lkIHdlYmtp
dF9kb21fbWljcm9fZGF0YV9pdGVtX3ZhbHVlX2NsYXNzX2luaXQoV2ViS2l0RE9NTWljcm9EYXRh
SXRlbVZhbHVlQ2xhc3MqKQotewotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX21pY3JvX2Rh
dGFfaXRlbV92YWx1ZV9pbml0KFdlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZSopCi17Ci19Ci0K
LS8vIFdlYktpdERPTVBlcmZvcm1hbmNlCi0KLXZvaWQqIHdlYmtpdF9kb21fcGVyZm9ybWFuY2Vf
Z2V0X21lbW9yeShXZWJLaXRET01QZXJmb3JtYW5jZSopCi17Ci0gICAgZ193YXJuaW5nKCIlczog
dGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVu
Y3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKLSAgICByZXR1cm4gMDsKLX0KLQotLy8g
V2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdAotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NUHJv
cGVydHlOb2RlTGlzdCB7Ci0gICAgV2ViS2l0RE9NTm9kZUxpc3QgcGFyZW50X2luc3RhbmNlOwot
fSBXZWJLaXRET01Qcm9wZXJ0eU5vZGVMaXN0OwotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
UHJvcGVydHlOb2RlTGlzdENsYXNzIHsKLSAgICBXZWJLaXRET01Ob2RlTGlzdENsYXNzIHBhcmVu
dF9jbGFzczsKLX0gV2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdENsYXNzOwotCi1HX0RFRklORV9U
WVBFKFdlYktpdERPTVByb3BlcnR5Tm9kZUxpc3QsIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9s
aXN0LCBXRUJLSVRfVFlQRV9ET01fTk9ERV9MSVNUKQotCi1lbnVtIHsKLSAgICBQUk9QRVJUWV9O
T0RFX0xJU1RfUFJPUF8wLAotICAgIFBST1BFUlRZX05PREVfTElTVF9QUk9QX0xFTkdUSCwKLX07
Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQotewotICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewotICAgIGNhc2UgUFJP
UEVSVFlfTk9ERV9MSVNUX1BST1BfTEVOR1RIOiB7Ci0gICAgICAgIGdfdmFsdWVfc2V0X3Vsb25n
KHZhbHVlLCAwKTsKLSAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWlj
cm9kYXRhIikKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEdf
T0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVj
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3By
b3BlcnR5X25vZGVfbGlzdF9jbGFzc19pbml0KFdlYktpdERPTVByb3BlcnR5Tm9kZUxpc3RDbGFz
cyogcmVxdWVzdENsYXNzKQotewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19P
QkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKLSAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0
eSA9IHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2dldF9wcm9wZXJ0eTsKLQotICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAotICAgICAgICBQUk9Q
RVJUWV9OT0RFX0xJU1RfUFJPUF9MRU5HVEgsCi0gICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygi
bGVuZ3RoIiwKLSAgICAgICAgICAgICJwcm9wZXJ0eV9ub2RlX2xpc3RfbGVuZ3RoIC0gcmVtb3Zl
ZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKLSAgICAgICAgICAgICJyZWFkLW9ubHkgIGd1
bG9uZyBQcm9wZXJ0eU5vZGVMaXN0Lmxlbmd0aCAtIHJlbW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMg
bm90aGluZyIsCi0gICAgICAgICAgICAwLAotICAgICAgICAgICAgR19NQVhVTE9ORywKLSAgICAg
ICAgICAgIDAsCi0gICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKLX0KLQotc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfaW5pdChXZWJLaXRET01Qcm9w
ZXJ0eU5vZGVMaXN0KikKLXsKLX0KLQotV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9wcm9wZXJ0
eV9ub2RlX2xpc3RfaXRlbSh2b2lkKiwgZ3Vsb25nKQotewotICAgIGdfd2FybmluZygiJXM6IHRo
ZSBQcm9wZXJ0eU5vZGVMaXN0IG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLWd1bG9uZyB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfbGVuZ3RoKHZvaWQq
KQotewotICAgIGdfd2FybmluZygiJXM6IHRoZSBQcm9wZXJ0eU5vZGVMaXN0IG9iamVjdCBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBf
X2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWdkb3VibGUgd2Via2l0X2RvbV9odG1sX21l
ZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0X3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCopCi17
Ci0gICAgZ193YXJuaW5nKCIlczogdGhlIEhUTUxNZWRpYUVsZW1lbnQ6c3RhcnQtdGltZSBwcm9w
ZXJ0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90
aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWdkb3VibGUgd2Via2l0X2Rv
bV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2luaXRpYWxfdGltZShXZWJLaXRET01IVE1MTWVkaWFF
bGVtZW50KikKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGUgSFRNTE1lZGlhRWxlbWVudDppbml0
aWFsLXRpbWUgcHJvcGVydHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5j
dGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAgIHJldHVybiAwOwotfQotCi0vLyBX
ZWJLaXRET01IVE1MSGVhZEVsZW1lbnQKLQotZ2NoYXIqIHdlYmtpdF9kb21faHRtbF9oZWFkX2Vs
ZW1lbnRfZ2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50KiBzZWxmKQotewotICAg
IGdfd2FybmluZygiJXM6IHRoZSBIZWFkRWxlbWVudCBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBm
cm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOwotICAg
IHJldHVybiBnX3N0cmR1cCgiIik7Ci19Ci0KLXZvaWQgd2Via2l0X2RvbV9odG1sX2hlYWRfZWxl
bWVudF9zZXRfcHJvZmlsZShXZWJLaXRET01IVE1MSGVhZEVsZW1lbnQqIHNlbGYsIGNvbnN0IGdj
aGFyKiB2YWx1ZSkKLXsKLSAgICBnX3dhcm5pbmcoIiVzOiB0aGUgSGVhZEVsZW1lbnQgb2JqZWN0
IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5n
LiIsIF9fZnVuY19fKTsKLX0KLQotLy8gV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0K
LWdjaGFyKiB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fZ2V0X2RhdGEoV2ViS2l0
RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBzZWxmKQotewotICAgIGdfd2FybmluZygiJXM6IHRo
aXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0
aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Ci0gICAgcmV0dXJuIGdfc3RyZHVwKCIiKTsK
LX0KLQotdm9pZCB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fc2V0X2RhdGEoV2Vi
S2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUsIEdF
cnJvcioqIGVycm9yKQotewotICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBo
YXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4i
LCBfX2Z1bmNfXyk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTUN1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9X
ZWJLaXRET01DdXN0b20uaAppbmRleCAzNTExOWMxLi5iNDQ3MGVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmgKQEAgLTk4LDQ4NiAr
OTgsNiBAQCBXRUJLSVRfQVBJIGdjaGFyKiB3ZWJraXRfZG9tX3ZpZGVvX3RyYWNrX2dldF9raW5k
KFdlYktpdERPTVZpZGVvVHJhY2sqIHNlbGYpOwogICovCiBXRUJLSVRfQVBJIGdjaGFyKiB3ZWJr
aXRfZG9tX3ZpZGVvX3RyYWNrX2dldF9sYW5ndWFnZShXZWJLaXRET01WaWRlb1RyYWNrKiBzZWxm
KTsKIAotLyoqCi0gKiB3ZWJraXRfZG9tX2Jsb2Jfd2Via2l0X3NsaWNlOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUJsb2IKLSAqIEBzdGFydDogQSAjZ2ludDY0Ci0gKiBAZW5kOiBBICNnaW50NjQK
LSAqIEBjb250ZW50X3R5cGU6IEEgI2djaGFyCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIG5v
bmUpOgotICovCi1XRUJLSVRfQVBJIFdlYktpdERPTUJsb2IqIHdlYmtpdF9kb21fYmxvYl93ZWJr
aXRfc2xpY2UoV2ViS2l0RE9NQmxvYiogc2VsZiwgZ2ludDY0IHN0YXJ0LCBnaW50NjQgZW5kLCBj
b25zdCBnY2hhciogY29udGVudF90eXBlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZWxl
bWVudF9nZXRfY2xhc3NfbmFtZToKLSAqIEBlbGVtZW50OiBBICNXZWJLaXRET01IVE1MRWxlbWVu
dAotICoKLSAqIFJldHVybnM6IEEgI2djaGFyCi0gKgotICovCi1XRUJLSVRfQVBJIGdjaGFyKiB3
ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3NfbmFtZShXZWJLaXRET01IVE1MRWxlbWVu
dCogZWxlbWVudCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2NsYXNz
X25hbWU6Ci0gKiBAZWxlbWVudDogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQKLSAqIEB2YWx1ZTog
QSAjZ2NoYXIKLSAqCi0gKi8KLVdFQktJVF9BUEkgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVu
dF9zZXRfY2xhc3NfbmFtZShXZWJLaXRET01IVE1MRWxlbWVudCogZWxlbWVudCwgY29uc3QgZ2No
YXIqIHZhbHVlKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3Nf
bGlzdDoKLSAqIEBlbGVtZW50OiBBICNXZWJLaXRET01IVE1MRWxlbWVudAotICoKLSAqIFJldHVy
bnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0gKi8KLVdFQktJVF9BUEkgV2ViS2l0RE9NRE9NVG9r
ZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3NfbGlzdChXZWJLaXRET01I
VE1MRWxlbWVudCogZWxlbWVudCk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxl
bWVudF9kaXNwYXRjaF9mb3JtX2NoYW5nZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9y
bUVsZW1lbnQKLSAqCi0gKi8KLVdFQktJVF9BUEkgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9l
bGVtZW50X2Rpc3BhdGNoX2Zvcm1fY2hhbmdlKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCogc2Vs
Zik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3Jt
X2lucHV0OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxGb3JtRWxlbWVudAotICoKLSAqLwot
V0VCS0lUX0FQSSB2b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9y
bV9pbnB1dChXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtp
dF9kb21faHRtbF9lbGVtZW50X2dldF9pZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxl
bWVudAotICoKLSAqIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIFVzZSB3ZWJraXRfZG9tX2Vs
ZW1lbnRfc2V0X2lkKCkgaW5zdGVhZC4KLSAqCi0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSoq
LwotV0VCS0lUX0FQSSBnY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2lkKFdlYktp
dERPTUhUTUxFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVu
dF9zZXRfaWQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQKLSAqIEB2YWx1ZTog
QSAjZ2NoYXIKLSAqCi0gKiBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBVc2Ugd2Via2l0X2Rv
bV9lbGVtZW50X3NldF9pZCgpIGluc3RlYWQuCi0gKgotKiovCi1XRUJLSVRfQVBJIHZvaWQgd2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2lkKFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmLCBj
b25zdCBnY2hhciogdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zs
b3dfZ2V0X292ZXJmbG93OgotICogQGZsb3c6IEEgI1dlYktpdERPTVdlYktpdE5hbWVkRmxvdwot
ICoKLSAqIFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotICovCi1XRUJLSVRfQVBJIGdib29sZWFu
IHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X292ZXJmbG93KFdlYktpdERPTVdlYktp
dE5hbWVkRmxvdyogZmxvdyk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9lbGVtZW50X2dldF93ZWJr
aXRfcmVnaW9uX292ZXJmbG93OgotICogQGVsZW1lbnQ6IEEgI1dlYktpdERPTUVsZW1lbnQKLSAq
Ci0gKiBSZXR1cm5zOiBBICNnY2hhcgotICoKLSAqLwotV0VCS0lUX0FQSSBnY2hhciogd2Via2l0
X2RvbV9lbGVtZW50X2dldF93ZWJraXRfcmVnaW9uX292ZXJmbG93KFdlYktpdERPTUVsZW1lbnQq
IGVsZW1lbnQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X2Nv
bnRlbnRfbm9kZXM6Ci0gKiBAZmxvdzogQSAjV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93Ci0gKgot
ICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgotICoKLSAqLwotV0VCS0lUX0FQSSBXZWJLaXRE
T01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudF9ub2Rl
cyhXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIGZsb3cpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
d2Via2l0X25hbWVkX2Zsb3dfZ2V0X3JlZ2lvbnNfYnlfY29udGVudF9ub2RlOgotICogQGZsb3c6
IEEgI1dlYktpdERPTVdlYktpdE5hbWVkRmxvdwotICogQGNvbnRlbnRfbm9kZTogQSAjV2ViS2l0
RE9NTm9kZQotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0gKi8KLVdFQktJ
VF9BUEkgV2ViS2l0RE9NTm9kZUxpc3QqIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0
X3JlZ2lvbnNfYnlfY29udGVudF9ub2RlKFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyogZmxvdywg
V2ViS2l0RE9NTm9kZSogY29udGVudF9ub2RlKTsKLQotV0VCS0lUX0FQSSBHVHlwZSB3ZWJraXRf
ZG9tX2Jhcl9pbmZvX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fYmFyX2lu
Zm9fZ2V0X3Zpc2libGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NQmFySW5mbwotICoKLSAqIFRo
ZSBCYXJJbmZvIHR5cGUgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gc3BlYywgdGhpcyBm
dW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0q
Ki8KLVdFQktJVF9BUEkgZ2Jvb2xlYW4gd2Via2l0X2RvbV9iYXJfaW5mb19nZXRfdmlzaWJsZSh2
b2lkKiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2NvbnNvbGVfZ2V0X21lbW9yeToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01Db25zb2xlCi0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgot
ICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0qKi8KLVdFQktJVF9BUEkgdm9p
ZCogd2Via2l0X2RvbV9jb25zb2xlX2dldF9tZW1vcnkoV2ViS2l0RE9NQ29uc29sZSogc2VsZik7
Ci0KLS8qKgotICogd2Via2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5
X2Nzc192YWx1ZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uCi0g
KiBAcHJvcGVydHlOYW1lOiBBICNnY2hhcgotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAq
Ci0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6Ci0gKgotKiovCi1XRUJLSVRfQVBJIFdlYktp
dERPTUNTU1ZhbHVlKiB3ZWJraXRfZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9nZXRfcHJvcGVy
dHlfY3NzX3ZhbHVlKFdlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24qIHNlbGYsIGNvbnN0IGdj
aGFyKiBwcm9wZXJ0eU5hbWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dl
YmtpdF9oaWRkZW46Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NRG9jdW1lbnQKLSAqCi0gKiBUaGlz
IGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlv
biBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KLSAqCi0qKi8KLVdF
QktJVF9BUEkgZ2Jvb2xlYW4gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfd2Via2l0X2hpZGRlbihX
ZWJLaXRET01Eb2N1bWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9kb2N1bWVudF9n
ZXRfd2Via2l0X3Zpc2liaWxpdHlfc3RhdGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NRG9jdW1l
bnQKLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktp
dCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogQSAjZ2NoYXIK
LSAqCi0qKi8KLVdFQktJVF9BUEkgZ2NoYXIqIHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtp
dF92aXNpYmlsaXR5X3N0YXRlKFdlYktpdERPTURvY3VtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3
ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfb3BlbjoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1M
RG9jdW1lbnQKLSAqCi0qKi8KLVdFQktJVF9BUEkgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1l
bnRfb3BlbihXZWJLaXRET01IVE1MRG9jdW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9k
b21faHRtbF9lbGVtZW50X3NldF9pdGVtX2lkOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxF
bGVtZW50Ci0gKiBAdmFsdWU6IEEgI2djaGFyCi0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgot
ICoKLSoqLwotV0VCS0lUX0FQSSB2b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9pdGVt
X2lkKFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwotCi0v
KioKLSAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX2lkOgotICogQHNlbGY6IEEg
I1dlYktpdERPTUhUTUxFbGVtZW50Ci0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAq
IFJldHVybnM6IEEgI2djaGFyCi0gKgotKiovCi1XRUJLSVRfQVBJIGdjaGFyKiB3ZWJraXRfZG9t
X2h0bWxfZWxlbWVudF9nZXRfaXRlbV9pZChXZWJLaXRET01IVE1MRWxlbWVudCogc2VsZik7Ci0K
LS8qKgotICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fcmVmOgotICogQHNlbGY6
IEEgI1dlYktpdERPTUhUTUxFbGVtZW50Ci0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoK
LSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0qKi8KLVdFQktJVF9BUEkgV2ViS2l0
RE9NRE9NU2V0dGFibGVUb2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVt
X3JlZihXZWJLaXRET01IVE1MRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9o
dG1sX2VsZW1lbnRfZ2V0X2l0ZW1fcHJvcDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxl
bWVudAotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2Vi
S2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNm
ZXIgbm9uZSk6Ci0gKgotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTURPTVNldHRhYmxlVG9rZW5M
aXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9wcm9wKFdlYktpdERPTUhUTUxF
bGVtZW50KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaXRl
bV9zY29wZToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxlbWVudAotICogQHZhbHVlOiBB
ICNnYm9vbGVhbgotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZy
b20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0qKi8KLVdFQktJVF9B
UEkgdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaXRlbV9zY29wZShXZWJLaXRET01I
VE1MRWxlbWVudCogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21f
aHRtbF9lbGVtZW50X2dldF9pdGVtX3Njb3BlOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxF
bGVtZW50Ci0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBX
ZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6IEEgI2di
b29sZWFuCi0gKgotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuIHdlYmtpdF9kb21faHRtbF9lbGVt
ZW50X2dldF9pdGVtX3Njb3BlKFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV90eXBlOgotICogQHNlbGY6IEEgI1dl
YktpdERPTUhUTUxFbGVtZW50Ci0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJl
bW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJl
dHVybnM6ICh0cmFuc2ZlciBub25lKToKLSAqCi0qKi8KLVdFQktJVF9BUEkgdm9pZCogd2Via2l0
X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fdHlwZShXZWJLaXRET01IVE1MRWxlbWVudCogc2Vs
Zik7Ci0KLQotLyoqCi0gKiB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9zZXRfc2NvcGVk
OgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQKLSAqIEB2YWx1ZTogQSAj
Z2Jvb2xlYW4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9t
IFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotKiovCi1XRUJLSVRfQVBJ
IHZvaWQgd2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZChXZWJLaXRET01I
VE1MU3R5bGVFbGVtZW50KiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0
X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfZ2V0X3Njb3BlZDoKLSAqIEBzZWxmOiBBICNXZWJLaXRE
T01IVE1MU3R5bGVFbGVtZW50Ci0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJl
bW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJl
dHVybnM6IEEgI2dib29sZWFuCi0gKgotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuIHdlYmtpdF9k
b21faHRtbF9zdHlsZV9lbGVtZW50X2dldF9zY29wZWQoV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVu
dCogc2VsZik7Ci0KLQotV0VCS0lUX0FQSSBHVHlwZSB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGll
c19jb2xsZWN0aW9uX2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9w
cm9wZXJ0aWVzX2NvbGxlY3Rpb25faXRlbToKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MUHJv
cGVydGllc0NvbGxlY3Rpb24KLSAqIEBpbmRleDogQSAjZ3Vsb25nCi0gKgotICogVGhlIFByb3Bl
cnRpZXNDb2xsZWN0aW9uIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlz
IGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
Ci0gKgotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTU5vZGUqIHdlYmtpdF9kb21faHRtbF9wcm9w
ZXJ0aWVzX2NvbGxlY3Rpb25faXRlbSh2b2lkKiBzZWxmLCBndWxvbmcgaW5kZXgpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbmFtZWRfaXRlbToKLSAq
IEBzZWxmOiBBICNXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24KLSAqIEBuYW1lOiBB
ICNnY2hhcgotICoKLSAqIFRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICog
UmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgotICoKLSoqLwotV0VCS0lUX0FQSSB2b2lkKiB3ZWJr
aXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX25hbWVkX2l0ZW0odm9pZCogc2VsZiwg
Y29uc3QgZ2NoYXIqIG5hbWUpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVz
X2NvbGxlY3Rpb25fZ2V0X2xlbmd0aDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24KLSAqCi0gKiBUaGUgUHJvcGVydGllc0NvbGxlY3Rpb24gb2JqZWN0IGhh
cyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgot
ICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcgd2Vi
a2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfbGVuZ3RoKHZvaWQqIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X25h
bWVzOgotICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbgotICoK
LSAqIFRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9t
IFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogKHRy
YW5zZmVyIG5vbmUpOgotICoKLSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01ET01TdHJpbmdMaXN0
KiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9uYW1lcyh2b2lkKiBz
ZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX25vZGVfZ2V0X2F0dHJpYnV0ZXM6Ci0gKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NTm9kZQotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBS
ZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6Ci0gKgotKiovCi1XRUJLSVRfQVBJIFdlYktpdERPTU5h
bWVkTm9kZU1hcCogd2Via2l0X2RvbV9ub2RlX2dldF9hdHRyaWJ1dGVzKFdlYktpdERPTU5vZGUq
IHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21fbm9kZV9oYXNfYXR0cmlidXRlczoKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01Ob2RlCi0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAq
IFJldHVybnM6IEEgI2dib29sZWFuCi0gKgotKiovCi1XRUJLSVRfQVBJIGdib29sZWFuIHdlYmtp
dF9kb21fbm9kZV9oYXNfYXR0cmlidXRlcyhXZWJLaXRET01Ob2RlKiBzZWxmKTsKLQotV0VCS0lU
X0FQSSBHVHlwZSB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF90eXBlKHZvaWQpOwotCi0vKioK
LSAqIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3RvdGFsX2pzX2hlYXBfc2l6ZToKLSAqIEBz
ZWxmOiBBICNXZWJLaXRET01NZW1vcnlJbmZvCi0gKgotICogVGhlIE1lbW9yeUluZm8gb2JqZWN0
IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5n
LgotICoKLSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcg
d2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdG90YWxfanNfaGVhcF9zaXplKHZvaWQqIHNlbGYp
OwotCi0vKioKLSAqIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3VzZWRfanNfaGVhcF9zaXpl
OgotICogQHNlbGY6IEEgI1dlYktpdERPTU1lbW9yeUluZm8KLSAqCi0gKiBUaGUgTWVtb3J5SW5m
byBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogQSAjZ3Vsb25nCi0gKgotKiovCi1XRUJLSVRfQVBJ
IGd1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF91c2VkX2pzX2hlYXBfc2l6ZSh2b2lk
KiBzZWxmKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF9qc19oZWFwX3Np
emVfbGltaXQ6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NTWVtb3J5SW5mbwotICoKLSAqIFRoZSBN
ZW1vcnlJbmZvIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0
aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5zOiBBICNndWxvbmcKLSAqCi0qKi8KLVdF
QktJVF9BUEkgZ3Vsb25nIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X2pzX2hlYXBfc2l6ZV9s
aW1pdCh2b2lkKiBzZWxmKTsKLQotV0VCS0lUX0FQSSBHVHlwZSB3ZWJraXRfZG9tX21pY3JvX2Rh
dGFfaXRlbV92YWx1ZV9nZXRfdHlwZSh2b2lkKTsKLQotLyoqCi0gKiB3ZWJraXRfZG9tX3BlcmZv
cm1hbmNlX2dldF9tZW1vcnk6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NUGVyZm9ybWFuY2UKLSAq
Ci0gKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhp
cyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUp
OgotICoKLSoqLwotV0VCS0lUX0FQSSB2b2lkKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2dldF9t
ZW1vcnkoV2ViS2l0RE9NUGVyZm9ybWFuY2UqIHNlbGYpOwotCi1XRUJLSVRfQVBJIEdUeXBlIHdl
YmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2dldF90eXBlKHZvaWQpOwotCi0vKioKLSAqIHdl
YmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2l0ZW06Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9N
UHJvcGVydHlOb2RlTGlzdAotICogQGluZGV4OiBBICNndWxvbmcKLSAqCi0gKiBUaGUgUHJvcGVy
dHlOb2RlTGlzdCBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5j
dGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgotICoK
LSoqLwotV0VCS0lUX0FQSSBXZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVf
bGlzdF9pdGVtKHZvaWQqIHNlbGYsIGd1bG9uZyBpbmRleCk7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9wcm9wZXJ0eV9ub2RlX2xpc3RfZ2V0X2xlbmd0aDoKLSAqIEBzZWxmOiBBICNXZWJLaXRET01Q
cm9wZXJ0eU5vZGVMaXN0Ci0gKgotICogVGhlIFByb3BlcnR5Tm9kZUxpc3Qgb2JqZWN0IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoK
LSAqIFJldHVybnM6IEEgI2d1bG9uZwotICoKLSoqLwotV0VCS0lUX0FQSSBndWxvbmcgd2Via2l0
X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfZ2V0X2xlbmd0aCh2b2lkKiBzZWxmKTsKLQotLyoqCi0g
KiB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfc3RhcnRfdGltZToKLSAqIEBzZWxm
OiBBICNIVE1MTWVkaWFFbGVtZW50Ci0gKgotICogVGhlIEhUTUxNZWRpYUVsZW1lbnQ6c3RhcnQt
dGltZSBwcm9wZXJ0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9u
IGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5zOiBBICNnZG91YmxlCi0gKgotKiovCi1XRUJL
SVRfQVBJIGdkb3VibGUgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0X3Rp
bWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCogc2VsZik7Ci0KLS8qKgotICogd2Via2l0X2Rv
bV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2luaXRpYWxfdGltZToKLSAqIEBzZWxmOiBBICNIVE1M
TWVkaWFFbGVtZW50Ci0gKgotICogVGhlIEhUTUxNZWRpYUVsZW1lbnQ6aW5pdGlhbC10aW1lIHBy
b3BlcnR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBu
b3RoaW5nLgotICoKLSAqIFJldHVybnM6IEEgI2dkb3VibGUKLSAqCi0qKi8KLVdFQktJVF9BUEkg
Z2RvdWJsZSB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfaW5pdGlhbF90aW1lKFdl
YktpdERPTUhUTUxNZWRpYUVsZW1lbnQqIHNlbGYpOwotCi0vKioKLSAqIHdlYmtpdF9kb21faHRt
bF9oZWFkX2VsZW1lbnRfZ2V0X3Byb2ZpbGU6Ci0gKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEhl
YWRFbGVtZW50Ci0gKgotICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJv
bSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICoKLSAqIFJldHVybnM6IEEg
c3RyaW5nCi0gKgotKiovCi1XRUJLSVRfQVBJIGdjaGFyKiB3ZWJraXRfZG9tX2h0bWxfaGVhZF9l
bGVtZW50X2dldF9wcm9maWxlKFdlYktpdERPTUhUTUxIZWFkRWxlbWVudCogc2VsZik7Ci0KLS8q
KgotICogd2Via2l0X2RvbV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmlsZToKLSAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MSGVhZEVsZW1lbnQKLSAqIEB2YWx1ZTogQSAjZ2NoYXIKLSAqCi0g
KiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBm
dW5jdGlvbiBkb2VzIG5vdGhpbmcuCi0gKgotKiovCi1XRUJLSVRfQVBJIHZvaWQgd2Via2l0X2Rv
bV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmlsZShXZWJLaXRET01IVE1MSGVhZEVsZW1lbnQq
IHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wcm9jZXNz
aW5nX2luc3RydWN0aW9uX2dldF9kYXRhOgotICogQHNlbGY6IEEgI1dlYktpdERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbgotICoKLSAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLSAqCi0gKiBSZXR1cm5z
OiBBIHN0cmluZwotICoKLSoqLwotV0VCS0lUX0FQSSBnY2hhciogd2Via2l0X2RvbV9wcm9jZXNz
aW5nX2luc3RydWN0aW9uX2dldF9kYXRhKFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiog
c2VsZik7Ci0KLS8qKgotICogd2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX3NldF9k
YXRhOgotICogQHNlbGY6IEEgI1dlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbgotICogQHZh
bHVlOiBBICNnY2hhcgotICogQGVycm9yOiAjR0Vycm9yCi0gKgotICogVGhpcyBmdW5jdGlvbmFs
aXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3Ro
aW5nLgotICoKLSoqLwotV0VCS0lUX0FQSSB2b2lkIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19pbnN0
cnVjdGlvbl9zZXRfZGF0YShXZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHNlbGYsIGNv
bnN0IGdjaGFyKiB2YWx1ZSwgR0Vycm9yKiogZXJyb3IpOwotCiBHX0VORF9ERUNMUwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9N
Q3VzdG9tLnN5bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERP
TUN1c3RvbS5zeW1ib2xzCmluZGV4IDc4MmM3NTQuLjg1MzM5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLnN5bWJvbHMKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01DdXN0b20uc3ltYm9scwpA
QCAtNyw1MSArNywzIEBAIGdjaGFyKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X2tpbmQoV2Vi
S2l0RE9NVGV4dFRyYWNrKikKIGdjaGFyKiB3ZWJraXRfZG9tX3RleHRfdHJhY2tfZ2V0X2xhbmd1
YWdlKFdlYktpdERPTVRleHRUcmFjayopCiBnY2hhciogd2Via2l0X2RvbV92aWRlb190cmFja19n
ZXRfa2luZChXZWJLaXRET01WaWRlb1RyYWNrKikKIGdjaGFyKiB3ZWJraXRfZG9tX3ZpZGVvX3Ry
YWNrX2dldF9sYW5ndWFnZShXZWJLaXRET01WaWRlb1RyYWNrKikKLVdlYktpdERPTUJsb2IqIHdl
YmtpdF9kb21fYmxvYl93ZWJraXRfc2xpY2UoV2ViS2l0RE9NQmxvYiosIGdpbnQ2NCwgZ2ludDY0
LCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNz
X25hbWUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVu
dF9zZXRfY2xhc3NfbmFtZShXZWJLaXRET01IVE1MRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLVdl
YktpdERPTURPTVRva2VuTGlzdCogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX2xp
c3QoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9lbGVt
ZW50X2Rpc3BhdGNoX2Zvcm1fY2hhbmdlKFdlYktpdERPTUhUTUxGb3JtRWxlbWVudCopCi12b2lk
IHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRfZGlzcGF0Y2hfZm9ybV9pbnB1dChXZWJLaXRE
T01IVE1MRm9ybUVsZW1lbnQqKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxv
d19nZXRfb3ZlcmZsb3coV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KikKLWdjaGFyKiB3ZWJraXRf
ZG9tX2VsZW1lbnRfZ2V0X3dlYmtpdF9yZWdpb25fb3ZlcmZsb3coV2ViS2l0RE9NRWxlbWVudCop
Ci1XZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29u
dGVudF9ub2RlcyhXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqKQotV2ViS2l0RE9NTm9kZUxpc3Qq
IHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X3JlZ2lvbnNfYnlfY29udGVudF9ub2Rl
KFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyosIFdlYktpdERPTU5vZGUqKQotR1R5cGUgd2Via2l0
X2RvbV9iYXJfaW5mb19nZXRfdHlwZSh2b2lkKQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9iYXJfaW5m
b19nZXRfdmlzaWJsZSh2b2lkKikKLXZvaWQqIHdlYmtpdF9kb21fY29uc29sZV9nZXRfbWVtb3J5
KFdlYktpdERPTUNvbnNvbGUqKQotV2ViS2l0RE9NQ1NTVmFsdWUqIHdlYmtpdF9kb21fY3NzX3N0
eWxlX2RlY2xhcmF0aW9uX2dldF9wcm9wZXJ0eV9jc3NfdmFsdWUoV2ViS2l0RE9NQ1NTU3R5bGVE
ZWNsYXJhdGlvbiosIGNvbnN0IGdjaGFyKikKLWdib29sZWFuIHdlYmtpdF9kb21fZG9jdW1lbnRf
Z2V0X3dlYmtpdF9oaWRkZW4oV2ViS2l0RE9NRG9jdW1lbnQqKQotZ2NoYXIqIHdlYmtpdF9kb21f
ZG9jdW1lbnRfZ2V0X3dlYmtpdF92aXNpYmlsaXR5X3N0YXRlKFdlYktpdERPTURvY3VtZW50KikK
LXZvaWQgd2Via2l0X2RvbV9odG1sX2RvY3VtZW50X29wZW4oV2ViS2l0RE9NSFRNTERvY3VtZW50
KikKLXZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRN
TEVsZW1lbnQqLCBjb25zdCBnY2hhciopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRf
Z2V0X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQotV2ViS2l0RE9NRE9NU2V0dGFibGVU
b2tlbkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3JlZihXZWJLaXRET01I
VE1MRWxlbWVudCopCi1XZWJLaXRET01ET01TZXR0YWJsZVRva2VuTGlzdCogd2Via2l0X2RvbV9o
dG1sX2VsZW1lbnRfZ2V0X2l0ZW1fcHJvcChXZWJLaXRET01IVE1MRWxlbWVudCopCi12b2lkIHdl
YmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9pdGVtX3Njb3BlKFdlYktpdERPTUhUTUxFbGVtZW50
KiwgZ2Jvb2xlYW4pCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9z
Y29wZShXZWJLaXRET01IVE1MRWxlbWVudCopCi12b2lkKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVu
dF9nZXRfaXRlbV90eXBlKFdlYktpdERPTUhUTUxFbGVtZW50KikKLXZvaWQgd2Via2l0X2RvbV9o
dG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZChXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50Kiwg
Z2Jvb2xlYW4pCi1nYm9vbGVhbiB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9nZXRfc2Nv
cGVkKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqKQotR1R5cGUgd2Via2l0X2RvbV9odG1sX3By
b3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfdHlwZSh2b2lkKQotV2ViS2l0RE9NTm9kZSogd2Via2l0
X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pdGVtKHZvaWQqLCBndWxvbmcpCi12b2lk
KiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX25hbWVkX2l0ZW0odm9pZCos
IGNvbnN0IGdjaGFyKikKLWd1bG9uZyB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0
aW9uX2dldF9sZW5ndGgodm9pZCopCi1XZWJLaXRET01ET01TdHJpbmdMaXN0KiB3ZWJraXRfZG9t
X2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9uYW1lcyh2b2lkKikKLVdlYktpdERPTU5h
bWVkTm9kZU1hcCogd2Via2l0X2RvbV9ub2RlX2dldF9hdHRyaWJ1dGVzKFdlYktpdERPTU5vZGUq
KQotZ2Jvb2xlYW4gd2Via2l0X2RvbV9ub2RlX2hhc19hdHRyaWJ1dGVzKFdlYktpdERPTU5vZGUq
KQotR1R5cGUgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdHlwZSh2b2lkKQotZ3Vsb25nIHdl
YmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3RvdGFsX2pzX2hlYXBfc2l6ZSh2b2lkKikKLWd1bG9u
ZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF91c2VkX2pzX2hlYXBfc2l6ZSh2b2lkKikKLWd1
bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF9qc19oZWFwX3NpemVfbGltaXQodm9pZCop
Ci1HVHlwZSB3ZWJraXRfZG9tX21pY3JvX2RhdGFfaXRlbV92YWx1ZV9nZXRfdHlwZSh2b2lkKQot
dm9pZCogd2Via2l0X2RvbV9wZXJmb3JtYW5jZV9nZXRfbWVtb3J5KFdlYktpdERPTVBlcmZvcm1h
bmNlKikKLUdUeXBlIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2dldF90eXBlKHZvaWQp
Ci1XZWJLaXRET01Ob2RlKiB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9pdGVtKHZvaWQq
LCBndWxvbmcpCi1ndWxvbmcgd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfZ2V0X2xlbmd0
aCh2b2lkKikKLWdkb3VibGUgd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0
X3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVudCopCi1nZG91YmxlIHdlYmtpdF9kb21faHRt
bF9tZWRpYV9lbGVtZW50X2dldF9pbml0aWFsX3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxlbWVu
dCopCi1nY2hhciogd2Via2l0X2RvbV9odG1sX2hlYWRfZWxlbWVudF9nZXRfcHJvZmlsZShXZWJL
aXRET01IVE1MSGVhZEVsZW1lbnQqKQotdm9pZCB3ZWJraXRfZG9tX2h0bWxfaGVhZF9lbGVtZW50
X3NldF9wcm9maWxlKFdlYktpdERPTUhUTUxIZWFkRWxlbWVudCosIGNvbnN0IGdjaGFyKikKLWdj
aGFyKiB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1Y3Rpb25fZ2V0X2RhdGEoV2ViS2l0RE9N
UHJvY2Vzc2luZ0luc3RydWN0aW9uKikKLXZvaWQgd2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3Ry
dWN0aW9uX3NldF9kYXRhKFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiosIGNvbnN0IGdj
aGFyKiwgR0Vycm9yKiopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2Jq
ZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29i
amVjdC9XZWJLaXRET01EZXByZWNhdGVkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4wNjE1NTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmNwcApAQCAtMCwwICsxLDU3OCBAQAorLyoK
KyAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
KyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz
c2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRET01EZXBy
ZWNhdGVkLmgiCisKKyNpZiAhZGVmaW5lZChXRUJLSVRfRElTQUJMRV9ERVBSRUNBVEVEKQorCisj
aW5jbHVkZSAiV2ViS2l0RE9NQmxvYi5oIgorI2luY2x1ZGUgIldlYktpdERPTURPTVN0cmluZ0xp
c3QuaCIKKyNpbmNsdWRlICJXZWJLaXRET01IVE1MQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUgIldl
YktpdERPTUhUTUxGb3JtRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYktpdERPTUhUTUxIZWFkRWxl
bWVudC5oIgorI2luY2x1ZGUgIldlYktpdERPTU5vZGVMaXN0LmgiCisjaW5jbHVkZSAiV2ViS2l0
RE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldl
YktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIldlYktpdERPTVdlYktp
dE5hbWVkRmxvdy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXZWJLaXRET01CbG9i
KiB3ZWJraXRfZG9tX2Jsb2Jfd2Via2l0X3NsaWNlKFdlYktpdERPTUJsb2IqIHNlbGYsIGdpbnQ2
NCBzdGFydCwgZ2ludDY0IGVuZCwgY29uc3QgZ2NoYXIqIGNvbnRlbnRfdHlwZSkKK3sKKyAgICBy
ZXR1cm4gd2Via2l0X2RvbV9ibG9iX3NsaWNlKHNlbGYsIHN0YXJ0LCBlbmQsIGNvbnRlbnRfdHlw
ZSk7Cit9CisKK2djaGFyKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaWQoV2ViS2l0RE9N
SFRNTEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgZ193YXJuaW5nKCJUaGUgZ2V0X2lkIG1ldGhv
ZCBvbiBXZWJLaXRET01IVE1MRWxlbWVudCBpcyBkZXByZWNhdGVkLiBVc2UgdGhlIG9uZSBpbiBX
ZWJLaXRET01FbGVtZW50IGluc3RlYWQuIik7CisgICAgcmV0dXJuIHdlYmtpdF9kb21fZWxlbWVu
dF9nZXRfaWQoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQpKTsKK30KKwordm9pZCB3ZWJraXRf
ZG9tX2h0bWxfZWxlbWVudF9zZXRfaWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIGVsZW1lbnQsIGNv
bnN0IGdjaGFyKiB2YWx1ZSkKK3sKKyAgICBnX3dhcm5pbmcoIlRoZSBzZXRfaWQgbWV0aG9kIG9u
IFdlYktpdERPTUhUTUxFbGVtZW50IGlzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgb25lIGluIFdlYktp
dERPTUVsZW1lbnQgaW5zdGVhZC4iKTsKKyAgICB3ZWJraXRfZG9tX2VsZW1lbnRfc2V0X2lkKFdF
QktJVF9ET01fRUxFTUVOVChlbGVtZW50KSwgdmFsdWUpOworfQorCitnY2hhciogd2Via2l0X2Rv
bV9odG1sX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIGVsZW1l
bnQpCit7CisgICAgcmV0dXJuIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfY2xhc3NfbmFtZShXRUJL
SVRfRE9NX0VMRU1FTlQoZWxlbWVudCkpOworfQorCit2b2lkIHdlYmtpdF9kb21faHRtbF9lbGVt
ZW50X3NldF9jbGFzc19uYW1lKFdlYktpdERPTUhUTUxFbGVtZW50KiBlbGVtZW50LCBjb25zdCBn
Y2hhciogdmFsdWUpCit7CisgICAgd2Via2l0X2RvbV9lbGVtZW50X3NldF9jbGFzc19uYW1lKFdF
QktJVF9ET01fRUxFTUVOVChlbGVtZW50KSwgdmFsdWUpOworfQorCitXZWJLaXRET01ET01Ub2tl
bkxpc3QqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9jbGFzc19saXN0KFdlYktpdERPTUhU
TUxFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJldHVybiB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0
X2NsYXNzX2xpc3QoV0VCS0lUX0RPTV9FTEVNRU5UKGVsZW1lbnQpKTsKK30KKwordm9pZCB3ZWJr
aXRfZG9tX2h0bWxfZm9ybV9lbGVtZW50X2Rpc3BhdGNoX2Zvcm1fY2hhbmdlKFdlYktpdERPTUhU
TUxGb3JtRWxlbWVudCogc2VsZikKK3sKKyAgICBnX3dhcm5pbmcoIlRoZSBvbmZvcm1jaGFuZ2Ug
ZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIERPTSBzcGVjLCB0aGlzIGZ1
bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKK30KKwordm9pZCB3ZWJraXRfZG9tX2h0bWxfZm9ybV9l
bGVtZW50X2Rpc3BhdGNoX2Zvcm1faW5wdXQoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KiBzZWxm
KQoreworICAgIGdfd2FybmluZygiVGhlIG9uZm9ybWlucHV0IGZ1bmN0aW9uYWxpdHkgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIHRoZSBET00gc3BlYywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcu
Iik7Cit9CisKK2dib29sZWFuIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X292ZXJm
bG93KFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyogZmxvdykKK3sKKyAgICBnX3dhcm5pbmcoIlRo
ZSBXZWJLaXRET01XZWJLaXROYW1lZEZsb3c6Om92ZXJmbG93IHByb3BlcnR5IGhhcyBiZWVuIHJl
bmFtZWQgdG8gV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93OjpvdmVyc2V0LiBQbGVhc2UgdXBkYXRl
IHlvdXIgY29kZSB0byB1c2UgdGhlIG5ldyBuYW1lLiIpOworICAgIHJldHVybiB3ZWJraXRfZG9t
X3dlYmtpdF9uYW1lZF9mbG93X2dldF9vdmVyc2V0KGZsb3cpOworfQorCitnY2hhciogd2Via2l0
X2RvbV9lbGVtZW50X2dldF93ZWJraXRfcmVnaW9uX292ZXJmbG93KFdlYktpdERPTUVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0X3Jl
Z2lvbl9vdmVyc2V0KGVsZW1lbnQpOworfQorCitXZWJLaXRET01Ob2RlTGlzdCogd2Via2l0X2Rv
bV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudF9ub2RlcyhXZWJLaXRET01XZWJLaXROYW1l
ZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAgICByZXR1cm4gd2Via2l0X2RvbV93ZWJraXRfbmFtZWRf
Zmxvd19nZXRfY29udGVudChuYW1lZEZsb3cpOworCit9CisKK1dlYktpdERPTU5vZGVMaXN0KiB3
ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRlbnRfbm9kZShX
ZWJLaXRET01XZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgV2ViS2l0RE9NTm9kZSogY29udGVu
dE5vZGUpCit7CisgICAgcmV0dXJuIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X3Jl
Z2lvbnNfYnlfY29udGVudChuYW1lZEZsb3csIGNvbnRlbnROb2RlKTsKK30KKworLy8gV2ViS2l0
RE9NQmFySW5mbworCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NQmFySW5mbyB7CisgICAgV2Vi
S2l0RE9NT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK30gV2ViS2l0RE9NQmFySW5mbzsKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdERPTUJhckluZm9DbGFzcyB7CisgICAgV2ViS2l0RE9NT2JqZWN0
Q2xhc3MgcGFyZW50X2NsYXNzOworfSBXZWJLaXRET01CYXJJbmZvQ2xhc3M7CisKK0dfREVGSU5F
X1RZUEUoV2ViS2l0RE9NQmFySW5mbywgd2Via2l0X2RvbV9iYXJfaW5mbywgV0VCS0lUX1RZUEVf
RE9NX09CSkVDVCkKKwordHlwZWRlZiBlbnVtIHsKKyAgICBQUk9QXzAsCisgICAgUFJPUF9WSVNJ
QkxFLAorfSBXZWJLaXRET01CYXJJbmZvUHJvcGVydGllczsKKworc3RhdGljIHZvaWQgd2Via2l0
X2RvbV9iYXJfaW5mb19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0
eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBzd2l0Y2ggKHBy
b3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfVklTSUJMRTogeworICAgICAgICBXRUJLSVRfV0FS
Tl9GRUFUVVJFX05PVF9QUkVTRU5UKCJCYXJJbmZvIikKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgRkFMU0UpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoK
KyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVy
dHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdl
YmtpdF9kb21fYmFyX2luZm9fY2xhc3NfaW5pdChXZWJLaXRET01CYXJJbmZvQ2xhc3MqIHJlcXVl
c3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NM
QVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJr
aXRfZG9tX2Jhcl9pbmZvX2dldF9wcm9wZXJ0eTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3Rh
bGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICBQUk9QX1ZJU0lCTEUsCisgICAgICAg
IGdfcGFyYW1fc3BlY19ib29sZWFuKCJ2aXNpYmxlIiwKKyAgICAgICAgICAgICJiYXJfaW5mb192
aXNpYmxlIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKKyAgICAgICAgICAg
ICJyZWFkLW9ubHkgIGdib29sZWFuIEJhckluZm8udmlzaWJsZSAtIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEQUJMRSkpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX2Jhcl9pbmZv
X2luaXQoV2ViS2l0RE9NQmFySW5mbyopCit7Cit9CisKK2dib29sZWFuIHdlYmtpdF9kb21fYmFy
X2luZm9fZ2V0X3Zpc2libGUodm9pZCopCit7CisgICAgZ193YXJuaW5nKCJUaGUgQmFySW5mbyB0
eXBlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHNwZWMsIHRoaXMgZnVuY3Rpb24gZG9l
cyBub3RoaW5nLiIpOworICAgIHJldHVybiBGQUxTRTsKK30KKworLy8gV2ViS2l0RE9NQ29uc29s
ZQorCit2b2lkKiB3ZWJraXRfZG9tX2NvbnNvbGVfZ2V0X21lbW9yeShXZWJLaXRET01Db25zb2xl
KikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18p
OworICAgIHJldHVybiAwOworfQorCisvLyBXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uCisK
K1dlYktpdERPTUNTU1ZhbHVlKiB3ZWJraXRfZG9tX2Nzc19zdHlsZV9kZWNsYXJhdGlvbl9nZXRf
cHJvcGVydHlfY3NzX3ZhbHVlKFdlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBn
Y2hhciopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVu
Y19fKTsKKyAgICByZXR1cm4gMDsKK30KKworLy8gV2ViS2l0RE9NRG9jdW1lbnQKKworZ2Jvb2xl
YW4gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfd2Via2l0X2hpZGRlbihXZWJLaXRET01Eb2N1bWVu
dCopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJl
bW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19f
KTsKKyAgICByZXR1cm4gRkFMU0U7Cit9CisKK2djaGFyKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dl
dF93ZWJraXRfdmlzaWJpbGl0eV9zdGF0ZShXZWJLaXRET01Eb2N1bWVudCopCit7CisgICAgZ193
YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4g
Z19zdHJkdXAoIiIpOworfQorCisvLyBXZWJLaXRET01IVE1MRG9jdW1lbnQKKwordm9pZCB3ZWJr
aXRfZG9tX2h0bWxfZG9jdW1lbnRfb3BlbihXZWJLaXRET01IVE1MRG9jdW1lbnQqKQoreworICAg
IGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20g
V2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Cit9CisKKy8v
IFdlYktpdERPTUhUTUxFbGVtZW50CisKK3ZvaWQgd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0
X2l0ZW1faWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQqLCBjb25zdCBnY2hhciopCit7CisgICAgZ193
YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKK30KKworZ2NoYXIq
IHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX2lkKFdlYktpdERPTUhUTUxFbGVtZW50
KikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18p
OworICAgIHJldHVybiBnX3N0cmR1cCgiIik7Cit9CisKK1dlYktpdERPTURPTVNldHRhYmxlVG9r
ZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9yZWYoV2ViS2l0RE9NSFRN
TEVsZW1lbnQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBf
X2Z1bmNfXyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1dlYktpdERPTURPTVNldHRhYmxlVG9rZW5M
aXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9wcm9wKFdlYktpdERPTUhUTUxF
bGVtZW50KikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19m
dW5jX18pOworICAgIHJldHVybiAwOworfQorCit2b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50
X3NldF9pdGVtX3Njb3BlKFdlYktpdERPTUhUTUxFbGVtZW50KiwgZ2Jvb2xlYW4pCit7CisgICAg
Z193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBX
ZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKK30KKworZ2Jv
b2xlYW4gd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fc2NvcGUoV2ViS2l0RE9NSFRN
TEVsZW1lbnQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBf
X2Z1bmNfXyk7CisgICAgcmV0dXJuIEZBTFNFOworfQorCit2b2lkKiB3ZWJraXRfZG9tX2h0bWxf
ZWxlbWVudF9nZXRfaXRlbV90eXBlKFdlYktpdERPTUhUTUxFbGVtZW50KikKK3sKKyAgICBnX3dh
cm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktp
dCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAw
OworfQorCisvLyBXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50CisKK3ZvaWQgd2Via2l0X2RvbV9o
dG1sX3N0eWxlX2VsZW1lbnRfc2V0X3Njb3BlZChXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50Kiwg
Z2Jvb2xlYW4pCit7CisgICAgZ193YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9f
ZnVuY19fKTsKK30KKworZ2Jvb2xlYW4gd2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfZ2V0
X3Njb3BlZChXZWJLaXRET01IVE1MU3R5bGVFbGVtZW50KikKK3sKKyAgICBnX3dhcm5pbmcoIiVz
OiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBm
dW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiBGQUxTRTsKK30K
KworLy8gV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uCisKK3R5cGVkZWYgc3RydWN0
IF9XZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24geworICAgIFdlYktpdERPTUhUTUxD
b2xsZWN0aW9uIHBhcmVudF9pbnN0YW5jZTsKK30gV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xs
ZWN0aW9uOworCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0
aW9uQ2xhc3MgeworICAgIFdlYktpdERPTUhUTUxDb2xsZWN0aW9uQ2xhc3MgcGFyZW50X2NsYXNz
OworfSBXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb25DbGFzczsKKworR19ERUZJTkVf
VFlQRShXZWJLaXRET01IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24sIHdlYmtpdF9kb21faHRtbF9w
cm9wZXJ0aWVzX2NvbGxlY3Rpb24sIFdFQktJVF9UWVBFX0RPTV9IVE1MX0NPTExFQ1RJT04pCisK
K2VudW0geworICAgIEhUTUxfUFJPUEVSVElFU19DT0xMRUNUSU9OX1BST1BfMCwKKyAgICBIVE1M
X1BST1BFUlRJRVNfQ09MTEVDVElPTl9QUk9QX0xFTkdUSCwKKyAgICBIVE1MX1BST1BFUlRJRVNf
Q09MTEVDVElPTl9QUk9QX05BTUVTLAorfTsKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9odG1s
X3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBz
d2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIEhUTUxfUFJPUEVSVElFU19DT0xMRUNUSU9O
X1BST1BfTEVOR1RIOiB7CisgICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
Ik1pY3JvZGF0YSIpCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEhUTUxfUFJPUEVS
VElFU19DT0xMRUNUSU9OX1BST1BfTkFNRVM6IHsKKyAgICAgICAgV0VCS0lUX1dBUk5fRkVBVFVS
RV9OT1RfUFJFU0VOVCgiTWljcm9kYXRhIikKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2NsYXNzX2luaXQoV2Vi
S2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uQ2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAg
ICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFz
cyk7CisgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX2h0bWxfcHJv
cGVydGllc19jb2xsZWN0aW9uX2dldF9wcm9wZXJ0eTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2lu
c3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICBIVE1MX1BST1BFUlRJRVNfQ09M
TEVDVElPTl9QUk9QX0xFTkdUSCwKKyAgICAgICAgZ19wYXJhbV9zcGVjX3Vsb25nKCJsZW5ndGgi
LAorICAgICAgICAgICAgImh0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2xlbmd0aCAtIHJlbW92
ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgICAicmVhZC1vbmx5ICBn
dWxvbmcgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmxlbmd0aCAtIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgR19NQVhVTE9O
RywKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsK
KworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAg
ICAgICBIVE1MX1BST1BFUlRJRVNfQ09MTEVDVElPTl9QUk9QX05BTUVTLAorICAgICAgICBnX3Bh
cmFtX3NwZWNfb2JqZWN0KCJuYW1lcyIsCisgICAgICAgICAgICAiaHRtbF9wcm9wZXJ0aWVzX2Nv
bGxlY3Rpb25fbmFtZXMgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmciLAorICAg
ICAgICAgICAgInJlYWQtb25seSAgV2ViS2l0RE9NRE9NU3RyaW5nTGlzdCogSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uLm5hbWVzIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwK
KyAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPTV9ET01fU1RSSU5HX0xJU1QsCisgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBREFCTEUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9o
dG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pbml0KFdlYktpdERPTUhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbiogcmVxdWVzdCkKK3sKK30KKworV2ViS2l0RE9NTm9kZSogd2Via2l0X2RvbV9odG1s
X3Byb3BlcnRpZXNfY29sbGVjdGlvbl9pdGVtKHZvaWQqLCBndWxvbmcpCit7CisgICAgZ193YXJu
aW5nKCIlczogdGhlIFByb3BlcnRpZXNDb2xsZWN0aW9uIG9iamVjdCBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxl
Y3Rpb25fbmFtZWRfaXRlbSh2b2lkKiwgY29uc3QgZ2NoYXIqKQoreworICAgIGdfd2FybmluZygi
JXM6IHRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9t
IFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJl
dHVybiAwOworfQorCitndWxvbmcgd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlv
bl9nZXRfbGVuZ3RoKHZvaWQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRoZSBQcm9wZXJ0aWVz
Q29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5j
dGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCitXZWJL
aXRET01ET01TdHJpbmdMaXN0KiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9u
X2dldF9uYW1lcyh2b2lkKikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgUHJvcGVydGllc0Nv
bGxlY3Rpb24gb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rp
b24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4gMDsKK30KKworLy8gV2Vi
S2l0RE9NTm9kZQorCitXZWJLaXRET01OYW1lZE5vZGVNYXAqIHdlYmtpdF9kb21fbm9kZV9nZXRf
YXR0cmlidXRlcyhXZWJLaXRET01Ob2RlKikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1
bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCitnYm9vbGVhbiB3
ZWJraXRfZG9tX25vZGVfaGFzX2F0dHJpYnV0ZXMoV2ViS2l0RE9NTm9kZSopCit7CisgICAgZ193
YXJuaW5nKCIlczogdGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJL
aXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4g
RkFMU0U7Cit9CisKKy8vIFdlYktpdERPTU1lbW9yeUluZm8KKwordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdERPTU1lbW9yeUluZm8geworICAgIFdlYktpdERPTU9iamVjdCBwYXJlbnRfaW5zdGFuY2U7
Cit9IFdlYktpdERPTU1lbW9yeUluZm87CisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRET01NZW1v
cnlJbmZvQ2xhc3MgeworICAgIFdlYktpdERPTU9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK30g
V2ViS2l0RE9NTWVtb3J5SW5mb0NsYXNzOworCisKK0dfREVGSU5FX1RZUEUoV2ViS2l0RE9NTWVt
b3J5SW5mbywgd2Via2l0X2RvbV9tZW1vcnlfaW5mbywgV0VCS0lUX1RZUEVfRE9NX09CSkVDVCkK
KworZW51bSB7CisgICAgRE9NX01FTU9SWV9QUk9QXzAsCisgICAgRE9NX01FTU9SWV9QUk9QX1RP
VEFMX0pTX0hFQVBfU0laRSwKKyAgICBET01fTUVNT1JZX1BST1BfVVNFRF9KU19IRUFQX1NJWkUs
CisgICAgRE9NX01FTU9SWV9QUk9QX0pTX0hFQVBfU0laRV9MSU1JVCwKK307CisKK3N0YXRpYyB2
b2lkIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcGVydHlJZCwgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7Cisg
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBET01fTUVNT1JZX1BST1BfVE9UQUxf
SlNfSEVBUF9TSVpFOiB7CisgICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCAwKTsKKyAg
ICAgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVtb3J5SW5mbyIpCisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIERPTV9NRU1PUllfUFJPUF9VU0VEX0pTX0hFQVBf
U0laRTogeworICAgICAgICBnX3ZhbHVlX3NldF91bG9uZyh2YWx1ZSwgMCk7CisgICAgICAgIFdF
QktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIk1lbW9yeUluZm8iKQorICAgICAgICBicmVh
azsKKyAgICB9CisgICAgY2FzZSBET01fTUVNT1JZX1BST1BfSlNfSEVBUF9TSVpFX0xJTUlUOiB7
CisgICAgICAgIGdfdmFsdWVfc2V0X3Vsb25nKHZhbHVlLCAwKTsKKyAgICAgICAgV0VCS0lUX1dB
Uk5fRkVBVFVSRV9OT1RfUFJFU0VOVCgiTWVtb3J5SW5mbyIpCisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19jbGFzc19pbml0KFdlYktpdERP
TU1lbW9yeUluZm9DbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29i
amVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xh
c3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3Byb3BlcnR5Owor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCisgICAg
ICAgIERPTV9NRU1PUllfUFJPUF9UT1RBTF9KU19IRUFQX1NJWkUsCisgICAgICAgIGdfcGFyYW1f
c3BlY191bG9uZygidG90YWwtanMtaGVhcC1zaXplIiwKKyAgICAgICAgICAgICJtZW1vcnlfaW5m
b190b3RhbC1qcy1oZWFwLXNpemUgLSByZW1vdmVkIGZyb20gV2ViS2l0LCBkb2VzIG5vdGhpbmci
LAorICAgICAgICAgICAgInJlYWQtb25seSAgZ3Vsb25nIE1lbW9yeUluZm8udG90YWwtanMtaGVh
cC1zaXplIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKKyAgICAgICAgICAg
IDAsCisgICAgICAgICAgICBHX01BWFVMT05HLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAg
IFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICBET01fTUVNT1JZX1BST1BfVVNFRF9KU19IRUFQ
X1NJWkUsCisgICAgICAgIGdfcGFyYW1fc3BlY191bG9uZygidXNlZC1qcy1oZWFwLXNpemUiLAor
ICAgICAgICAgICAgIm1lbW9yeV9pbmZvX3VzZWQtanMtaGVhcC1zaXplIC0gcmVtb3ZlZCBmcm9t
IFdlYktpdCwgZG9lcyBub3RoaW5nIiwKKyAgICAgICAgICAgICJyZWFkLW9ubHkgIGd1bG9uZyBN
ZW1vcnlJbmZvLnVzZWQtanMtaGVhcC1zaXplIC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBu
b3RoaW5nIiwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBHX01BWFVMT05HLAorICAgICAg
ICAgICAgMCwKKyAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworICAgIGdfb2Jq
ZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAgICAgICBET01fTUVN
T1JZX1BST1BfSlNfSEVBUF9TSVpFX0xJTUlULAorICAgICAgICBnX3BhcmFtX3NwZWNfdWxvbmco
ImpzLWhlYXAtc2l6ZS1saW1pdCIsCisgICAgICAgICAgICAibWVtb3J5X2luZm9fanMtaGVhcC1z
aXplLWxpbWl0IC0gcmVtb3ZlZCBmcm9tIFdlYktpdCwgZG9lcyBub3RoaW5nIiwKKyAgICAgICAg
ICAgICJyZWFkLW9ubHkgIGd1bG9uZyBNZW1vcnlJbmZvLmpzLWhlYXAtc2l6ZS1saW1pdCAtIHJl
bW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgICAwLAorICAgICAg
ICAgICAgR19NQVhVTE9ORywKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBXRUJLSVRfUEFS
QU1fUkVBREFCTEUpKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9tZW1vcnlfaW5mb19p
bml0KFdlYktpdERPTU1lbW9yeUluZm8qKQoreworfQorCitndWxvbmcgd2Via2l0X2RvbV9tZW1v
cnlfaW5mb19nZXRfdG90YWxfanNfaGVhcF9zaXplKHZvaWQqKQoreworICAgIGdfd2FybmluZygi
JXM6IHRoZSBNZW1vcnlJbmZvIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7CisgICAgcmV0dXJuIDA7Cit9
CisKK2d1bG9uZyB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF91c2VkX2pzX2hlYXBfc2l6ZSh2
b2lkKikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgTWVtb3J5SW5mbyBvYmplY3QgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19m
dW5jX18pOworICAgIHJldHVybiAwOworfQorCitndWxvbmcgd2Via2l0X2RvbV9tZW1vcnlfaW5m
b19nZXRfanNfaGVhcF9zaXplX2xpbWl0KHZvaWQqKQoreworICAgIGdfd2FybmluZygiJXM6IHRo
ZSBNZW1vcnlJbmZvIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1
bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8v
IFdlYktpdERPTU1pY3JvRGF0YUl0ZW1WYWx1ZQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0RE9N
TWljcm9EYXRhSXRlbVZhbHVlIHsKKyAgICBXZWJLaXRET01PYmplY3QgcGFyZW50X2luc3RhbmNl
OworfSBXZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWU7CisKK3R5cGVkZWYgc3RydWN0IF9XZWJL
aXRET01NaWNyb0RhdGFJdGVtVmFsdWVDbGFzcyB7CisgICAgV2ViS2l0RE9NT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOworfSBXZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWVDbGFzczsKKworR19E
RUZJTkVfVFlQRShXZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWUsIHdlYmtpdF9kb21fbWljcm9f
ZGF0YV9pdGVtX3ZhbHVlLCBXRUJLSVRfVFlQRV9ET01fT0JKRUNUKQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfZG9tX21pY3JvX2RhdGFfaXRlbV92YWx1ZV9jbGFzc19pbml0KFdlYktpdERPTU1pY3Jv
RGF0YUl0ZW1WYWx1ZUNsYXNzKikKK3sKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV9taWNy
b19kYXRhX2l0ZW1fdmFsdWVfaW5pdChXZWJLaXRET01NaWNyb0RhdGFJdGVtVmFsdWUqKQorewor
fQorCisvLyBXZWJLaXRET01QZXJmb3JtYW5jZQorCit2b2lkKiB3ZWJraXRfZG9tX3BlcmZvcm1h
bmNlX2dldF9tZW1vcnkoV2ViS2l0RE9NUGVyZm9ybWFuY2UqKQoreworICAgIGdfd2FybmluZygi
JXM6IHRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlz
IGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iLCBfX2Z1bmNfXyk7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vIFdlYktpdERPTVByb3BlcnR5Tm9kZUxpc3QKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERP
TVByb3BlcnR5Tm9kZUxpc3QgeworICAgIFdlYktpdERPTU5vZGVMaXN0IHBhcmVudF9pbnN0YW5j
ZTsKK30gV2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdDsKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dERPTVByb3BlcnR5Tm9kZUxpc3RDbGFzcyB7CisgICAgV2ViS2l0RE9NTm9kZUxpc3RDbGFzcyBw
YXJlbnRfY2xhc3M7Cit9IFdlYktpdERPTVByb3BlcnR5Tm9kZUxpc3RDbGFzczsKKworR19ERUZJ
TkVfVFlQRShXZWJLaXRET01Qcm9wZXJ0eU5vZGVMaXN0LCB3ZWJraXRfZG9tX3Byb3BlcnR5X25v
ZGVfbGlzdCwgV0VCS0lUX1RZUEVfRE9NX05PREVfTElTVCkKKworZW51bSB7CisgICAgUFJPUEVS
VFlfTk9ERV9MSVNUX1BST1BfMCwKKyAgICBQUk9QRVJUWV9OT0RFX0xJU1RfUFJPUF9MRU5HVEgs
Cit9OworCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfcHJv
cGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBH
UGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNl
IFBST1BFUlRZX05PREVfTElTVF9QUk9QX0xFTkdUSDogeworICAgICAgICBnX3ZhbHVlX3NldF91
bG9uZyh2YWx1ZSwgMCk7CisgICAgICAgIFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQo
Ik1pY3JvZGF0YSIpCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBw
c3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV9wcm9wZXJ0eV9ub2RlX2xpc3RfY2xhc3NfaW5pdChXZWJLaXRET01Qcm9wZXJ0eU5vZGVMaXN0
Q2xhc3MqIHJlcXVlc3RDbGFzcykKK3sKKyAgICBHT2JqZWN0Q2xhc3MqIGdvYmplY3RDbGFzcyA9
IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFzcyk7CisgICAgZ29iamVjdENsYXNzLT5nZXRfcHJv
cGVydHkgPSB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfcHJvcGVydHk7CisKKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAg
UFJPUEVSVFlfTk9ERV9MSVNUX1BST1BfTEVOR1RILAorICAgICAgICBnX3BhcmFtX3NwZWNfdWxv
bmcoImxlbmd0aCIsCisgICAgICAgICAgICAicHJvcGVydHlfbm9kZV9saXN0X2xlbmd0aCAtIHJl
bW92ZWQgZnJvbSBXZWJLaXQsIGRvZXMgbm90aGluZyIsCisgICAgICAgICAgICAicmVhZC1vbmx5
ICBndWxvbmcgUHJvcGVydHlOb2RlTGlzdC5sZW5ndGggLSByZW1vdmVkIGZyb20gV2ViS2l0LCBk
b2VzIG5vdGhpbmciLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIEdfTUFYVUxPTkcsCisg
ICAgICAgICAgICAwLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2luaXQoV2ViS2l0RE9N
UHJvcGVydHlOb2RlTGlzdCopCit7Cit9CisKK1dlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fcHJv
cGVydHlfbm9kZV9saXN0X2l0ZW0odm9pZCosIGd1bG9uZykKK3sKKyAgICBnX3dhcm5pbmcoIiVz
OiB0aGUgUHJvcGVydHlOb2RlTGlzdCBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktp
dCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAw
OworfQorCitndWxvbmcgd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfZ2V0X2xlbmd0aCh2
b2lkKikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgUHJvcGVydHlOb2RlTGlzdCBvYmplY3Qg
aGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcu
IiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCitnZG91YmxlIHdlYmtpdF9kb21faHRt
bF9tZWRpYV9lbGVtZW50X2dldF9zdGFydF90aW1lKFdlYktpdERPTUhUTUxNZWRpYUVsZW1lbnQq
KQoreworICAgIGdfd2FybmluZygiJXM6IHRoZSBIVE1MTWVkaWFFbGVtZW50OnN0YXJ0LXRpbWUg
cHJvcGVydHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2Vz
IG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiAwOworfQorCitnZG91YmxlIHdlYmtp
dF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9pbml0aWFsX3RpbWUoV2ViS2l0RE9NSFRNTE1l
ZGlhRWxlbWVudCopCit7CisgICAgZ193YXJuaW5nKCIlczogdGhlIEhUTUxNZWRpYUVsZW1lbnQ6
aW5pdGlhbC10aW1lIHByb3BlcnR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMg
ZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4gMDsKK30KKwor
Ly8gV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50CisKK2djaGFyKiB3ZWJraXRfZG9tX2h0bWxfaGVh
ZF9lbGVtZW50X2dldF9wcm9maWxlKFdlYktpdERPTUhUTUxIZWFkRWxlbWVudCogc2VsZikKK3sK
KyAgICBnX3dhcm5pbmcoIiVzOiB0aGUgSGVhZEVsZW1lbnQgb2JqZWN0IGhhcyBiZWVuIHJlbW92
ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiIsIF9fZnVuY19fKTsK
KyAgICByZXR1cm4gZ19zdHJkdXAoIiIpOworfQorCit2b2lkIHdlYmtpdF9kb21faHRtbF9oZWFk
X2VsZW1lbnRfc2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50KiBzZWxmLCBjb25z
dCBnY2hhciogdmFsdWUpCit7CisgICAgZ193YXJuaW5nKCIlczogdGhlIEhlYWRFbGVtZW50IG9i
amVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90
aGluZy4iLCBfX2Z1bmNfXyk7Cit9CisKKy8vIFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlv
bgorCitnY2hhciogd2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX2dldF9kYXRhKFdl
YktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiogc2VsZikKK3sKKyAgICBnX3dhcm5pbmcoIiVz
OiB0aGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBm
dW5jdGlvbiBkb2VzIG5vdGhpbmcuIiwgX19mdW5jX18pOworICAgIHJldHVybiBnX3N0cmR1cCgi
Iik7Cit9CisKK3ZvaWQgd2Via2l0X2RvbV9wcm9jZXNzaW5nX2luc3RydWN0aW9uX3NldF9kYXRh
KFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVl
LCBHRXJyb3IqKiBlcnJvcikKK3sKKyAgICBnX3dhcm5pbmcoIiVzOiB0aGlzIGZ1bmN0aW9uYWxp
dHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhp
bmcuIiwgX19mdW5jX18pOworfQorCisjZW5kaWYgLy8gV0VCS0lUX0RJU0FCTEVfREVQUkVDQVRF
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01E
ZXByZWNhdGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURl
cHJlY2F0ZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDE4YzhjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRE
T01EZXByZWNhdGVkLmgKQEAgLTAsMCArMSw2MDkgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAy
MDExIElnYWxpYSBTLkwuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl
IEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVm
IFdlYktpdERPTURlcHJlY2F0ZWRfaAorI2RlZmluZSBXZWJLaXRET01EZXByZWNhdGVkX2gKKwor
I2lmICFkZWZpbmVkKFdFQktJVF9ESVNBQkxFX0RFUFJFQ0FURUQpCisKKyNpbmNsdWRlIDxnbGli
LW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDx3ZWJraXRkb20vd2Via2l0
ZG9tZGVmaW5lcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKy8qKgorICogd2Via2l0X2RvbV9ibG9i
X3dlYmtpdF9zbGljZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01CbG9iCisgKiBAc3RhcnQ6IEEg
I2dpbnQ2NAorICogQGVuZDogQSAjZ2ludDY0CisgKiBAY29udGVudF90eXBlOiBBICNnY2hhcgor
ICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogYSAjV2ViS2l0RE9NQmxvYgorICoKKyAq
IERlcHJlY2F0ZWQ6IDEuMTA6IFVzZSB3ZWJraXRfZG9tX2Jsb2Jfc2xpY2UoKSBpbnN0ZWFkLgor
ICovCitXRUJLSVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X2RvbV9ibG9iX3NsaWNlKSBXZWJLaXRE
T01CbG9iKgord2Via2l0X2RvbV9ibG9iX3dlYmtpdF9zbGljZShXZWJLaXRET01CbG9iKiBzZWxm
LCBnaW50NjQgc3RhcnQsIGdpbnQ2NCBlbmQsIGNvbnN0IGdjaGFyKiBjb250ZW50X3R5cGUpOwor
CisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pZDoKKyAqIEBzZWxmOiBBICNX
ZWJLaXRET01IVE1MRWxlbWVudAorICoKKyAqIFJldHVybnM6IEEgI2djaGFyCisgKgorICogRGVw
cmVjYXRlZDogMi4yOiBVc2Ugd2Via2l0X2RvbV9lbGVtZW50X2dldF9pZCgpIGluc3RlYWQuCisg
Ki8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2lkKSBnY2hh
cioKK3dlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pZChXZWJLaXRET01IVE1MRWxlbWVudCog
c2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2lkOgorICogQHNl
bGY6IEEgI1dlYktpdERPTUhUTUxFbGVtZW50CisgKiBAdmFsdWU6IEEgI2djaGFyCisgKgorICog
RGVwcmVjYXRlZDogMi4yOiBVc2Ugd2Via2l0X2RvbV9lbGVtZW50X3NldF9pZCgpIGluc3RlYWQu
CisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfZG9tX2VsZW1lbnRfc2V0X2lkKSB2
b2lkCit3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaWQoV2ViS2l0RE9NSFRNTEVsZW1lbnQq
IHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX2Vs
ZW1lbnRfZ2V0X2NsYXNzX25hbWU6CisgKiBAZWxlbWVudDogQSAjV2ViS2l0RE9NSFRNTEVsZW1l
bnQKKyAqCisgKiBSZXR1cm5zOiBBICNnY2hhcgorICoKKyAqIERlcHJlY2F0ZWQ6IDEuMTA6IFVz
ZSB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2NsYXNzX25hbWUoKSBpbnN0ZWFkLgorICovCitXRUJL
SVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X2RvbV9lbGVtZW50X2dldF9jbGFzc19uYW1lKSBnY2hh
cioKK3dlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9jbGFzc19uYW1lKFdlYktpdERPTUhUTUxF
bGVtZW50KiBlbGVtZW50KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRf
Y2xhc3NfbmFtZToKKyAqIEBlbGVtZW50OiBBICNXZWJLaXRET01IVE1MRWxlbWVudAorICogQHZh
bHVlOiBBICNnY2hhcgorICoKKyAqCisgKiBEZXByZWNhdGVkOiAxLjEwOiBVc2Ugd2Via2l0X2Rv
bV9lbGVtZW50X3NldF9jbGFzc19uYW1lKCkgaW5zdGVhZC4KKyAqLworV0VCS0lUX0RFUFJFQ0FU
RURfRk9SKHdlYmtpdF9kb21fZWxlbWVudF9zZXRfY2xhc3NfbmFtZSkgdm9pZAord2Via2l0X2Rv
bV9odG1sX2VsZW1lbnRfc2V0X2NsYXNzX25hbWUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqIGVsZW1l
bnQsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX2VsZW1l
bnRfZ2V0X2NsYXNzX2xpc3Q6CisgKiBAZWxlbWVudDogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQK
KyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTURPTVRva2VuTGlz
dAorICoKKyAqIERlcHJlY2F0ZWQ6IDEuMTA6IFVzZSB3ZWJraXRfZG9tX2VsZW1lbnRfZ2V0X2Ns
YXNzX2xpc3QoKSBpbnN0ZWFkLgorICovCitXRUJLSVRfREVQUkVDQVRFRF9GT1Iod2Via2l0X2Rv
bV9lbGVtZW50X2dldF9jbGFzc19saXN0KSBXZWJLaXRET01ET01Ub2tlbkxpc3QqCit3ZWJraXRf
ZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3NfbGlzdChXZWJLaXRET01IVE1MRWxlbWVudCogZWxl
bWVudCk7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9m
b3JtX2NoYW5nZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1lbnQKKyAqCisg
KiBEZXByZWNhdGVkOiAxLjYKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZAord2Via2l0X2Rv
bV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2NoYW5nZShXZWJLaXRET01IVE1MRm9y
bUVsZW1lbnQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1lbnRf
ZGlzcGF0Y2hfZm9ybV9pbnB1dDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRm9ybUVsZW1l
bnQKKyAqCisgKiBEZXByZWNhdGVkOiAxLjYKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZAor
d2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2lucHV0KFdlYktpdERP
TUhUTUxGb3JtRWxlbWVudCogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV93ZWJraXRfbmFt
ZWRfZmxvd19nZXRfb3ZlcmZsb3c6CisgKiBAZmxvdzogQSAjV2ViS2l0RE9NV2ViS2l0TmFtZWRG
bG93CisgKgorICogUmV0dXJuczogQSAjZ2Jvb2xlYW4KKyAqCisgKiBEZXByZWNhdGVkOiAxLjEw
OiBVc2Ugd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfb3ZlcnNldCgpIGluc3RlYWQu
CisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93
X2dldF9vdmVyc2V0KSBnYm9vbGVhbgord2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRf
b3ZlcmZsb3coV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBmbG93KTsKKworLyoqCisgKiB3ZWJr
aXRfZG9tX2VsZW1lbnRfZ2V0X3dlYmtpdF9yZWdpb25fb3ZlcmZsb3c6CisgKiBAZWxlbWVudDog
QSAjV2ViS2l0RE9NRWxlbWVudAorICoKKyAqIFJldHVybnM6IEEgI2djaGFyCisgKgorICogRGVw
cmVjYXRlZDogMS4xMDogVXNlIHdlYmtpdF9kb21fZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9v
dmVyc2V0KCkgaW5zdGVhZC4KKyAqLworV0VCS0lUX0RFUFJFQ0FURURfRk9SKHdlYmtpdF9kb21f
ZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyc2V0KSBnY2hhcioKK3dlYmtpdF9kb21fZWxl
bWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyZmxvdyhXZWJLaXRET01FbGVtZW50KiBlbGVtZW50
KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9jb250ZW50X25v
ZGVzOgorICogQGZsb3c6IEEgI1dlYktpdERPTVdlYktpdE5hbWVkRmxvdworICoKKyAqIFJldHVy
bnM6ICh0cmFuc2ZlciBub25lKTogYSAjV2ViS2l0RE9NTm9kZUxpc3QKKyAqCisgKiBEZXByZWNh
dGVkOiAxLjEwOiBVc2Ugd2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfY29udGVudCgp
IGluc3RlYWQuCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfZG9tX3dlYmtpdF9u
YW1lZF9mbG93X2dldF9jb250ZW50KSBXZWJLaXRET01Ob2RlTGlzdCoKK3dlYmtpdF9kb21fd2Vi
a2l0X25hbWVkX2Zsb3dfZ2V0X2NvbnRlbnRfbm9kZXMoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93
KiBmbG93KTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9yZWdp
b25zX2J5X2NvbnRlbnRfbm9kZToKKyAqIEBmbG93OiBBICNXZWJLaXRET01XZWJLaXROYW1lZEZs
b3cKKyAqIEBjb250ZW50X25vZGU6IEEgI1dlYktpdERPTU5vZGUKKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTU5vZGVMaXN0CisgKgorICogRGVwcmVjYXRlZDog
MS4xMDogVXNlIHdlYmtpdF9kb21fd2Via2l0X25hbWVkX2Zsb3dfZ2V0X3JlZ2lvbnNfYnlfY29u
dGVudCgpIGluc3RlYWQuCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEX0ZPUih3ZWJraXRfZG9tX3dl
YmtpdF9uYW1lZF9mbG93X2dldF9yZWdpb25zX2J5X2NvbnRlbnQpIFdlYktpdERPTU5vZGVMaXN0
Kgord2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfcmVnaW9uc19ieV9jb250ZW50X25v
ZGUoV2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiBmbG93LCBXZWJLaXRET01Ob2RlKiBjb250ZW50
X25vZGUpOworCitXRUJLSVRfREVQUkVDQVRFRCBHVHlwZQord2Via2l0X2RvbV9iYXJfaW5mb19n
ZXRfdHlwZSh2b2lkKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2Jhcl9pbmZvX2dldF92aXNpYmxl
OgorICogQHNlbGY6IEEgI1dlYktpdERPTUJhckluZm8KKyAqCisgKiBUaGUgQmFySW5mbyB0eXBl
IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHNwZWMsIHRoaXMgZnVuY3Rpb24gZG9lcyBu
b3RoaW5nLgorICoKKyAqIFJldHVybnM6IEEgI2dib29sZWFuCisgKgorICogRGVwcmVjYXRlZDog
Mi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGdib29sZWFuCit3ZWJraXRfZG9tX2Jhcl9pbmZv
X2dldF92aXNpYmxlKHZvaWQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fY29uc29sZV9n
ZXRfbWVtb3J5OgorICogQHNlbGY6IEEgI1dlYktpdERPTUNvbnNvbGUKKyAqCisgKiBUaGlzIGZ1
bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoKKyAqIERl
cHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRFRCB2b2lkKgord2Via2l0X2RvbV9j
b25zb2xlX2dldF9tZW1vcnkoV2ViS2l0RE9NQ29uc29sZSogc2VsZik7CisKKy8qKgorICogd2Vi
a2l0X2RvbV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X2Nzc192YWx1ZToKKyAq
IEBzZWxmOiBBICNXZWJLaXRET01DU1NTdHlsZURlY2xhcmF0aW9uCisgKiBAcHJvcGVydHlOYW1l
OiBBICNnY2hhcgorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZy
b20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTUNTU1ZhbHVlCisgKgorICogRGVwcmVjYXRlZDog
Mi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdlYktpdERPTUNTU1ZhbHVlKgord2Via2l0X2Rv
bV9jc3Nfc3R5bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X2Nzc192YWx1ZShXZWJLaXRET01D
U1NTdHlsZURlY2xhcmF0aW9uKiBzZWxmLCBjb25zdCBnY2hhciogcHJvcGVydHlOYW1lKTsKKwor
LyoqCisgKiB3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfaGlkZGVuOgorICogQHNlbGY6
IEEgI1dlYktpdERPTURvY3VtZW50CisgKgorICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVu
IHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAq
IFJldHVybnM6IEEgI2dib29sZWFuCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJ
VF9ERVBSRUNBVEVEIGdib29sZWFuCit3ZWJraXRfZG9tX2RvY3VtZW50X2dldF93ZWJraXRfaGlk
ZGVuKFdlYktpdERPTURvY3VtZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2RvY3Vt
ZW50X2dldF93ZWJraXRfdmlzaWJpbGl0eV9zdGF0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01E
b2N1bWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20g
V2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiBBICNn
Y2hhcgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRFRCBnY2hh
cioKK3dlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X3dlYmtpdF92aXNpYmlsaXR5X3N0YXRlKFdlYktp
dERPTURvY3VtZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRf
b3BlbjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRG9jdW1lbnQKKyAqCisgKiBUaGlzIGZ1
bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdGhpbmcuCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNB
VEVEIHZvaWQKK3dlYmtpdF9kb21faHRtbF9kb2N1bWVudF9vcGVuKFdlYktpdERPTUhUTUxEb2N1
bWVudCogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1f
aWQ6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQKKyAqIEB2YWx1ZTogQSAjZ2No
YXIKKyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktp
dCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogRGVwcmVjYXRlZDogMi4yCisg
Ki8KK1dFQktJVF9ERVBSRUNBVEVEIHZvaWQKK3dlYmtpdF9kb21faHRtbF9lbGVtZW50X3NldF9p
dGVtX2lkKFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOwor
CisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX2lkOgorICogQHNlbGY6
IEEgI1dlYktpdERPTUhUTUxFbGVtZW50CisgKgorICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoK
KyAqIFJldHVybnM6IEEgI2djaGFyCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJ
VF9ERVBSRUNBVEVEIGdjaGFyKgord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1faWQo
V2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X2dldF9pdGVtX3JlZjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01IVE1MRWxlbWVudAor
ICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9u
ZSk6IGEgI1dlYktpdERPTURPTVNldHRhYmxlVG9rZW5MaXN0CisgKgorICogRGVwcmVjYXRlZDog
Mi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdlYktpdERPTURPTVNldHRhYmxlVG9rZW5MaXN0
Kgord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fcmVmKFdlYktpdERPTUhUTUxFbGVt
ZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9w
cm9wOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxFbGVtZW50CisgKgorICogVGhpcyBmdW5j
dGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9l
cyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogYSAjV2ViS2l0RE9N
RE9NU2V0dGFibGVUb2tlbkxpc3QKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lU
X0RFUFJFQ0FURUQgV2ViS2l0RE9NRE9NU2V0dGFibGVUb2tlbkxpc3QqCit3ZWJraXRfZG9tX2h0
bWxfZWxlbWVudF9nZXRfaXRlbV9wcm9wKFdlYktpdERPTUhUTUxFbGVtZW50KiBzZWxmKTsKKwor
LyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaXRlbV9zY29wZToKKyAqIEBzZWxm
OiBBICNXZWJLaXRET01IVE1MRWxlbWVudAorICogQHZhbHVlOiBBICNnYm9vbGVhbgorICoKKyAq
IFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1
bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lU
X0RFUFJFQ0FURUQgdm9pZAord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1fc2NvcGUo
V2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKKworLyoqCisgKiB3
ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfaXRlbV9zY29wZToKKyAqIEBzZWxmOiBBICNXZWJL
aXRET01IVE1MRWxlbWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1v
dmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1
cm5zOiBBICNnYm9vbGVhbgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQ
UkVDQVRFRCBnYm9vbGVhbgord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fc2NvcGUo
V2ViS2l0RE9NSFRNTEVsZW1lbnQqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9l
bGVtZW50X2dldF9pdGVtX3R5cGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTEVsZW1lbnQK
KyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwg
dGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5v
bmUpOgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRFRCB2b2lk
Kgord2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fdHlwZShXZWJLaXRET01IVE1MRWxl
bWVudCogc2VsZik7CisKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfc3R5bGVfZWxlbWVudF9z
ZXRfc2NvcGVkOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQKKyAqIEB2
YWx1ZTogQSAjZ2Jvb2xlYW4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogRGVw
cmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIHZvaWQKK3dlYmtpdF9kb21faHRt
bF9zdHlsZV9lbGVtZW50X3NldF9zY29wZWQoV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudCogc2Vs
ZiwgZ2Jvb2xlYW4gdmFsdWUpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVt
ZW50X2dldF9zY29wZWQ6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudAor
ICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0
aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiBBICNnYm9vbGVhbgor
ICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRFRCBnYm9vbGVhbgor
d2Via2l0X2RvbV9odG1sX3N0eWxlX2VsZW1lbnRfZ2V0X3Njb3BlZChXZWJLaXRET01IVE1MU3R5
bGVFbGVtZW50KiBzZWxmKTsKKworCitXRUJLSVRfREVQUkVDQVRFRCBHVHlwZQord2Via2l0X2Rv
bV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfdHlwZSh2b2lkKTsKKworLyoqCisgKiB3
ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2l0ZW06CisgKiBAc2VsZjogQSAj
V2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uCisgKiBAaW5kZXg6IEEgI2d1bG9uZwor
ICoKKyAqIFRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBm
cm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczog
KHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRET01Ob2RlCisgKgorICogRGVwcmVjYXRlZDogMi4y
CisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdlYktpdERPTU5vZGUqCit3ZWJraXRfZG9tX2h0bWxf
cHJvcGVydGllc19jb2xsZWN0aW9uX2l0ZW0odm9pZCogc2VsZiwgZ3Vsb25nIGluZGV4KTsKKwor
LyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX25hbWVkX2l0ZW06
CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uCisgKiBAbmFt
ZTogQSAjZ2NoYXIKKyAqCisgKiBUaGUgUHJvcGVydGllc0NvbGxlY3Rpb24gb2JqZWN0IGhhcyBi
ZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoK
KyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAq
LworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZCoKK3dlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2Nv
bGxlY3Rpb25fbmFtZWRfaXRlbSh2b2lkKiBzZWxmLCBjb25zdCBnY2hhciogbmFtZSk7CisKKy8q
KgorICogd2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfbGVuZ3RoOgor
ICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbgorICoKKyAqIFRo
ZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktp
dCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogQSAjZ3Vsb25n
CisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGd1bG9uZwor
d2Via2l0X2RvbV9odG1sX3Byb3BlcnRpZXNfY29sbGVjdGlvbl9nZXRfbGVuZ3RoKHZvaWQqIHNl
bGYpOworCisvKioKKyAqIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0
X25hbWVzOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbgor
ICoKKyAqIFRoZSBQcm9wZXJ0aWVzQ29sbGVjdGlvbiBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBm
cm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczog
KHRyYW5zZmVyIG5vbmUpOiBhICNXZWJLaXRET01ET01TdHJpbmdMaXN0CisgKgorICogRGVwcmVj
YXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIFdlYktpdERPTURPTVN0cmluZ0xpc3Qq
Cit3ZWJraXRfZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2dldF9uYW1lcyh2b2lkKiBz
ZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX25vZGVfZ2V0X2F0dHJpYnV0ZXM6CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NTm9kZQorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBS
ZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IGEgI1dlYktpdERPTU5hbWVkTm9kZU1hcAorICoKKyAq
IERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRFRCBXZWJLaXRET01OYW1lZE5v
ZGVNYXAqCit3ZWJraXRfZG9tX25vZGVfZ2V0X2F0dHJpYnV0ZXMoV2ViS2l0RE9NTm9kZSogc2Vs
Zik7CisKKy8qKgorICogd2Via2l0X2RvbV9ub2RlX2hhc19hdHRyaWJ1dGVzOgorICogQHNlbGY6
IEEgI1dlYktpdERPTU5vZGUKKyAqCisgKiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVt
b3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0
dXJuczogQSAjZ2Jvb2xlYW4KKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lUX0RF
UFJFQ0FURUQgZ2Jvb2xlYW4KK3dlYmtpdF9kb21fbm9kZV9oYXNfYXR0cmlidXRlcyhXZWJLaXRE
T01Ob2RlKiBzZWxmKTsKKworV0VCS0lUX0RFUFJFQ0FURUQgR1R5cGUKK3dlYmtpdF9kb21fbWVt
b3J5X2luZm9fZ2V0X3R5cGUodm9pZCk7CisKKy8qKgorICogd2Via2l0X2RvbV9tZW1vcnlfaW5m
b19nZXRfdG90YWxfanNfaGVhcF9zaXplOgorICogQHNlbGY6IEEgI1dlYktpdERPTU1lbW9yeUlu
Zm8KKyAqCisgKiBUaGUgTWVtb3J5SW5mbyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdl
YktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogQSAjZ3Vs
b25nCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGd1bG9u
Zword2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdG90YWxfanNfaGVhcF9zaXplKHZvaWQqIHNl
bGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3VzZWRfanNfaGVhcF9z
aXplOgorICogQHNlbGY6IEEgI1dlYktpdERPTU1lbW9yeUluZm8KKyAqCisgKiBUaGUgTWVtb3J5
SW5mbyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBk
b2VzIG5vdGhpbmcuCisgKgorICogUmV0dXJuczogQSAjZ3Vsb25nCisgKgorICogRGVwcmVjYXRl
ZDogMi4yCisgKi8KK1dFQktJVF9ERVBSRUNBVEVEIGd1bG9uZword2Via2l0X2RvbV9tZW1vcnlf
aW5mb19nZXRfdXNlZF9qc19oZWFwX3NpemUodm9pZCogc2VsZik7CisKKy8qKgorICogd2Via2l0
X2RvbV9tZW1vcnlfaW5mb19nZXRfanNfaGVhcF9zaXplX2xpbWl0OgorICogQHNlbGY6IEEgI1dl
YktpdERPTU1lbW9yeUluZm8KKyAqCisgKiBUaGUgTWVtb3J5SW5mbyBvYmplY3QgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIFdlYktpdCwgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgKgorICog
UmV0dXJuczogQSAjZ3Vsb25nCisgKgorICogRGVwcmVjYXRlZDogMi4yCisgKi8KK1dFQktJVF9E
RVBSRUNBVEVEIGd1bG9uZword2Via2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfanNfaGVhcF9zaXpl
X2xpbWl0KHZvaWQqIHNlbGYpOworCitXRUJLSVRfREVQUkVDQVRFRCBHVHlwZQord2Via2l0X2Rv
bV9taWNyb19kYXRhX2l0ZW1fdmFsdWVfZ2V0X3R5cGUodm9pZCk7CisKKy8qKgorICogd2Via2l0
X2RvbV9wZXJmb3JtYW5jZV9nZXRfbWVtb3J5OgorICogQHNlbGY6IEEgI1dlYktpdERPTVBlcmZv
cm1hbmNlCisgKgorICogVGhpcyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBX
ZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6ICh0cmFu
c2ZlciBub25lKToKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FU
RUQgdm9pZCoKK3dlYmtpdF9kb21fcGVyZm9ybWFuY2VfZ2V0X21lbW9yeShXZWJLaXRET01QZXJm
b3JtYW5jZSogc2VsZik7CisKK1dFQktJVF9ERVBSRUNBVEVEIEdUeXBlCit3ZWJraXRfZG9tX3By
b3BlcnR5X25vZGVfbGlzdF9nZXRfdHlwZSh2b2lkKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3By
b3BlcnR5X25vZGVfbGlzdF9pdGVtOgorICogQHNlbGY6IEEgI1dlYktpdERPTVByb3BlcnR5Tm9k
ZUxpc3QKKyAqIEBpbmRleDogQSAjZ3Vsb25nCisgKgorICogVGhlIFByb3BlcnR5Tm9kZUxpc3Qg
b2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBu
b3RoaW5nLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogYSAjV2ViS2l0RE9NTm9k
ZQorICoKKyAqIERlcHJlY2F0ZWQ6IDIuMgorICovCitXRUJLSVRfREVQUkVDQVRFRCBXZWJLaXRE
T01Ob2RlKgord2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfaXRlbSh2b2lkKiBzZWxmLCBn
dWxvbmcgaW5kZXgpOworCisvKioKKyAqIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2dl
dF9sZW5ndGg6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NUHJvcGVydHlOb2RlTGlzdAorICoKKyAq
IFRoZSBQcm9wZXJ0eU5vZGVMaXN0IG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gV2ViS2l0
LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1cm5zOiBBICNndWxvbmcK
KyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgZ3Vsb25nCit3
ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfbGVuZ3RoKHZvaWQqIHNlbGYpOworCisv
KioKKyAqIHdlYmtpdF9kb21faHRtbF9tZWRpYV9lbGVtZW50X2dldF9zdGFydF90aW1lOgorICog
QHNlbGY6IEEgI0hUTUxNZWRpYUVsZW1lbnQKKyAqCisgKiBUaGUgSFRNTE1lZGlhRWxlbWVudDpz
dGFydC10aW1lIHByb3BlcnR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBXZWJLaXQsIHRoaXMgZnVu
Y3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6IEEgI2dkb3VibGUKKyAqCisgKiBE
ZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgZ2RvdWJsZQord2Via2l0X2Rv
bV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X3N0YXJ0X3RpbWUoV2ViS2l0RE9NSFRNTE1lZGlhRWxl
bWVudCogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0
X2luaXRpYWxfdGltZToKKyAqIEBzZWxmOiBBICNIVE1MTWVkaWFFbGVtZW50CisgKgorICogVGhl
IEhUTUxNZWRpYUVsZW1lbnQ6aW5pdGlhbC10aW1lIHByb3BlcnR5IGhhcyBiZWVuIHJlbW92ZWQg
ZnJvbSBXZWJLaXQsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorICoKKyAqIFJldHVybnM6
IEEgI2dkb3VibGUKKyAqCisgKiBEZXByZWNhdGVkOiAyLjIKKyAqLworV0VCS0lUX0RFUFJFQ0FU
RUQgZ2RvdWJsZQord2Via2l0X2RvbV9odG1sX21lZGlhX2VsZW1lbnRfZ2V0X2luaXRpYWxfdGlt
ZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9t
X2h0bWxfaGVhZF9lbGVtZW50X2dldF9wcm9maWxlOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhU
TUxIZWFkRWxlbWVudAorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVk
IGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1cm5z
OiBhICNnY2hhcgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuNAorICovCitXRUJLSVRfREVQUkVDQVRF
RCBnY2hhcioKK3dlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1lbnRfZ2V0X3Byb2ZpbGUoV2ViS2l0
RE9NSFRNTEhlYWRFbGVtZW50KiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX2h0bWxfaGVh
ZF9lbGVtZW50X3NldF9wcm9maWxlOgorICogQHNlbGY6IEEgI1dlYktpdERPTUhUTUxIZWFkRWxl
bWVudAorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMg
YmVlbiByZW1vdmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAq
CisgKiBEZXByZWNhdGVkOiAyLjQKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZAord2Via2l0
X2RvbV9odG1sX2hlYWRfZWxlbWVudF9zZXRfcHJvZmlsZShXZWJLaXRET01IVE1MSGVhZEVsZW1l
bnQqIHNlbGYsIGNvbnN0IGdjaGFyKiB2YWx1ZSk7CisKKy8qKgorICogd2Via2l0X2RvbV9wcm9j
ZXNzaW5nX2luc3RydWN0aW9uX2dldF9kYXRhOgorICogQHNlbGY6IEEgI1dlYktpdERPTVByb2Nl
c3NpbmdJbnN0cnVjdGlvbgorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1v
dmVkIGZyb20gV2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBSZXR1
cm5zOiBhICNnY2hhcgorICoKKyAqIERlcHJlY2F0ZWQ6IDIuNAorICovCitXRUJLSVRfREVQUkVD
QVRFRCBnY2hhcioKK3dlYmtpdF9kb21fcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9nZXRfZGF0YShX
ZWJLaXRET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9k
b21fcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9zZXRfZGF0YToKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24KKyAqIEB2YWx1ZTogQSAjZ2NoYXIKKyAqIEBlcnJvcjog
I0dFcnJvcgorICoKKyAqIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZW1vdmVkIGZyb20g
V2ViS2l0LCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KKyAqCisgKiBEZXByZWNhdGVkOiAy
LjQKKyAqLworV0VCS0lUX0RFUFJFQ0FURUQgdm9pZAord2Via2l0X2RvbV9wcm9jZXNzaW5nX2lu
c3RydWN0aW9uX3NldF9kYXRhKFdlYktpdERPTVByb2Nlc3NpbmdJbnN0cnVjdGlvbiogc2VsZiwg
Y29uc3QgZ2NoYXIqIHZhbHVlLCBHRXJyb3IqKiBlcnJvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNl
bmRpZiAvKiBXRUJLSVRfRElTQUJMRV9ERVBSRUNBVEVEICovCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLnN5
bWJvbHMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0
ZWQuc3ltYm9scwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MjA2ZDgxCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRE
T01EZXByZWNhdGVkLnN5bWJvbHMKQEAgLTAsMCArMSw0OCBAQAorV2ViS2l0RE9NQmxvYiogd2Vi
a2l0X2RvbV9ibG9iX3dlYmtpdF9zbGljZShXZWJLaXRET01CbG9iKiwgZ2ludDY0LCBnaW50NjQs
IGNvbnN0IGdjaGFyKikKK2djaGFyKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3Nf
bmFtZShXZWJLaXRET01IVE1MRWxlbWVudCopCit2b2lkIHdlYmtpdF9kb21faHRtbF9lbGVtZW50
X3NldF9jbGFzc19uYW1lKFdlYktpdERPTUhUTUxFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQorV2Vi
S2l0RE9NRE9NVG9rZW5MaXN0KiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9nZXRfY2xhc3NfbGlz
dChXZWJLaXRET01IVE1MRWxlbWVudCopCit2b2lkIHdlYmtpdF9kb21faHRtbF9mb3JtX2VsZW1l
bnRfZGlzcGF0Y2hfZm9ybV9jaGFuZ2UoV2ViS2l0RE9NSFRNTEZvcm1FbGVtZW50KikKK3ZvaWQg
d2Via2l0X2RvbV9odG1sX2Zvcm1fZWxlbWVudF9kaXNwYXRjaF9mb3JtX2lucHV0KFdlYktpdERP
TUhUTUxGb3JtRWxlbWVudCopCitnYm9vbGVhbiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93
X2dldF9vdmVyZmxvdyhXZWJLaXRET01XZWJLaXROYW1lZEZsb3cqKQorZ2NoYXIqIHdlYmtpdF9k
b21fZWxlbWVudF9nZXRfd2Via2l0X3JlZ2lvbl9vdmVyZmxvdyhXZWJLaXRET01FbGVtZW50KikK
K1dlYktpdERPTU5vZGVMaXN0KiB3ZWJraXRfZG9tX3dlYmtpdF9uYW1lZF9mbG93X2dldF9jb250
ZW50X25vZGVzKFdlYktpdERPTVdlYktpdE5hbWVkRmxvdyopCitXZWJLaXRET01Ob2RlTGlzdCog
d2Via2l0X2RvbV93ZWJraXRfbmFtZWRfZmxvd19nZXRfcmVnaW9uc19ieV9jb250ZW50X25vZGUo
V2ViS2l0RE9NV2ViS2l0TmFtZWRGbG93KiwgV2ViS2l0RE9NTm9kZSopCitHVHlwZSB3ZWJraXRf
ZG9tX2Jhcl9pbmZvX2dldF90eXBlKHZvaWQpCitnYm9vbGVhbiB3ZWJraXRfZG9tX2Jhcl9pbmZv
X2dldF92aXNpYmxlKHZvaWQqKQordm9pZCogd2Via2l0X2RvbV9jb25zb2xlX2dldF9tZW1vcnko
V2ViS2l0RE9NQ29uc29sZSopCitXZWJLaXRET01DU1NWYWx1ZSogd2Via2l0X2RvbV9jc3Nfc3R5
bGVfZGVjbGFyYXRpb25fZ2V0X3Byb3BlcnR5X2Nzc192YWx1ZShXZWJLaXRET01DU1NTdHlsZURl
Y2xhcmF0aW9uKiwgY29uc3QgZ2NoYXIqKQorZ2Jvb2xlYW4gd2Via2l0X2RvbV9kb2N1bWVudF9n
ZXRfd2Via2l0X2hpZGRlbihXZWJLaXRET01Eb2N1bWVudCopCitnY2hhciogd2Via2l0X2RvbV9k
b2N1bWVudF9nZXRfd2Via2l0X3Zpc2liaWxpdHlfc3RhdGUoV2ViS2l0RE9NRG9jdW1lbnQqKQor
dm9pZCB3ZWJraXRfZG9tX2h0bWxfZG9jdW1lbnRfb3BlbihXZWJLaXRET01IVE1MRG9jdW1lbnQq
KQordm9pZCB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9zZXRfaXRlbV9pZChXZWJLaXRET01IVE1M
RWxlbWVudCosIGNvbnN0IGdjaGFyKikKK2djaGFyKiB3ZWJraXRfZG9tX2h0bWxfZWxlbWVudF9n
ZXRfaXRlbV9pZChXZWJLaXRET01IVE1MRWxlbWVudCopCitXZWJLaXRET01ET01TZXR0YWJsZVRv
a2VuTGlzdCogd2Via2l0X2RvbV9odG1sX2VsZW1lbnRfZ2V0X2l0ZW1fcmVmKFdlYktpdERPTUhU
TUxFbGVtZW50KikKK1dlYktpdERPTURPTVNldHRhYmxlVG9rZW5MaXN0KiB3ZWJraXRfZG9tX2h0
bWxfZWxlbWVudF9nZXRfaXRlbV9wcm9wKFdlYktpdERPTUhUTUxFbGVtZW50KikKK3ZvaWQgd2Vi
a2l0X2RvbV9odG1sX2VsZW1lbnRfc2V0X2l0ZW1fc2NvcGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQq
LCBnYm9vbGVhbikKK2dib29sZWFuIHdlYmtpdF9kb21faHRtbF9lbGVtZW50X2dldF9pdGVtX3Nj
b3BlKFdlYktpdERPTUhUTUxFbGVtZW50KikKK3ZvaWQqIHdlYmtpdF9kb21faHRtbF9lbGVtZW50
X2dldF9pdGVtX3R5cGUoV2ViS2l0RE9NSFRNTEVsZW1lbnQqKQordm9pZCB3ZWJraXRfZG9tX2h0
bWxfc3R5bGVfZWxlbWVudF9zZXRfc2NvcGVkKFdlYktpdERPTUhUTUxTdHlsZUVsZW1lbnQqLCBn
Ym9vbGVhbikKK2dib29sZWFuIHdlYmtpdF9kb21faHRtbF9zdHlsZV9lbGVtZW50X2dldF9zY29w
ZWQoV2ViS2l0RE9NSFRNTFN0eWxlRWxlbWVudCopCitHVHlwZSB3ZWJraXRfZG9tX2h0bWxfcHJv
cGVydGllc19jb2xsZWN0aW9uX2dldF90eXBlKHZvaWQpCitXZWJLaXRET01Ob2RlKiB3ZWJraXRf
ZG9tX2h0bWxfcHJvcGVydGllc19jb2xsZWN0aW9uX2l0ZW0odm9pZCosIGd1bG9uZykKK3ZvaWQq
IHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fbmFtZWRfaXRlbSh2b2lkKiwg
Y29uc3QgZ2NoYXIqKQorZ3Vsb25nIHdlYmtpdF9kb21faHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rp
b25fZ2V0X2xlbmd0aCh2b2lkKikKK1dlYktpdERPTURPTVN0cmluZ0xpc3QqIHdlYmtpdF9kb21f
aHRtbF9wcm9wZXJ0aWVzX2NvbGxlY3Rpb25fZ2V0X25hbWVzKHZvaWQqKQorV2ViS2l0RE9NTmFt
ZWROb2RlTWFwKiB3ZWJraXRfZG9tX25vZGVfZ2V0X2F0dHJpYnV0ZXMoV2ViS2l0RE9NTm9kZSop
CitnYm9vbGVhbiB3ZWJraXRfZG9tX25vZGVfaGFzX2F0dHJpYnV0ZXMoV2ViS2l0RE9NTm9kZSop
CitHVHlwZSB3ZWJraXRfZG9tX21lbW9yeV9pbmZvX2dldF90eXBlKHZvaWQpCitndWxvbmcgd2Vi
a2l0X2RvbV9tZW1vcnlfaW5mb19nZXRfdG90YWxfanNfaGVhcF9zaXplKHZvaWQqKQorZ3Vsb25n
IHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X3VzZWRfanNfaGVhcF9zaXplKHZvaWQqKQorZ3Vs
b25nIHdlYmtpdF9kb21fbWVtb3J5X2luZm9fZ2V0X2pzX2hlYXBfc2l6ZV9saW1pdCh2b2lkKikK
K0dUeXBlIHdlYmtpdF9kb21fbWljcm9fZGF0YV9pdGVtX3ZhbHVlX2dldF90eXBlKHZvaWQpCit2
b2lkKiB3ZWJraXRfZG9tX3BlcmZvcm1hbmNlX2dldF9tZW1vcnkoV2ViS2l0RE9NUGVyZm9ybWFu
Y2UqKQorR1R5cGUgd2Via2l0X2RvbV9wcm9wZXJ0eV9ub2RlX2xpc3RfZ2V0X3R5cGUodm9pZCkK
K1dlYktpdERPTU5vZGUqIHdlYmtpdF9kb21fcHJvcGVydHlfbm9kZV9saXN0X2l0ZW0odm9pZCos
IGd1bG9uZykKK2d1bG9uZyB3ZWJraXRfZG9tX3Byb3BlcnR5X25vZGVfbGlzdF9nZXRfbGVuZ3Ro
KHZvaWQqKQorZ2RvdWJsZSB3ZWJraXRfZG9tX2h0bWxfbWVkaWFfZWxlbWVudF9nZXRfc3RhcnRf
dGltZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50KikKK2dkb3VibGUgd2Via2l0X2RvbV9odG1s
X21lZGlhX2VsZW1lbnRfZ2V0X2luaXRpYWxfdGltZShXZWJLaXRET01IVE1MTWVkaWFFbGVtZW50
KikKK2djaGFyKiB3ZWJraXRfZG9tX2h0bWxfaGVhZF9lbGVtZW50X2dldF9wcm9maWxlKFdlYktp
dERPTUhUTUxIZWFkRWxlbWVudCopCit2b2lkIHdlYmtpdF9kb21faHRtbF9oZWFkX2VsZW1lbnRf
c2V0X3Byb2ZpbGUoV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50KiwgY29uc3QgZ2NoYXIqKQorZ2No
YXIqIHdlYmtpdF9kb21fcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9nZXRfZGF0YShXZWJLaXRET01Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24qKQordm9pZCB3ZWJraXRfZG9tX3Byb2Nlc3NpbmdfaW5zdHJ1
Y3Rpb25fc2V0X2RhdGEoV2ViS2l0RE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uKiwgY29uc3QgZ2No
YXIqLCBHRXJyb3IqKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvZ29iamVjdC1nZW5lcmF0ZS1oZWFkZXJzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9nb2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwKaW5kZXggOTdjZDRmZi4uYjM5Y2Yy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nb2JqZWN0LWdl
bmVyYXRlLWhlYWRlcnMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9n
b2JqZWN0LWdlbmVyYXRlLWhlYWRlcnMucGwKQEAgLTgwLDkgKzgwLDExIEBAIGlmICgkb3V0VHlw
ZSBlcSAiZGVmaW5lcyIpIHsKICAgICBwcmludCAiI2VuZGlmXG4iOwogCiAgICAgZm9yZWFjaCBt
eSAkY2xhc3MgKEBjbGFzc2VzKSB7Ci0gICAgICAgIHByaW50ICJ0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0RE9NJHtjbGFzc30gV2ViS2l0RE9NJHtjbGFzc307XG4iOwotICAgICAgICBwcmludCAidHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdERPTSR7Y2xhc3N9Q2xhc3MgV2ViS2l0RE9NJHtjbGFzc31DbGFz
cztcbiI7Ci0gICAgICAgIHByaW50ICJcbiI7CisgICAgICAgIGlmICgkY2xhc3MgbmUgIkRlcHJl
Y2F0ZWQiICYmICRjbGFzcyBuZSAiQ3VzdG9tIikgeworICAgICAgICAgICAgcHJpbnQgInR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRET00ke2NsYXNzfSBXZWJLaXRET00ke2NsYXNzfTtcbiI7CisgICAg
ICAgICAgICBwcmludCAidHlwZWRlZiBzdHJ1Y3QgX1dlYktpdERPTSR7Y2xhc3N9Q2xhc3MgV2Vi
S2l0RE9NJHtjbGFzc31DbGFzcztcbiI7CisgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAg
ICB9CiAgICAgfQogfSBlbHNpZiAoJG91dFR5cGUgZXEgImdkb20iKSB7CiAgICAgcHJpbnQgIiNk
ZWZpbmUgX19XRUJLSVRET01fSF9JTlNJREVfX1xuXG4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM3YjI2OTYuLjZjM2JjNDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBA
QAorMjAxMy0xMS0xNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gTWFyayBhbGwgZGVwcmVjYXRlZCBzeW1ib2xzIGluIEdPYmplY3Qg
RE9NIGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjQ0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weTogQWRkIHNwZWNpYWwgY2Fz
ZSBmb3IKKyAgICAgICAgV2ViS2l0RE9NRGVwcmVjYXRlZC4KKyAgICAgICAgKiBndGsvZ2VuZXJh
dGUtZ3RrZG9jOgorICAgICAgICAoZ2V0X3dlYmtpdDJfb3B0aW9ucyk6IFVzZSB0aGUgcHJlZml4
IG9mIHRoZSBtZXRob2RzIGFzIG5hbWVzcGFjZSwKKyAgICAgICAgc2luY2UgdGhpcyBpcyB3aGF0
IGd0a2RvYyBleHBlY3RzIHRvIHNvcnQgdGhlIGluZGV4LgorICAgICAgICAoZ2V0X3dlYmtpdDFf
b3B0aW9ucyk6IERpdHRvLgorICAgICAgICAoZ2V0X3dlYmtpdGRvbV9vcHRpb25zKTogRGl0dG8u
CisgICAgICAgICogZ3RrL2dlbmVyYXRlLXdlYmtpdGRvbS1kb2MtZmlsZXM6CisgICAgICAgIChX
ZWJLaXRET01Eb2NHZW5lcmF0b3IpOiBBZGQgYSBnbG9iYWwgbGlzdCBvZiBkZWxldGVkIG9iamVj
dHMuCisgICAgICAgIChXZWJLaXRET01Eb2NHZW5lcmF0b3Iud3JpdGVfZGVsZXRlZF9jbGFzc2Vz
KTogTmV3IG1ldGhvZCB0byB3cml0ZQorICAgICAgICB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgY2xh
c3NlcyB0aGF0IGFyZSBkZXByZWNhdGVkIGJlY2F1c2UgdGhleQorICAgICAgICBoYXZlIGJlZW4g
cmVtb3ZlZC4KKyAgICAgICAgKFdlYktpdERPTURvY0dlbmVyYXRvckRvY3Mud3JpdGVfZGVsZXRl
ZF9jbGFzc2VzKTogQWRkIHNlY3Rpb25zCisgICAgICAgIGZvciBkZWxldGVkIGNsYXNzZXMgdG9v
LgorICAgICAgICAoV2ViS2l0RE9NRG9jR2VuZXJhdG9yU2VjdGlvbnMuX19pbml0X18pOiBCdWls
ZCBhIGxpc3Qgb2YKKyAgICAgICAgZGVwcmVjYXRlZCBzeW1ib2xzIHVzaW5nIHRoZSBnaXZlbiBz
eW1ib2xzIGZpbGUuCisgICAgICAgIChXZWJLaXRET01Eb2NHZW5lcmF0b3JTZWN0aW9ucy5fZGVs
ZXRlZF9jbGFzcyk6IFJldHVybnMgdGhlCisgICAgICAgIGRlbGV0ZWQgY2xhc3MgY29ycmVzcG9u
ZGluZyB0byB0aGUgZ2l2ZW4gZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXRET01Eb2NHZW5lcmF0
b3JTZWN0aW9ucy5fZGVwcmVjYXRlZF9zeW1ib2xzKTogQnVpbGRzIGEKKyAgICAgICAgZGljdGlv
bmFyeSBvZiBkZXByZWNhdGVkIHN5bWJvbHMgZm9yIGV2ZXJ5IGNsYXNzLgorICAgICAgICAoV2Vi
S2l0RE9NRG9jR2VuZXJhdG9yU2VjdGlvbnMud3JpdGVfc2VjdGlvbik6IEFkZCBhbHNvIHRoZQor
ICAgICAgICBkZXByZWNhdGVkIHN5bWJvbHMgaW4gZXZlcnkgc2VjdGlvbi4KKyAgICAgICAgKFdl
YktpdERPTURvY0dlbmVyYXRvclNlY3Rpb25zLndyaXRlX2RlbGV0ZWRfY2xhc3Nlcyk6IEFkZAor
ICAgICAgICBzZWN0aW9ucyBmb3IgZGVsZXRlZCBjbGFzc2VzIHRvby4KKwogMjAxMy0xMS0xOSAg
TWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
NTQ4NzA3Mj4gTW9kZXJuaXplIFdlYktpdC5hcHAncyBPUyBYIHZlcnNpb24gY2hlY2tpbmcgbG9n
aWMuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggNmM1Zjk4Yi4u
ODkyMDU3YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMTUy
LDYgKzE1Miw3IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAgICAgICMgcGFyZW5zIGZv
ciBmdW5jdGlvbiBjYWxscywgYW5kIGFsd2F5cyBoYXZpbmcgdmFyaWFibGUgbmFtZXMuCiAgICAg
ICAjIEFsc28sIEdUSysgYWxsb3dzIHRoZSB1c2Ugb2YgTlVMTC4KICAgICAgICJTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTUN1c3RvbS5oIiwKKyAgICAgICJTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L1dlYktpdERPTURlcHJlY2F0ZWQuaCIsCiAgICAgICAi
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5oIiwK
ICAgICAgICJTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdCIsCiAg
ICAgICAiU291cmNlL1dlYktpdC9ndGsvd2Via2l0LyIsCkBAIC0yMjIsNiArMjIzLDcgQEAgX1BB
VEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgIChbIyBUaGVzZSBmaWxlcyBkZWZpbmUgR09iamVj
dHMsIHdoaWNoIGltcGxpZXMgc29tZSBkZWZpbml0aW9ucyBvZgogICAgICAgIyB2YXJpYWJsZXMg
YW5kIGZ1bmN0aW9ucyBjb250YWluaW5nIHVuZGVyc2NvcmVzLgogICAgICAgIlNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0RE9NQ3VzdG9tLmNwcCIsCisgICAgICAiU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01EZXByZWNhdGVkLmNwcCIsCiAgICAg
ICAiU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9XZWJLaXRET01FdmVudFRhcmdldC5j
cHAiLAogICAgICAgIlNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9W
aWRlb1NpbmtHU3RyZWFtZXIxLmNwcCIsCiAgICAgICAiU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJlYW1lci5jcHAiLApkaWZmIC0tZ2l0IGEv
VG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKaW5k
ZXggZTAzOTI5ZC4uODdmNjg0NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2Rv
YworKysgYi9Ub29scy9ndGsvZ2VuZXJhdGUtZ3RrZG9jCkBAIC05MSw3ICs5MSw3IEBAIGRlZiBn
ZXRfd2Via2l0Ml9vcHRpb25zKCk6CiAgICAgb3B0aW9ucyA9IGdldF9jb21tb25fb3B0aW9ucygp
LmNvcHkoKQogICAgIG9wdGlvbnMudXBkYXRlKHsKICAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3
ZWJraXQyZ3RrJywKLSAgICAgICAgJ25hbWVzcGFjZScgOiAnV2ViS2l0JywKKyAgICAgICAgJ25h
bWVzcGFjZScgOiAnd2Via2l0JywKICAgICAgICAgJ2RvY19kaXInIDogc3JjX3BhdGgoJ2RvY3Mn
KSwKICAgICAgICAgJ291dHB1dF9kaXInIDogY29tbW9uLmJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRp
b24nLCAnd2Via2l0Mmd0aycpLAogICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCks
IGRlcml2ZWRfc291cmNlc19wYXRoKCd3ZWJraXQyZ3RrJywgJ3dlYmtpdDInKSwgaW5qZWN0ZWRf
YnVuZGxlX3NyY19wYXRoKCldLApAQCAtMTMyLDcgKzEzMiw3IEBAIGRlZiBnZXRfd2Via2l0MV9v
cHRpb25zKGd0a192ZXJzaW9uKToKICAgICBvcHRpb25zID0gZ2V0X2NvbW1vbl9vcHRpb25zKCku
Y29weSgpCiAgICAgb3B0aW9ucy51cGRhdGUoewogICAgICAgICAnbW9kdWxlX25hbWUnIDogJ3dl
YmtpdGd0aycsCi0gICAgICAgICduYW1lc3BhY2UnIDogJ1dlYktpdCcsCisgICAgICAgICduYW1l
c3BhY2UnIDogJ3dlYmtpdCcsCiAgICAgICAgICdkb2NfZGlyJyA6IHNyY19wYXRoKCdkb2NzJyks
CiAgICAgICAgICdvdXRwdXRfZGlyJyA6IGNvbW1vbi5idWlsZF9wYXRoKCdEb2N1bWVudGF0aW9u
JywgJ3dlYmtpdGd0aycpLAogICAgICAgICAnc291cmNlX2RpcnMnIDogW3NyY19wYXRoKCd3ZWJr
aXQnKSwgY29tbW9uLmJ1aWxkX3BhdGgoJ1NvdXJjZScsICdXZWJLaXQnLCAnZ3RrJywgJ3dlYmtp
dCcpXSwKQEAgLTE1OSw3ICsxNTksNyBAQCBkZWYgZ2V0X3dlYmtpdGRvbV9vcHRpb25zKCk6CiAg
ICAgb3B0aW9ucyA9IGdldF9jb21tb25fb3B0aW9ucygpLmNvcHkoKQogICAgIG9wdGlvbnMudXBk
YXRlKHsKICAgICAgICAgJ21vZHVsZV9uYW1lJyA6ICd3ZWJraXRkb21ndGsnLAotICAgICAgICAn
bmFtZXNwYWNlJyA6ICdXZWJLaXRET00nLAorICAgICAgICAnbmFtZXNwYWNlJyA6ICd3ZWJraXRf
ZG9tJywKICAgICAgICAgJ2RvY19kaXInIDogZGVyaXZlZF9zb3VyY2VzX3BhdGgoJ2RvY3MnKSwK
ICAgICAgICAgJ291dHB1dF9kaXInIDogY29tbW9uLmJ1aWxkX3BhdGgoJ0RvY3VtZW50YXRpb24n
LCAnd2Via2l0ZG9tZ3RrJyksCiAgICAgICAgICdzb3VyY2VfZGlycycgOiBbZGVyaXZlZF9zb3Vy
Y2VzX3BhdGgoKV0sCmRpZmYgLS1naXQgYS9Ub29scy9ndGsvZ2VuZXJhdGUtd2Via2l0ZG9tLWRv
Yy1maWxlcyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS13ZWJraXRkb20tZG9jLWZpbGVzCmluZGV4IDNi
NThiNGQuLmI0N2UyOWEgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS13ZWJraXRkb20t
ZG9jLWZpbGVzCisrKyBiL1Rvb2xzL2d0ay9nZW5lcmF0ZS13ZWJraXRkb20tZG9jLWZpbGVzCkBA
IC0yMiwxMiArMjIsMTcgQEAgaW1wb3J0IHN5cwogCiBjbGFzcyBXZWJLaXRET01Eb2NHZW5lcmF0
b3I6CiAKKyAgICBERUxFVEVEX0NMQVNTRVMgPSBbIldlYktpdERPTUJhckluZm8iLCAiV2ViS2l0
RE9NSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIiwgIldlYktpdERPTU1lbW9yeUluZm8iLCAiV2Vi
S2l0RE9NTWljcm9EYXRhSXRlbVZhbHVlIiwgIldlYktpdERPTVByb3BlcnR5Tm9kZUxpc3QiIF0K
KwogICAgIGRlZiB3cml0ZV9oZWFkZXIoc2VsZik6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB3
cml0ZV9zZWN0aW9uKHNlbGYsIHN5bWJvbF9maWxlKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcgogCisgICAgZGVmIHdyaXRlX2RlbGV0ZWRfY2xhc3NlcyhzZWxmKToKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCiAgICAgZGVmIHdyaXRlX2Zvb3RlcihzZWxm
KToKICAgICAgICAgcGFzcwogCkBAIC01MywxMSArNTgsMjAgQEAgY2xhc3MgV2ViS2l0RE9NRG9j
R2VuZXJhdG9yRG9jcyhXZWJLaXRET01Eb2NHZW5lcmF0b3IpOgogICAgICAgICBiYXNlbmFtZSA9
IG9zLnBhdGguYmFzZW5hbWUoc3ltYm9sX2ZpbGUpCiAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUo
JyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvJXMiLz5cbicgJSBiYXNlbmFtZS5yZXBsYWNlKCIu
c3ltYm9scyIsICIueG1sIikpCiAKKyAgICBkZWYgd3JpdGVfZGVsZXRlZF9jbGFzc2VzKHNlbGYp
OgorICAgICAgICBmb3IgY2xhc3NfbmFtZSBpbiBzZWxmLkRFTEVURURfQ0xBU1NFUzoKKyAgICAg
ICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvJXMueG1s
Ii8+XG4nICUgY2xhc3NfbmFtZSkKKwogICAgIGRlZiB3cml0ZV9mb290ZXIoc2VsZik6CiAgICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUoJycnICA8L2NoYXB0ZXI+CiAKICAgPGluZGV4IGlkPSJpbmRl
eC1hbGwiPgogICAgIDx0aXRsZT5JbmRleDwvdGl0bGU+CisgICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL2FwaS1pbmRleC1mdWxsLnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgorICA8
L2luZGV4PgorICA8aW5kZXggaWQ9ImFwaS1pbmRleC1kZXByZWNhdGVkIiByb2xlPSJkZXByZWNh
dGVkIj4KKyAgICA8dGl0bGU+SW5kZXggb2YgZGVwcmVjYXRlZCBzeW1ib2xzPC90aXRsZT4KKyAg
ICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvYXBpLWluZGV4LWRlcHJlY2F0ZWQueG1sIj48eGk6ZmFs
bGJhY2sgLz48L3hpOmluY2x1ZGU+CiAgIDwvaW5kZXg+CiAKICAgPHhpOmluY2x1ZGUgaHJlZj0i
eG1sL2Fubm90YXRpb24tZ2xvc3NhcnkueG1sIj48eGk6ZmFsbGJhY2sgLz48L3hpOmluY2x1ZGU+
CkBAIC02NiwxMSArODAsMTMgQEAgY2xhc3MgV2ViS2l0RE9NRG9jR2VuZXJhdG9yRG9jcyhXZWJL
aXRET01Eb2NHZW5lcmF0b3IpOgogCiBjbGFzcyBXZWJLaXRET01Eb2NHZW5lcmF0b3JTZWN0aW9u
cyhXZWJLaXRET01Eb2NHZW5lcmF0b3IpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBkZXByZWNhdGVkX3N5bWJvbF9maWxlKToKICAgICAgICAgc2Vs
Zi5fZmlyc3RfZGVjYW1lbGl6ZV9yZSA9IHJlLmNvbXBpbGUoJyguKShbQS1aXVthLXpdKyknKQog
ICAgICAgICBzZWxmLl9zZWNvbmRfZGVjYW1lbGl6ZV9yZSA9IHJlLmNvbXBpbGUoJyhbYS16MC05
XSkoW0EtWl0pJykKICAgICAgICAgc2VsZi5fZG9tX2NsYXNzX3JlID0gcmUuY29tcGlsZSgnKF5X
ZWJLaXRET00pKC4rKSQnKQotICAgICAgICBzZWxmLl9mdW5jdGlvbl9yZSA9IHJlLmNvbXBpbGUo
J14uKyAoLispXCguKyQnKQorICAgICAgICBzZWxmLl9mdW5jdGlvbl9yZSA9IHJlLmNvbXBpbGUo
J14uKyAoLispXCgoLispXCkkJykKKworICAgICAgICBzZWxmLl9kZXByZWNhdGVkX3N5bWJvbHMg
PSBzZWxmLl9kZXByZWNhdGVkX3N5bWJvbHMoZGVwcmVjYXRlZF9zeW1ib2xfZmlsZSkKIAogICAg
IGRlZiBfZG9tX2NsYXNzKHNlbGYsIGNsYXNzX25hbWUpOgogICAgICAgICByZXR1cm4gc2VsZi5f
ZG9tX2NsYXNzX3JlLnN1YihyJ1wyJywgY2xhc3NfbmFtZSkKQEAgLTg2LDYgKzEwMiwzMSBAQCBj
bGFzcyBXZWJLaXRET01Eb2NHZW5lcmF0b3JTZWN0aW9ucyhXZWJLaXRET01Eb2NHZW5lcmF0b3Ip
OgogCiAgICAgICAgIHJldHVybiByZXR2YWwKIAorICAgIGRlZiBfZGVsZXRlZF9jbGFzcyhzZWxm
LCBmdW5jdGlvbik6CisgICAgICAgIGZvciBkZWxldGVkX2NsYXNzIGluIHNlbGYuREVMRVRFRF9D
TEFTU0VTOgorICAgICAgICAgICAgZGVjYW1lbGl6ZWQgPSAnd2Via2l0X2RvbV8lcycgJSBzZWxm
Ll9kb21fY2xhc3NfZGVjYW1lbGl6ZShkZWxldGVkX2NsYXNzKS5sb3dlcigpCisgICAgICAgICAg
ICBpZiBmdW5jdGlvbi5zdGFydHN3aXRoKGRlY2FtZWxpemVkKToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZGVsZXRlZF9jbGFzcworICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9kZXBy
ZWNhdGVkX3N5bWJvbHMoc2VsZiwgc3ltYm9sX2ZpbGUpOgorICAgICAgICByZXR2YWwgPSB7fQor
ICAgICAgICBmID0gb3BlbihzeW1ib2xfZmlsZSwgJ3InKQorICAgICAgICBmb3IgbGluZSBpbiBm
LnJlYWRsaW5lcygpOgorICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLl9mdW5jdGlvbl9yZS5tYXRj
aChsaW5lKQorICAgICAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisKKyAgICAgICAgICAgIGZ1bmN0aW9uID0gbWF0Y2guZ3JvdXAoMSkKKyAgICAgICAgICAg
IGFyZ3MgPSBtYXRjaC5ncm91cCgyKS5zcGxpdCgnLCAnKQorICAgICAgICAgICAgY2xhc3NfbmFt
ZSA9IGFyZ3NbMF0uc3RyaXAoJyonKQorICAgICAgICAgICAgaWYgY2xhc3NfbmFtZSA9PSAndm9p
ZCc6CisgICAgICAgICAgICAgICAgY2xhc3NfbmFtZSA9IHNlbGYuX2RlbGV0ZWRfY2xhc3MoZnVu
Y3Rpb24pCisKKyAgICAgICAgICAgIHJldHZhbC5zZXRkZWZhdWx0KGNsYXNzX25hbWUsIFtdKS5h
cHBlbmQoZnVuY3Rpb24pCisKKyAgICAgICAgcmV0dXJuIHJldHZhbAorCiAgICAgZGVmIF9zeW1i
b2xfbGlzdChzZWxmLCBzeW1ib2xfZmlsZSk6CiAgICAgICAgIHJldHZhbCA9IFtdCiAgICAgICAg
IGYgPSBvcGVuKHN5bWJvbF9maWxlLCAncicpCkBAIC0xMDgsNiArMTQ5LDExIEBAIGNsYXNzIFdl
YktpdERPTURvY0dlbmVyYXRvclNlY3Rpb25zKFdlYktpdERPTURvY0dlbmVyYXRvcik6CiAgICAg
ICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCclc1xuJyAlIGNsYXNzX25hbWUpCiAgICAgICAgIHN5
cy5zdGRvdXQud3JpdGUoJ1xuJykKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnXG4nLmpvaW4o
c2VsZi5fc3ltYm9sX2xpc3Qoc3ltYm9sX2ZpbGUpKSArICdcbicpCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIGRlcHJlY2F0ZWRfZnVuY3Rpb25zID0gc2VsZi5fZGVwcmVjYXRlZF9zeW1ib2xz
W2NsYXNzX25hbWVdCisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdcbicuam9pbihkZXBy
ZWNhdGVkX2Z1bmN0aW9ucykgKyAnXG4nKQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAg
ICAgICAgICBwYXNzCiAgICAgICAgIGlmIG5vdCBpc19jdXN0b206CiAgICAgICAgICAgICBzeXMu
c3Rkb3V0LndyaXRlKCdcbjxTVUJTRUNUSU9OIFN0YW5kYXJkPlxuJykKICAgICAgICAgICAgIHN5
cy5zdGRvdXQud3JpdGUoJyVzQ2xhc3NcbicgJSBjbGFzc19uYW1lKQpAQCAtMTMzLDE0ICsxNzks
MzEgQEAgY2xhc3MgV2ViS2l0RE9NRG9jR2VuZXJhdG9yU2VjdGlvbnMoV2ViS2l0RE9NRG9jR2Vu
ZXJhdG9yKToKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJ3dlYmtpdF9kb21fJXNfZ2V0
X3R5cGVcbicgJSBkb21fY2xhc3MubG93ZXIoKSkKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgn
PC9TRUNUSU9OPlxuXG4nKQogCisgICAgZGVmIHdyaXRlX2RlbGV0ZWRfY2xhc3NlcyhzZWxmKToK
KyAgICAgICAgZm9yIGNsYXNzX25hbWUgaW4gc2VsZi5ERUxFVEVEX0NMQVNTRVM6CisgICAgICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKCc8U0VDVElPTj5cbicpCisgICAgICAgICAgICBzeXMuc3Rk
b3V0LndyaXRlKCc8RklMRT4lczwvRklMRT5cbjxUSVRMRT4lczwvVElUTEU+XG4nICUgKGNsYXNz
X25hbWUsIGNsYXNzX25hbWUpKQorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnXG4nLmpv
aW4oW25hbWUgZm9yIG5hbWUgaW4gc2VsZi5fZGVwcmVjYXRlZF9zeW1ib2xzW2NsYXNzX25hbWVd
IGlmIG5vdCBuYW1lLmVuZHN3aXRoKCdnZXRfdHlwZScpXSkgKyAnXG4nKQorICAgICAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgnXG48U1VCU0VDVElPTiBQcml2YXRlPlxuJykKKyAgICAgICAgICAg
IHN5cy5zdGRvdXQud3JpdGUoJ3dlYmtpdF9kb21fJXNfZ2V0X3R5cGVcbicgJSBzZWxmLl9kb21f
Y2xhc3NfZGVjYW1lbGl6ZShjbGFzc19uYW1lKS5sb3dlcigpKQorICAgICAgICAgICAgc3lzLnN0
ZG91dC53cml0ZSgnPC9TRUNUSU9OPlxuXG4nKQorCiAKIHN5bWJvbF9maWxlcyA9IHN5cy5zdGRp
bi5yZWFkKCkuc3RyaXAoJ1xuJykuc3BsaXQoJyAnKQogaWYgJ2RvY3MnIGluIHN5cy5hcmd2WzE6
XToKICAgICBnZW5lcmF0b3IgPSBXZWJLaXRET01Eb2NHZW5lcmF0b3JEb2NzKCkKIGVsaWYgJ3Nl
Y3Rpb25zJyBpbiBzeXMuYXJndlsxOl06Ci0gICAgZ2VuZXJhdG9yID0gV2ViS2l0RE9NRG9jR2Vu
ZXJhdG9yU2VjdGlvbnMoKQorICAgIGRlcHJlY2F0ZWRfc3ltYm9sX2ZpbGUgPSBOb25lCisgICAg
Zm9yIHN5bWJvbF9maWxlIGluIHN5bWJvbF9maWxlczoKKyAgICAgICAgaWYgJ1dlYktpdERPTURl
cHJlY2F0ZWQnIGluIHN5bWJvbF9maWxlOgorICAgICAgICAgICAgZGVwcmVjYXRlZF9zeW1ib2xf
ZmlsZSA9IHN5bWJvbF9maWxlCisgICAgICAgICAgICBicmVhaworICAgIGdlbmVyYXRvciA9IFdl
YktpdERPTURvY0dlbmVyYXRvclNlY3Rpb25zKGRlcHJlY2F0ZWRfc3ltYm9sX2ZpbGUpCiAKIGdl
bmVyYXRvci53cml0ZV9oZWFkZXIoKQogZm9yIHN5bWJvbF9maWxlIGluIHN5bWJvbF9maWxlczoK
KyAgICBpZiAnV2ViS2l0RE9NRGVwcmVjYXRlZCcgaW4gc3ltYm9sX2ZpbGU6CisgICAgICAgIGNv
bnRpbnVlCiAgICAgZ2VuZXJhdG9yLndyaXRlX3NlY3Rpb24oc3ltYm9sX2ZpbGUpCitnZW5lcmF0
b3Iud3JpdGVfZGVsZXRlZF9jbGFzc2VzKCkKIGdlbmVyYXRvci53cml0ZV9mb290ZXIoKQo=
</data>
<flag name="review"
          id="240510"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>