<?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>176312</bug_id>
          
          <creation_ts>2017-09-03 09:28:30 -0700</creation_ts>
          <short_desc>[WebIDL] Unify and simplify EnableBySettings with the rest of the runtime settings</short_desc>
          <delta_ts>2017-09-27 12:39:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344982</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-03 09:28:30 -0700</bug_when>
    <thetext>[WebIDL] Simplify EnabledBySettings generation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345067</commentid>
    <comment_count>1</comment_count>
      <attachid>319810</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-03 15:30:55 -0700</bug_when>
    <thetext>Created attachment 319810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345070</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-03 15:37:10 -0700</bug_when>
    <thetext>Not thrilled with all the PublicName() suffixes, but I figure I should address that in a follow up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345079</commentid>
    <comment_count>3</comment_count>
      <attachid>319815</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-03 16:32:11 -0700</bug_when>
    <thetext>Created attachment 319815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345114</commentid>
    <comment_count>4</comment_count>
      <attachid>319828</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-09-03 19:39:54 -0700</bug_when>
    <thetext>Created attachment 319828
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345195</commentid>
    <comment_count>5</comment_count>
      <attachid>319828</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-04 03:51:02 -0700</bug_when>
    <thetext>Comment on attachment 319828
Patch

Clearing flags on attachment: 319828

Committed r221585: &lt;http://trac.webkit.org/changeset/221585&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345196</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-04 03:51:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353574</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:39:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693695&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319810</attachid>
            <date>2017-09-03 15:30:55 -0700</date>
            <delta_ts>2017-09-03 15:56:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176312-20170903153054.patch</filename>
            <type>text/plain</type>
            <size>88683</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dl
YklETF0gVW5pZnkgYW5kIHNpbXBsaWZ5IEVuYWJsZUJ5U2V0dGluZ3Mgd2l0aCB0aGUgcmVzdCBv
ZiB0aGUgcnVudGltZSBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2MzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisKKyAgICAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlIHNwZWNpZmljIGlkZW50aWZpZXJzIGZyb20gQ29tbW9uSWRlbnRp
ZmllcnMuIFRoZXkgaGF2ZSBiZWVuIG1vdmVkCisgICAgICAgICAgICB0byBXZWJDb3JlQnVpbHRp
bk5hbWVzIGluIFdlYkNvcmUuCisKIDIwMTctMDktMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNTU1LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCShyZXZpc2lvbiAyMjE1NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMjUgKzI2LDQxIEBACiAv
LyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRvIGEgbWFj
cm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKIC8vIHdheXMgd2l0aG91dCByZXBl
YXRpbmcgdGhlIGxpc3QuCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9Q
RVJUWV9OQU1FKG1hY3JvKSBcCi0gICAgbWFjcm8oQW5pbWF0aW9uKSBcCi0gICAgbWFjcm8oQW5p
bWF0aW9uRWZmZWN0UmVhZE9ubHkpIFwKLSAgICBtYWNybyhBbmltYXRpb25UaW1lbGluZSkgXAog
ICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhB
cnJheUl0ZXJhdG9yKSBcCi0gICAgbWFjcm8oQXVkaW8pIFwKICAgICBtYWNybyhCWVRFU19QRVJf
RUxFTUVOVCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKLSAgICBtYWNybyhDYWNoZSkgXAotICAg
IG1hY3JvKENhY2hlU3RvcmFnZSkgXAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8o
Q3JlZGVudGlhbCkgXAotICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCi0gICAgbWFj
cm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRGF0ZSkgXAogICAgIG1hY3Jv
KERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oRGF0YVRyYW5zZmVySXRlbSkgXAogICAgIG1h
Y3JvKERhdGFUcmFuc2Zlckl0ZW1MaXN0KSBcCi0gICAgbWFjcm8oRG9jdW1lbnRUaW1lbGluZSkg
XAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCi0gICAgbWFjcm8o
RmVkZXJhdGVkQ3JlZGVudGlhbCkgXAotICAgIG1hY3JvKEZpbGVTeXN0ZW0pIFwKLSAgICBtYWNy
byhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkpIFwKLSAgICBtYWNybyhGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyKSBcCi0gICAgbWFjcm8oRmlsZVN5c3RlbUVudHJ5KSBcCi0gICAgbWFjcm8oRmls
ZVN5c3RlbUZpbGVFbnRyeSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCi0gICAgbWFjcm8oR2Ft
ZXBhZCkgXAotICAgIG1hY3JvKEdhbWVwYWRCdXR0b24pIFwKLSAgICBtYWNybyhHYW1lcGFkRXZl
bnQpIFwKICAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAotICAgIG1hY3JvKEhlYWRlcnMp
IFwKLSAgICBtYWNybyhIVE1MQXVkaW9FbGVtZW50KSBcCi0gICAgbWFjcm8oSFRNTFNsb3RFbGVt
ZW50KSBcCi0gICAgbWFjcm8oSURCQ3Vyc29yKSBcCi0gICAgbWFjcm8oSURCQ3Vyc29yV2l0aFZh
bHVlKSBcCi0gICAgbWFjcm8oSURCRGF0YWJhc2UpIFwKLSAgICBtYWNybyhJREJGYWN0b3J5KSBc
Ci0gICAgbWFjcm8oSURCSW5kZXgpIFwKLSAgICBtYWNybyhJREJLZXlSYW5nZSkgXAotICAgIG1h
Y3JvKElEQk9iamVjdFN0b3JlKSBcCi0gICAgbWFjcm8oSURCT3BlbkRCUmVxdWVzdCkgXAotICAg
IG1hY3JvKElEQlJlcXVlc3QpIFwKLSAgICBtYWNybyhJREJUcmFuc2FjdGlvbikgXAotICAgIG1h
Y3JvKElEQlZlcnNpb25DaGFuZ2VFdmVudCkgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCi0gICAg
bWFjcm8oSW5wdXRFdmVudCkgXAotICAgIG1hY3JvKEludGVyc2VjdGlvbk9ic2VydmVyKSBcCi0g
ICAgbWFjcm8oSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkgXAogICAgIG1hY3JvKEludGwpIFwK
ICAgICBtYWNybyhKU09OKSBcCiAgICAgbWFjcm8oTG9hZGVyKSBcCiAgICAgbWFjcm8oTWFwKVwK
ICAgICBtYWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFjcm8oTWF0aCkgXAotICAgIG1hY3JvKE1l
ZGlhRW5jcnlwdGVkRXZlbnQpIFwKLSAgICBtYWNybyhNZWRpYUtleU1lc3NhZ2VFdmVudCkgXAot
ICAgIG1hY3JvKE1lZGlhS2V5U2Vzc2lvbikgXAotICAgIG1hY3JvKE1lZGlhS2V5U3RhdHVzTWFw
KSBcCi0gICAgbWFjcm8oTWVkaWFLZXlTeXN0ZW1BY2Nlc3MpIFwKLSAgICBtYWNybyhNZWRpYUtl
eXMpIFwKLSAgICBtYWNybyhXZWJLaXRNZWRpYUtleUVycm9yKSBcCi0gICAgbWFjcm8oV2ViS2l0
TWVkaWFLZXlOZWVkZWRFdmVudCkgXAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5U2Vzc2lvbikg
XAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5cykgXAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5
TWVzc2FnZUV2ZW50KSBcCi0gICAgbWFjcm8oTWVkaWFTdHJlYW1FdmVudCkgXAotICAgIG1hY3Jv
KE1vZGVybk1lZGlhQ29udHJvbHMpIFwKICAgICBtYWNybyhOYU4pIFwKLSAgICBtYWNybyhOYXZp
Z2F0b3JDcmVkZW50aWFscykgXAotICAgIG1hY3JvKE5hdmlnYXRvck1lZGlhRGV2aWNlcykgXAot
ICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAogICAgIG1hY3JvKE51bWJlcikgXAogICAg
IG1hY3JvKE51bWJlckZvcm1hdCkgXAogICAgIG1hY3JvKE9iamVjdCkgXAotICAgIG1hY3JvKFBh
c3N3b3JkQ3JlZGVudGlhbCkgXAotICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCi0gICAgbWFj
cm8oUGF5bWVudFJlcXVlc3QpIFwKLSAgICBtYWNybyhQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50
KSBcCi0gICAgbWFjcm8oUGF5bWVudFJlc3BvbnNlKSBcCi0gICAgbWFjcm8oUGVyZm9ybWFuY2VF
bnRyeSkgXAotICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnlMaXN0KSBcCi0gICAgbWFjcm8oUGVy
Zm9ybWFuY2VNYXJrKSBcCi0gICAgbWFjcm8oUGVyZm9ybWFuY2VNZWFzdXJlKSBcCi0gICAgbWFj
cm8oUGVyZm9ybWFuY2VPYnNlcnZlcikgXAotICAgIG1hY3JvKFBlcmZvcm1hbmNlT2JzZXJ2ZXJF
bnRyeUxpc3QpIFwKLSAgICBtYWNybyhQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKSBcCiAgICAg
bWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFByb3h5KSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJv
cikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAog
ICAgIG1hY3JvKFJlZ0V4cCkgXAotICAgIG1hY3JvKFJlcXVlc3QpIFwKLSAgICBtYWNybyhSZXNw
b25zZSkgXAotICAgIG1hY3JvKFJUQ0RhdGFDaGFubmVsKSBcCi0gICAgbWFjcm8oUlRDRGF0YUNo
YW5uZWxFdmVudCkgXAotICAgIG1hY3JvKFJUQ0RUTUZTZW5kZXIpIFwKLSAgICBtYWNybyhSVENE
VE1GVG9uZUNoYW5nZUV2ZW50KSBcCi0gICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCi0gICAg
bWFjcm8oUlRDSWNlVHJhbnNwb3J0KSBcCi0gICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb24pIFwK
LSAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAotICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAot
ICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCi0gICAgbWFjcm8oUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uKSBcCi0gICAgbWFjcm8oUlRDU3RhdHNSZXBvcnQpIFwKLSAgICBtYWNybyhSVENUcmFj
a0V2ZW50KSBcCi0gICAgbWFjcm8oU2VydmljZVdvcmtlcilcCi0gICAgbWFjcm8oU2VydmljZVdv
cmtlckNvbnRhaW5lcilcCi0gICAgbWFjcm8oU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKVwKLSAg
ICBtYWNybyhTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKVwKICAgICBtYWNybyhTZXQpXAogICAg
IG1hY3JvKFNldEl0ZXJhdG9yKVwKLSAgICBtYWNybyhTaGFkb3dSb290KSBcCiAgICAgbWFjcm8o
U2hhcmVkQXJyYXlCdWZmZXIpIFwKLSAgICBtYWNybyhTdGF0aWNSYW5nZSkgXAogICAgIG1hY3Jv
KFN0cmluZykgXAogICAgIG1hY3JvKFN5bWJvbCkgXAogICAgIG1hY3JvKFN5bnRheEVycm9yKSBc
CkBAIC0xNTMsMzIgKzY5LDYgQEAKICAgICBtYWNybyhVVEMpIFwKICAgICBtYWNybyhXZWFrTWFw
KVwKICAgICBtYWNybyhXZWFrU2V0KVwKLSAgICBtYWNybyhXZWJHTDJSZW5kZXJpbmdDb250ZXh0
KSBcCi0gICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgXAotICAgIG1hY3JvKFdlYkdQ
VUJ1ZmZlcikgXAotICAgIG1hY3JvKFdlYkdQVUNvbW1hbmRCdWZmZXIpIFwKLSAgICBtYWNybyhX
ZWJHUFVDb21tYW5kUXVldWUpIFwKLSAgICBtYWNybyhXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXIpIFwKLSAgICBtYWNybyhXZWJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSkgXAotICAgIG1hY3Jv
KFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IpIFwKLSAgICBtYWNybyhXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSkgXAotICAgIG1hY3JvKFdlYkdQVURyYXdhYmxlKSBcCi0gICAgbWFjcm8oV2Vi
R1BVRnVuY3Rpb24pIFwKLSAgICBtYWNybyhXZWJHUFVMaWJyYXJ5KSBcCi0gICAgbWFjcm8oV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcikgXAotICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKSBcCi0gICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
IFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpIFwKLSAgICBt
YWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKSBcCi0gICAgbWFjcm8oV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCkgXAotICAgIG1hY3JvKFdlYkdQVVNpemUpIFwKLSAgICBtYWNybyhXZWJHUFVU
ZXh0dXJlKSBcCi0gICAgbWFjcm8oV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IpIFwKLSAgICBtYWNy
byhXZWJTb2NrZXQpIFwKLSAgICBtYWNybyhXcml0YWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKF9f
ZGVmaW5lR2V0dGVyX18pIFwKICAgICBtYWNybyhfX2RlZmluZVNldHRlcl9fKSBcCiAgICAgbWFj
cm8oX19sb29rdXBHZXR0ZXJfXykgXApAQCAtMTkxLDcgKzgxLDYgQEAKICAgICBtYWNybyhhc3Np
Z24pIFwKICAgICBtYWNybyhiYWNrKSBcCiAgICAgbWFjcm8oYmluZCkgXAotICAgIG1hY3JvKGJs
dXIpIFwKICAgICBtYWNybyhidWZmZXIpIFwKICAgICBtYWNybyhieXRlTGVuZ3RoKSBcCiAgICAg
bWFjcm8oYnl0ZU9mZnNldCkgXApAQCAtMTk5LDE0ICs4OCwxMSBAQAogICAgIG1hY3JvKGJ5dGVj
b2RlSW5kZXgpIFwKICAgICBtYWNybyhieXRlY29kZXMpIFwKICAgICBtYWNybyhieXRlY29kZXNJ
RCkgXAotICAgIG1hY3JvKGNhY2hlcykgXAogICAgIG1hY3JvKGNhbGVuZGFyKSBcCiAgICAgbWFj
cm8oY2FsbGVlKSBcCiAgICAgbWFjcm8oY2FsbGVyKSBcCiAgICAgbWFjcm8oY2FzZUZpcnN0KSBc
CiAgICAgbWFjcm8oY2xlYXIpIFwKLSAgICBtYWNybyhjbG9zZSkgXAotICAgIG1hY3JvKGNsb3Nl
ZCkgXAogICAgIG1hY3JvKGNvbGxhdGlvbikgXAogICAgIG1hY3JvKGNvbHVtbikgXAogICAgIG1h
Y3JvKGNvbXBpbGF0aW9uS2luZCkgXApAQCAtMjE3LDE0ICsxMDMsMTIgQEAKICAgICBtYWNybyhj
b25zdHJ1Y3RvcikgXAogICAgIG1hY3JvKGNvdW50KSBcCiAgICAgbWFjcm8oY291bnRlcnMpIFwK
LSAgICBtYWNybyhjdXN0b21FbGVtZW50cykgXAogICAgIG1hY3JvKGRheSkgXAogICAgIG1hY3Jv
KGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhk
ZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhkZXRhaWwpIFwKICAgICBtYWNybyhkaXNwbGF5TmFt
ZSkgXAotICAgIG1hY3JvKGRvY3VtZW50KSBcCiAgICAgbWFjcm8oZG9uZSkgXAogICAgIG1hY3Jv
KGRvdEFsbCkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKQEAgLTIzNiwxMiArMTIwLDEwIEBA
CiAgICAgbWFjcm8oZXhpdEtpbmQpIFwKICAgICBtYWNybyhmZXRjaCkgXAogICAgIG1hY3JvKGZs
YWdzKSBcCi0gICAgbWFjcm8oZm9jdXMpIFwKICAgICBtYWNybyhmb3JFYWNoKSBcCiAgICAgbWFj
cm8oZm9ybWF0TWF0Y2hlcikgXAogICAgIG1hY3JvKGZvcm1hdFRvUGFydHMpIFwKICAgICBtYWNy
byhmb3J3YXJkKSBcCi0gICAgbWFjcm8oZnJhbWVzKSBcCiAgICAgbWFjcm8oZnJvbSkgXAogICAg
IG1hY3JvKGZyb21DaGFyQ29kZSkgXAogICAgIG1hY3JvKGdldCkgXApAQCAtMjUwLDcgKzEzMiw2
IEBACiAgICAgbWFjcm8oaGFzKSBcCiAgICAgbWFjcm8oaGFzT3duUHJvcGVydHkpIFwKICAgICBt
YWNybyhoYXNoKSBcCi0gICAgbWFjcm8oaGVhZGVyKSBcCiAgICAgbWFjcm8oaG91cikgXAogICAg
IG1hY3JvKGhvdXIxMikgXAogICAgIG1hY3JvKGhyZWYpIFwKQEAgLTI1OCwyNSArMTM5LDIxIEBA
CiAgICAgbWFjcm8oaWdub3JlQ2FzZSkgXAogICAgIG1hY3JvKGlnbm9yZVB1bmN0dWF0aW9uKSBc
CiAgICAgbWFjcm8oaW5kZXgpIFwKLSAgICBtYWNybyhpbmRleGVkREIpIFwKICAgICBtYWNybyhp
bmZlcnJlZE5hbWUpIFwKICAgICBtYWNybyhpbnB1dCkgXAogICAgIG1hY3JvKGluc3RydWN0aW9u
Q291bnQpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNFbmFibGVkKSBcCiAg
ICAgbWFjcm8oaXNQcm90b3R5cGVPZikgXAotICAgIG1hY3JvKGlzU2VjdXJlQ29udGV4dCkgXAog
ICAgIG1hY3JvKGlzVmlldykgXAogICAgIG1hY3JvKGlzV2F0Y2hwb2ludCkgXAogICAgIG1hY3Jv
KGpldHRpc29uUmVhc29uKSBcCiAgICAgbWFjcm8oam9pbikgXAotICAgIG1hY3JvKEtleWZyYW1l
RWZmZWN0KSBcCiAgICAgbWFjcm8obGFzdEluZGV4KSBcCiAgICAgbWFjcm8obGVuZ3RoKSBcCiAg
ICAgbWFjcm8obGluZSkgXAogICAgIG1hY3JvKGxvY2FsZSkgXAogICAgIG1hY3JvKGxvY2FsZU1h
dGNoZXIpIFwKLSAgICBtYWNybyhsb2NhdGlvbikgXAogICAgIG1hY3JvKG1lc3NhZ2UpIFwKICAg
ICBtYWNybyhtaW51dGUpIFwKICAgICBtYWNybyhtb250aCkgXApAQCAtMjkxLDE1ICsxNjgsMTIg
QEAKICAgICBtYWNybyhudW1lcmljKSBcCiAgICAgbWFjcm8ob2YpIFwKICAgICBtYWNybyhvcGNv
ZGUpIFwKLSAgICBtYWNybyhvcGVuZXIpIFwKICAgICBtYWNybyhvcmlnaW4pIFwKICAgICBtYWNy
byhvc3JFeGl0U2l0ZXMpIFwKICAgICBtYWNybyhvc3JFeGl0cykgXAotICAgIG1hY3JvKHBhcmVu
dCkgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8ocGFyc2VJbnQpIFwKICAgICBtYWNy
byhwYXJzZUZsb2F0KSBcCi0gICAgbWFjcm8ocG9zdE1lc3NhZ2UpIFwKICAgICBtYWNybyhwcm9m
aWxlZEJ5dGVjb2RlcykgXAogICAgIG1hY3JvKHByb3BlcnR5SXNFbnVtZXJhYmxlKSBcCiAgICAg
bWFjcm8ocHJvdG90eXBlKSBcCkBAIC0zMDgsMTAgKzE4Miw4IEBACiAgICAgbWFjcm8ocmVwbGFj
ZSkgXAogICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhzZWNvbmQpIFwKLSAgICBtYWNy
byhzZWxmKSBcCiAgICAgbWFjcm8oc2Vuc2l0aXZpdHkpIFwKICAgICBtYWNybyhzZXQpIFwKLSAg
ICBtYWNybyhzaG93TW9kYWxEaWFsb2cpIFwKICAgICBtYWNybyhzaXplKSBcCiAgICAgbWFjcm8o
c2xpY2UpIFwKICAgICBtYWNybyhzb3VyY2UpIFwKQEAgLTMzNSwyNiArMjA3LDEyIEBACiAgICAg
bWFjcm8odG9Mb2NhbGVTdHJpbmcpIFwKICAgICBtYWNybyh0b1ByZWNpc2lvbikgXAogICAgIG1h
Y3JvKHRvU3RyaW5nKSBcCi0gICAgbWFjcm8odG9wKSBcCiAgICAgbWFjcm8odWlkKSBcCiAgICAg
bWFjcm8odW5pY29kZSkgXAogICAgIG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwK
ICAgICBtYWNybyh2YWx1ZU9mKSBcCi0gICAgbWFjcm8od2Via2l0KSBcCi0gICAgbWFjcm8oY29s
bGVjdE1hdGNoaW5nRWxlbWVudHNJbkZsYXRUcmVlKSBcCi0gICAgbWFjcm8obWF0Y2hpbmdFbGVt
ZW50SW5GbGF0VHJlZSkgXAotICAgIG1hY3JvKHdlYmtpdElEQkN1cnNvcikgXAotICAgIG1hY3Jv
KHdlYmtpdElEQkRhdGFiYXNlKSBcCi0gICAgbWFjcm8od2Via2l0SURCRmFjdG9yeSkgXAotICAg
IG1hY3JvKHdlYmtpdElEQkluZGV4KSBcCi0gICAgbWFjcm8od2Via2l0SURCS2V5UmFuZ2UpIFwK
LSAgICBtYWNybyh3ZWJraXRJREJPYmplY3RTdG9yZSkgXAotICAgIG1hY3JvKHdlYmtpdElEQlJl
cXVlc3QpIFwKLSAgICBtYWNybyh3ZWJraXRJREJUcmFuc2FjdGlvbikgXAotICAgIG1hY3JvKHdl
YmtpdEluZGV4ZWREQikgXAogICAgIG1hY3JvKHdlZWtkYXkpIFwKLSAgICBtYWNybyh3aW5kb3cp
IFwKICAgICBtYWNybyh3cml0YWJsZSkgXAogICAgIG1hY3JvKHllYXIpCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyMTU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBACisyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gU2ltcGxpZnkgRW5hYmxlZEJ5U2V0dGluZ3Mg
Z2VuZXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc2MzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5lZWRz
UnVudGltZUNoZWNrKToKKyAgICAgICAgKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSk6Cisg
ICAgICAgIChHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVS
dW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9u
KToKKworICAgICAgICAgICAgLSBTaW1wbGlmeSB0aGUgW0VuYWJsZWRCeVNldHRpbmddIGNvZGUg
Z2VuZXJhdGlvbiBieSBtZXJnaW5nIGl0IHdpdGggdGhlIG90aGVyCisgICAgICAgICAgICBydW50
aW1lIGNoZWNrcyAoRXhwb3NlZCwgRW5hYmxlZEF0UnVudGltZSwgRW5hYmxlZEZvcldvcmxkLCBh
bmQgU2VjdXJlQ29udGV4dCkuCisKKyAgICAgICAgICAgIC0gU3dpdGNoZXMgdG8gdXNpbmcgV2Vi
Q29yZUJ1aWx0aW5OYW1lcyBmb3IgaWRlbnRpZmllcnMsIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAg
ICAgICAgICAgIG9uIHRoZSBhcHByb3ByaWF0ZSBpZGVudGlmaWVycyBiZWluZyBhdmFpbGFibGUg
b24gSmF2YVNjcmlwdENvcmUncyBDb21tb25JZGVudGlmaWVycworICAgICAgICAgICAgd2hpY2gg
d2FzIGFuIHVubmVjZXNzYXJ5IGxheWVyaW5nIHZpb2xhdGlvbi4gVGhlcmUgYXJlIHN0aWxsIHBy
b2JsZW1zIHdpdGggdGhpcworICAgICAgICAgICAgYXMgd2UgY29udGludWUgdG8gYmUgaW5jb25z
aXN0ZW50ICBhYm91dCB3aGljaCBpZGVudGlmaWVycyBkZXNlcnZlIHRvIGJlIGluIAorICAgICAg
ICAgICAgV2ViQ29yZUJ1aWx0aW5OYW1lcywgYW5kIHdoaWNoIG9uZXMgY2FuIGJlIGNyZWF0ZWQg
ZWFjaCB0aW1lIGFuZCB0aGVyZSBpcyBubworICAgICAgICAgICAgYXV0b21hdGlvbiBvZiBXZWJD
b3JlQnVpbHRpbk5hbWVzIGZyb20gdGhlIElETHMuCisKKyAgICAgICAgICAgIC0gRW5mb3JjZSBh
dCBjb2RlIGdlbmVyYXRpb24gdGltZSB0aGF0IFtFbmFibGVkQnlTZXR0aW5nXSBjYW4gb25seSBi
ZSB1c2VkCisgICAgICAgICAgICBvbiBpbnRlcmZhY2VzIHRoYXQgYXJlIHVuaXF1ZWx5IGV4cG9z
ZWQgdG8gdGhlIHdpbmRvdyBlbnZpcm9ubWVudC4gVGhpcyBpcyBhCisgICAgICAgICAgICBjb25k
aXRpb24gd2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gcmVtb3ZlIChlLmcuIHByb3BhZ2F0aW5nIG5l
Y2Vzc2FyeSBzZXR0aW5ncyAKKyAgICAgICAgICAgIHRvIGFuIG9iamVjdCB0aGUgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCBvd25zKSwgYnV0IGZvciBub3csIFNldHRpbmdzIGlzIGEgbWFpbgorICAg
ICAgICAgICAgdGhyZWFkIG9ubHkgb2JqZWN0LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNET01XaW5kb3dHZXRPd25Q
cm9wZXJ0eVNsb3RSZXN0cmljdGVkQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6
OnB1dCk6CisgICAgICAgIChXZWJDb3JlOjphZGRDcm9zc09yaWdpbldpbmRvd1Byb3BlcnR5TmFt
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6YWRkQ3Jvc3NPcmlnaW5XaW5kb3dPd25Qcm9wZXJ0eU5h
bWVzKToKKworICAgICAgICAgICAgU3dpdGNoIHRvIHVzaW5nIFdlYkNvcmVCdWlsdGluTmFtZXMg
Zm9yIFdlYkNvcmUgc3BlY2lmaWMgaWRlbnRpZmllcnMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9XZWJDb3JlQnVpbHRpbk5hbWVzLmg6CisKKyAgICAgICAgICAgIEFkZCBXZWJDb3JlIHNwZWNp
ZmljIGlkZW50aWZpZXJzIGZyb20gSmF2YVNjcmlwdENvcmUncyBDb21tb25JZGVudGlmaWVycwor
ICAgICAgICAgICAgYXMgd2VsbCBhcyBzb21lIG5ldyBvbmVzIG5lZWQgYnkgdGhlIFtFbmFibGVC
eVNldHRpbmddIHVuaWZpY2F0aW9uLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVuYWJsZWRCeVNldHRpbmcuaWRsOiBBZGRl
ZC4KKworICAgICAgICAgICAgQWRkIG5ldyB0ZXN0IGZvciBbRW5hYmxlZEJ5U2V0dGluZ10uCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKKyAgICAgICAgICAg
IFJlbW92ZSB1c2Ugb2YgW0VuYWJsZWRCeVNldHRpbmddIGZyb20gVGVzdE9iaiwgYXMgaXQgaXMg
bm8gbG9uZ2VyCisgICAgICAgICAgICB2YWxpZCB0byB1c2UgW0VuYWJsZWRCeVNldHRpbmddIG9u
IGludGVyZmFjZXMgdGhhdCBhcmUgbm8gdW5pcXVlbHkKKyAgICAgICAgICAgIGV4cG9zZWQgdG8g
dGhlIHdpbmRvdyBlbnZpcm9ubWVudC4KKwogMjAxNy0wOS0wMyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgZ2V0RmlsZU1ldGFkYXRhKCkgcmV0dXJuIGEg
c3RkOjpvcHRpb25hbDxGaWxlTWV0YWRhdGE+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyMjE1NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NJ
bmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Mb29rdXAuaD4KIApAQCAtODIsMTYgKzgzLDE4
IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG8KICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAorICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpOworCiAgICAgLy8gV2UgZG9uJ3Qgd2FudCBh
bnkgcHJvcGVydGllcyBvdGhlciB0aGFuICJjbG9zZSIgYW5kICJjbG9zZWQiIG9uIGEgZnJhbWVs
ZXNzIHdpbmRvdwogICAgIC8vIChpLmUuIG9uZSB3aG9zZSBwYWdlIGdvdCBjbG9zZWQsIG9yIHdo
b3NlIGlmcmFtZSBnb3QgcmVtb3ZlZCkuCiAgICAgLy8gRklYTUU6IFRoaXMgaGFuZGxpbmcgZm9y
IGZyYW1lbGVzcyB3aW5kb3dzIGR1cGxpY2F0ZXMgc2ltaWxhciBiZWhhdmlvdXIgZm9yIGNyb3Nz
LW9yaWdpbgogICAgIC8vIGFjY2VzcyBiZWxvdzsgd2Ugc2hvdWxkIHRyeSB0byBmaW5kIGEgd2F5
IHRvIG1lcmdlIHRoZSB0d28uCiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBpZiAocHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZWQpIHsKKyAgICAgICAgaWYgKHBy
b3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VkUHVibGljTmFtZSgpKSB7CiAgICAgICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUsIGpz
RE9NV2luZG93Q2xvc2VkKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsb3NlKSB7
CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFt
ZSgpKSB7CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8
IERvbnREZWxldGUsIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRvd0lu
c3RhbmNlRnVuY3Rpb25DbG9zZSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIH0KQEAgLTExMCwxOSArMTEzLDE5IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0T3du
UHJvcGVydHlTbG8KIAogICAgIC8vIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHdlIGFsbG93IGFj
Y2VzcyB0byBjcm9zcy1vcmlnaW4gKERvTm90Q2hlY2tTZWN1cml0eSBpbiBJREwpLgogICAgIC8v
IEFsd2F5cyBwcm92aWRlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgb24gYSBmcmVzaCB1bmNhY2hl
ZCBmdW5jdGlvbiBvYmplY3QuCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkuYmx1cikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmJs
dXJQdWJsaWNOYW1lKCkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUmVh
ZE9ubHksIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRvd0luc3RhbmNl
RnVuY3Rpb25CbHVyLCAwPik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBpZiAo
cHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZSkgeworICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFtZSgpKSB7CiAgICAgICAg
IHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5LCBub25DYWNoaW5nU3RhdGljRnVu
Y3Rpb25HZXR0ZXI8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uQ2xvc2UsIDA+KTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmZvY3VzKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFt
ZXMuZm9jdXNQdWJsaWNOYW1lKCkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVj
dCwgUmVhZE9ubHksIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRvd0lu
c3RhbmNlRnVuY3Rpb25Gb2N1cywgMD4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0g
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucG9zdE1lc3NhZ2Up
IHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wb3N0TWVzc2FnZVB1Ymxp
Y05hbWUoKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSwg
bm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2luZG93SW5zdGFuY2VGdW5jdGlv
blBvc3RNZXNzYWdlLCAyPik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEzMiwx
NiArMTM1LDE2IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG8KICAg
ICAvLyBiZWhhdmlvci4KICAgICBpZiAoYXV0byogZW50cnkgPSBKU0RPTVdpbmRvdzo6aW5mbygp
LT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIC8v
IE9ubHkgYWxsb3cgYWNjZXNzIHRvIHRoZXNlIHNwZWNpZmljIHByb3BlcnRpZXMuCi0gICAgICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0aW9uCi0gICAg
ICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsb3NlZAor
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1YmxpY05h
bWUoKQorICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5jbG9zZWRQ
dWJsaWNOYW1lKCkKICAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkubGVuZ3RoCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLnNlbGYKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkud2luZG93Ci0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmZyYW1lcwotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5vcGVuZXIKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucGFyZW50Ci0gICAgICAgICAgICB8fCBwcm9wZXJ0
eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvcCkgewotICAgICAgICAgICAgYm9vbCBz
aG91bGRFeHBvc2VTZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
LmxvY2F0aW9uOworICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5z
ZWxmUHVibGljTmFtZSgpCisgICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLndpbmRvd1B1YmxpY05hbWUoKQorICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1
aWx0aW5OYW1lcy5mcmFtZXNQdWJsaWNOYW1lKCkKKyAgICAgICAgICAgIHx8IHByb3BlcnR5TmFt
ZSA9PSBidWlsdGluTmFtZXMub3BlbmVyUHVibGljTmFtZSgpCisgICAgICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBhcmVudFB1YmxpY05hbWUoKQorICAgICAgICAgICAg
fHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJsaWNOYW1lKCkpIHsKKyAgICAg
ICAgICAgIGJvb2wgc2hvdWxkRXhwb3NlU2V0dGVyID0gcHJvcGVydHlOYW1lID09IGJ1aWx0aW5O
YW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKTsKICAgICAgICAgICAgIEN1c3RvbUdldHRlclNldHRl
ciogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGVu
dHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBzaG91bGRFeHBvc2VTZXR0ZXIgPyBlbnRyeS0+cHJvcGVy
dHlQdXR0ZXIoKSA6IG51bGxwdHIpOwogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21HZXR0ZXJT
ZXR0ZXIodGhpc09iamVjdCwgQ3VzdG9tQWNjZXNzb3IsIGN1c3RvbUdldHRlclNldHRlcik7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Niw3ICsxOTksNyBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPCiAgICAgUHJvcGVydHlTbG90IHNsb3RDb3B5ID0g
c2xvdDsKICAgICBpZiAoQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHN0YXRl
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CiAgICAgICAgIC8vIERldGVjdCB3aGVuIHdlJ3JlIGdl
dHRpbmcgdGhlIHByb3BlcnR5ICdzaG93TW9kYWxEaWFsb2cnLCB0aGlzIGlzIGRpc2FibGVkLCBh
bmQgaGFzIGl0cyBvcmlnaW5hbCB2YWx1ZS4KLSAgICAgICAgYm9vbCBpc1Nob3dNb2RhbERpYWxv
Z0FuZFNob3VsZEhpZGUgPSBwcm9wZXJ0eU5hbWUgPT0gc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5z
aG93TW9kYWxEaWFsb2cKKyAgICAgICAgYm9vbCBpc1Nob3dNb2RhbERpYWxvZ0FuZFNob3VsZEhp
ZGUgPSBwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihzdGF0ZS0+
dm0oKS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2hvd01vZGFsRGlhbG9nUHVibGljTmFt
ZSgpCiAgICAgICAgICAgICAmJiAhRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2coKmZyYW1l
KQogICAgICAgICAgICAgJiYgc2xvdC5pc1ZhbHVlKCkgJiYgaXNIb3N0RnVuY3Rpb24oc2xvdC5n
ZXRWYWx1ZShzdGF0ZSwgcHJvcGVydHlOYW1lKSwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9u
U2hvd01vZGFsRGlhbG9nKTsKICAgICAgICAgLy8gVW5sZXNzIHdlJ3JlIGluIHRoZSBzaG93TW9k
YWxEaWFsb2cgc3BlY2lhbCBjYXNlLCB3ZSdyZSBkb25lLgpAQCAtMjA2LDcgKzIwOSw3IEBAIGJv
b2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU08KICAgICB9CiAKICNpZiBFTkFC
TEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGUt
PnByb3BlcnR5TmFtZXMoKS53ZWJraXQgJiYgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3VsZEhh
dmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgeworICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihzdGF0ZS0+dm0o
KS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkud2Via2l0UHVibGljTmFtZSgpICYmIHRoaXNP
YmplY3QtPndyYXBwZWQoKS5zaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQodGhpc09i
amVjdC0+d29ybGQoKSkpIHsKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhpc09i
amVjdCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc0RPTVdpbmRvd1dlYktpdCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI1NSw3ICsyNTgsNyBAQCBib29sIEpTRE9NV2luZG93
OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqc3RhdGUs
IHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKSkgewogICAgICAgICAvLyBXZSBv
bmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgotICAg
ICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkubG9jYXRpb24p
IHsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlvblB1YmxpY05hbWUoKSkg
ewogICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChs
b29rdXBQdXQoc3RhdGUsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCwgdmFsdWUsICpzX2luZm8u
c3RhdGljUHJvcEhhc2hUYWJsZSwgc2xvdCwgcHV0UmVzdWx0KSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcHV0UmVzdWx0OwpAQCAtMjk2LDE0ICsyOTksMjIgQEAgYm9vbCBKU0RPTVdpbmRvdzo6
ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnLyNjcm9zc29yaWdpbnByb3BlcnRpZXMtKC1vLSkKLXN0YXRpYyB2b2lkIGFkZENyb3NzT3Jp
Z2luV2luZG93UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUmIHN0YXRlLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lcykKK3N0YXRpYyB2b2lkIGFkZENyb3NzT3JpZ2luV2luZG93UHJvcGVy
dHlOYW1lcyhWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzKQogewogICAg
IHN0YXRpYyBjb25zdCBJZGVudGlmaWVyKiBjb25zdCBwcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAg
ICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkuYmx1ciwgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5jbG9z
ZSwgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5jbG9zZWQsCi0gICAgICAgICZzdGF0ZS5wcm9wZXJ0
eU5hbWVzKCkuZm9jdXMsICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkuZnJhbWVzLCAmc3RhdGUucHJv
cGVydHlOYW1lcygpLmxlbmd0aCwKLSAgICAgICAgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5sb2Nh
dGlvbiwgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5vcGVuZXIsICZzdGF0ZS5wcm9wZXJ0eU5hbWVz
KCkucGFyZW50LAotICAgICAgICAmc3RhdGUucHJvcGVydHlOYW1lcygpLnBvc3RNZXNzYWdlLCAm
c3RhdGUucHJvcGVydHlOYW1lcygpLnNlbGYsICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9wLAot
ICAgICAgICAmc3RhdGUucHJvcGVydHlOYW1lcygpLndpbmRvdworICAgICAgICAmc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuYmx1clB1
YmxpY05hbWUoKSwKKyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmNsb3NlUHVibGljTmFtZSgpLAorICAgICAgICAmc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
Y2xvc2VkUHVibGljTmFtZSgpLAorICAgICAgICAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZm9jdXNQdWJsaWNOYW1lKCksCisgICAg
ICAgICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5mcmFtZXNQdWJsaWNOYW1lKCksCisgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsCisgICAgICAgICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlvblB1YmxpY05hbWUoKSwKKyAgICAgICAgJnN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLm9w
ZW5lclB1YmxpY05hbWUoKSwKKyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnBhcmVudFB1YmxpY05hbWUoKSwKKyAgICAg
ICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpLAorICAgICAgICAmc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2VsZlB1YmxpY05h
bWUoKSwKKyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSktPmJ1aWx0aW5OYW1lcygpLnRvcFB1YmxpY05hbWUoKSwKKyAgICAgICAgJnN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLndpbmRvd1B1
YmxpY05hbWUoKQogICAgIH07CiAgICAgZm9yIChhdXRvKiBwcm9wZXJ0eSA6IHByb3BlcnRpZXMp
CiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKCpwcm9wZXJ0eSk7CkBAIC0zMjcsNyArMzM4LDcg
QEAgc3RhdGljIHZvaWQgYWRkU2NvcGVkQ2hpbGRyZW5JbmRleGVzKEV4ZQogLy8gaHR0cHM6Ly9o
dG1sLnNwZWMud2hhdHdnLm9yZy8jY3Jvc3NvcmlnaW5vd25wcm9wZXJ0eWtleXMtKC1vLSkKIHN0
YXRpYyB2b2lkIGFkZENyb3NzT3JpZ2luV2luZG93T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUm
IHN0YXRlLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcykKIHsKLSAgICBhZGRDcm9z
c09yaWdpbldpbmRvd1Byb3BlcnR5TmFtZXMoc3RhdGUsIHByb3BlcnR5TmFtZXMpOworICAgIGFk
ZENyb3NzT3JpZ2luV2luZG93UHJvcGVydHlOYW1lcyhzdGF0ZS52bSgpLCBwcm9wZXJ0eU5hbWVz
KTsKIAogICAgIHByb3BlcnR5TmFtZXMuYWRkKHN0YXRlLnByb3BlcnR5TmFtZXMoKS50b1N0cmlu
Z1RhZ1N5bWJvbCk7CiAgICAgcHJvcGVydHlOYW1lcy5hZGQoc3RhdGUucHJvcGVydHlOYW1lcygp
Lmhhc0luc3RhbmNlU3ltYm9sKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dl
YkNvcmVCdWlsdGluTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgJKHJldmlzaW9uIDIyMTU1OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNzEgKzMwLDIxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUgV0VC
Q09SRV9DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8p
XAorI2RlZmluZSBXRUJDT1JFX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVS
VFlfTkFNRShtYWNybykgXAorICAgIG1hY3JvKEFuaW1hdGlvbikgXAorICAgIG1hY3JvKEFuaW1h
dGlvbkVmZmVjdFJlYWRPbmx5KSBcCisgICAgbWFjcm8oQW5pbWF0aW9uVGltZWxpbmUpIFwKKyAg
ICBtYWNybyhBcHBsZVBheVNlc3Npb24pIFwKKyAgICBtYWNybyhBdWRpbykgXAorICAgIG1hY3Jv
KENhY2hlKSBcCisgICAgbWFjcm8oQ2FjaGVTdG9yYWdlKSBcCisgICAgbWFjcm8oQ3JlZGVudGlh
bCkgXAorICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCisgICAgbWFjcm8oQ3VzdG9t
RWxlbWVudFJlZ2lzdHJ5KSBcCisgICAgbWFjcm8oRGF0YVRyYW5zZmVySXRlbSkgXAorICAgIG1h
Y3JvKERhdGFUcmFuc2Zlckl0ZW1MaXN0KSBcCisgICAgbWFjcm8oRG9jdW1lbnRUaW1lbGluZSkg
XAorICAgIG1hY3JvKEZlZGVyYXRlZENyZWRlbnRpYWwpIFwKKyAgICBtYWNybyhGaWxlU3lzdGVt
KSBcCisgICAgbWFjcm8oRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5KSBcCisgICAgbWFjcm8oRmls
ZVN5c3RlbURpcmVjdG9yeVJlYWRlcikgXAorICAgIG1hY3JvKEZpbGVTeXN0ZW1FbnRyeSkgXAor
ICAgIG1hY3JvKEZpbGVTeXN0ZW1GaWxlRW50cnkpIFwKKyAgICBtYWNybyhHYW1lcGFkKSBcCisg
ICAgbWFjcm8oR2FtZXBhZEJ1dHRvbikgXAorICAgIG1hY3JvKEdhbWVwYWRFdmVudCkgXAorICAg
IG1hY3JvKEhUTUxBdWRpb0VsZW1lbnQpIFwKKyAgICBtYWNybyhIVE1MU2xvdEVsZW1lbnQpIFwK
KyAgICBtYWNybyhIZWFkZXJzKSBcCisgICAgbWFjcm8oSURCQ3Vyc29yKSBcCisgICAgbWFjcm8o
SURCQ3Vyc29yV2l0aFZhbHVlKSBcCisgICAgbWFjcm8oSURCRGF0YWJhc2UpIFwKKyAgICBtYWNy
byhJREJGYWN0b3J5KSBcCisgICAgbWFjcm8oSURCSW5kZXgpIFwKKyAgICBtYWNybyhJREJLZXlS
YW5nZSkgXAorICAgIG1hY3JvKElEQk9iamVjdFN0b3JlKSBcCisgICAgbWFjcm8oSURCT3BlbkRC
UmVxdWVzdCkgXAorICAgIG1hY3JvKElEQlJlcXVlc3QpIFwKKyAgICBtYWNybyhJREJUcmFuc2Fj
dGlvbikgXAorICAgIG1hY3JvKElEQlZlcnNpb25DaGFuZ2VFdmVudCkgXAorICAgIG1hY3JvKElu
cHV0RXZlbnQpIFwKKyAgICBtYWNybyhJbnRlcnNlY3Rpb25PYnNlcnZlcikgXAorICAgIG1hY3Jv
KEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpIFwKKyAgICBtYWNybyhLZXlmcmFtZUVmZmVjdCkg
XAorICAgIG1hY3JvKE1lZGlhRW5jcnlwdGVkRXZlbnQpIFwKKyAgICBtYWNybyhNZWRpYUtleU1l
c3NhZ2VFdmVudCkgXAorICAgIG1hY3JvKE1lZGlhS2V5U2Vzc2lvbikgXAorICAgIG1hY3JvKE1l
ZGlhS2V5U3RhdHVzTWFwKSBcCisgICAgbWFjcm8oTWVkaWFLZXlTeXN0ZW1BY2Nlc3MpIFwKKyAg
ICBtYWNybyhNZWRpYUtleXMpIFwKKyAgICBtYWNybyhNZWRpYVNvdXJjZSkgXAorICAgIG1hY3Jv
KE1lZGlhU3RyZWFtKSBcCisgICAgbWFjcm8oTWVkaWFTdHJlYW1FdmVudCkgXAorICAgIG1hY3Jv
KE1lZGlhU3RyZWFtVHJhY2spIFwKKyAgICBtYWNybyhNb2Rlcm5NZWRpYUNvbnRyb2xzKSBcCisg
ICAgbWFjcm8oTmF2aWdhdG9yQ3JlZGVudGlhbHMpIFwKKyAgICBtYWNybyhOYXZpZ2F0b3JNZWRp
YURldmljZXMpIFwKKyAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwKKyAgICBtYWNybyhQ
YXNzd29yZENyZWRlbnRpYWwpIFwKKyAgICBtYWNybyhQYXltZW50QWRkcmVzcykgXAorICAgIG1h
Y3JvKFBheW1lbnRSZXF1ZXN0KSBcCisgICAgbWFjcm8oUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVu
dCkgXAorICAgIG1hY3JvKFBheW1lbnRSZXNwb25zZSkgXAorICAgIG1hY3JvKFBlcmZvcm1hbmNl
RW50cnkpIFwKKyAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5TGlzdCkgXAorICAgIG1hY3JvKFBl
cmZvcm1hbmNlTWFyaykgXAorICAgIG1hY3JvKFBlcmZvcm1hbmNlTWVhc3VyZSkgXAorICAgIG1h
Y3JvKFBlcmZvcm1hbmNlT2JzZXJ2ZXIpIFwKKyAgICBtYWNybyhQZXJmb3JtYW5jZU9ic2VydmVy
RW50cnlMaXN0KSBcCisgICAgbWFjcm8oUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZykgXAorICAg
IG1hY3JvKFJUQ0RUTUZTZW5kZXIpIFwKKyAgICBtYWNybyhSVENEVE1GVG9uZUNoYW5nZUV2ZW50
KSBcCisgICAgbWFjcm8oUlRDRGF0YUNoYW5uZWwpIFwKKyAgICBtYWNybyhSVENEYXRhQ2hhbm5l
bEV2ZW50KSBcCisgICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCisgICAgbWFjcm8oUlRDSWNl
VHJhbnNwb3J0KSBcCisgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb24pIFwKKyAgICBtYWNybyhS
VENSdHBSZWNlaXZlcikgXAorICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAorICAgIG1hY3JvKFJU
Q1J0cFRyYW5zY2VpdmVyKSBcCisgICAgbWFjcm8oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKSBcCisg
ICAgbWFjcm8oUlRDU3RhdHNSZXBvcnQpIFwKKyAgICBtYWNybyhSVENUcmFja0V2ZW50KSBcCisg
ICAgbWFjcm8oUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcikgXAorICAgIG1hY3JvKFJlYWRh
YmxlU3RyZWFtKSBcCisgICAgbWFjcm8oUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyKSBcCisgICAg
bWFjcm8oUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCkgXAorICAgIG1hY3JvKFJlYWRhYmxlU3Ry
ZWFtRGVmYXVsdENvbnRyb2xsZXIpIFwKKyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbURlZmF1bHRS
ZWFkZXIpIFwKKyAgICBtYWNybyhSZXF1ZXN0KSBcCisgICAgbWFjcm8oUmVzcG9uc2UpIFwKKyAg
ICBtYWNybyhTZXJ2aWNlV29ya2VyKSBcCisgICAgbWFjcm8oU2VydmljZVdvcmtlckNvbnRhaW5l
cikgXAorICAgIG1hY3JvKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgXAorICAgIG1hY3JvKFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pIFwKKyAgICBtYWNybyhTaGFkb3dSb290KSBcCisgICAg
bWFjcm8oU3RhdGljUmFuZ2UpIFwKKyAgICBtYWNybyhXZWJHTDJSZW5kZXJpbmdDb250ZXh0KSBc
CisgICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgXAorICAgIG1hY3JvKFdlYkdQVUJ1
ZmZlcikgXAorICAgIG1hY3JvKFdlYkdQVUNvbW1hbmRCdWZmZXIpIFwKKyAgICBtYWNybyhXZWJH
UFVDb21tYW5kUXVldWUpIFwKKyAgICBtYWNybyhXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29kZXIp
IFwKKyAgICBtYWNybyhXZWJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSkgXAorICAgIG1hY3JvKFdl
YkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJHUFVEZXB0aFN0ZW5j
aWxTdGF0ZSkgXAorICAgIG1hY3JvKFdlYkdQVURyYXdhYmxlKSBcCisgICAgbWFjcm8oV2ViR1BV
RnVuY3Rpb24pIFwKKyAgICBtYWNybyhXZWJHUFVMaWJyYXJ5KSBcCisgICAgbWFjcm8oV2ViR1BV
UmVuZGVyQ29tbWFuZEVuY29kZXIpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQXR0YWNo
bWVudERlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2ht
ZW50RGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFjaG1l
bnREZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3IpIFwK
KyAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0b3Ip
IFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpIFwKKyAgICBtYWNy
byhXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyaW5n
Q29udGV4dCkgXAorICAgIG1hY3JvKFdlYkdQVVNpemUpIFwKKyAgICBtYWNybyhXZWJHUFVUZXh0
dXJlKSBcCisgICAgbWFjcm8oV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhX
ZWJLaXRNZWRpYUtleUVycm9yKSBcCisgICAgbWFjcm8oV2ViS2l0TWVkaWFLZXlNZXNzYWdlRXZl
bnQpIFwKKyAgICBtYWNybyhXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50KSBcCisgICAgbWFjcm8o
V2ViS2l0TWVkaWFLZXlTZXNzaW9uKSBcCisgICAgbWFjcm8oV2ViS2l0TWVkaWFLZXlzKSBcCisg
ICAgbWFjcm8oV2ViU29ja2V0KSBcCisgICAgbWFjcm8oV3JpdGFibGVTdHJlYW0pIFwKKyAgICBt
YWNybyhYTUxIdHRwUmVxdWVzdCkgXAogICAgIG1hY3JvKGFkZFRyYWNrKSBcCiAgICAgbWFjcm8o
YXBwZW5kRnJvbUpTKSBcCiAgICAgbWFjcm8oYXNzb2NpYXRlZFJlYWRhYmxlQnl0ZVN0cmVhbUNv
bnRyb2xsZXIpIFwKICAgICBtYWNybyhhdXRvQWxsb2NhdGVDaHVua1NpemUpIFwKICAgICBtYWNy
byhiYWNraW5nTWFwKSBcCisgICAgbWFjcm8oYmx1cikgXAogICAgIG1hY3JvKGJvZHkpIFwKICAg
ICBtYWNybyhieW9iUmVxdWVzdCkgXAorICAgIG1hY3JvKGNhY2hlcykgXAogICAgIG1hY3JvKGNh
bmNlbCkgXAogICAgIG1hY3JvKGNsb25lQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhjbG9uZUZv
ckpTKSBcCisgICAgbWFjcm8oY2xvc2UpIFwKICAgICBtYWNybyhjbG9zZVJlcXVlc3RlZCkgXAor
ICAgIG1hY3JvKGNsb3NlZCkgXAogICAgIG1hY3JvKGNsb3NlZFByb21pc2VDYXBhYmlsaXR5KSBc
CisgICAgbWFjcm8oY29sbGVjdE1hdGNoaW5nRWxlbWVudHNJbkZsYXRUcmVlKSBcCiAgICAgbWFj
cm8oY29uc3VtZSkgXAogICAgIG1hY3JvKGNvbnN1bWVDaHVuaykgXAogICAgIG1hY3JvKGNvbnRy
b2xsZWRSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKGNvbnRyb2xsZXIpIFwKICAgICBtYWNy
byhjcmVhdGVSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGN1c3RvbUVsZW1lbnRzKSBcCiAg
ICAgbWFjcm8oZGlzdHVyYmVkKSBcCisgICAgbWFjcm8oZG9jdW1lbnQpIFwKICAgICBtYWNybyhm
YWlsdXJlS2luZCkgXAorICAgIG1hY3JvKGZldGNoKSBcCiAgICAgbWFjcm8oZmV0Y2hSZXF1ZXN0
KSBcCiAgICAgbWFjcm8oZmlsbEZyb21KUykgXAogICAgIG1hY3JvKGZpbmlzaENvbnN1bWluZ1N0
cmVhbSkgXAotICAgIG1hY3JvKGdldFVzZXJNZWRpYSkgXAorICAgIG1hY3JvKGZvY3VzKSBcCisg
ICAgbWFjcm8oZnJhbWVzKSBcCiAgICAgbWFjcm8oZ2V0UmVtb3RlU3RyZWFtcykgXAogICAgIG1h
Y3JvKGdldFNlbmRlcnMpIFwKICAgICBtYWNybyhnZXRUcmFja3MpIFwKKyAgICBtYWNybyhnZXRV
c2VyTWVkaWEpIFwKKyAgICBtYWNybyhoZWFkZXIpIFwKKyAgICBtYWNybyhpbmRleGVkREIpIFwK
ICAgICBtYWNybyhpbml0aWFsaXplV2l0aCkgXAogICAgIG1hY3JvKGlzRGlzdHVyYmVkKSBcCiAg
ICAgbWFjcm8oaXNMb2FkaW5nKSBcCisgICAgbWFjcm8oaXNTZWN1cmVDb250ZXh0KSBcCiAgICAg
bWFjcm8obG9jYWxTdHJlYW1zKSBcCi0gICAgbWFjcm8obWFrZVRoaXNUeXBlRXJyb3IpIFwKKyAg
ICBtYWNybyhsb2NhdGlvbikgXAogICAgIG1hY3JvKG1ha2VHZXR0ZXJUeXBlRXJyb3IpIFwKKyAg
ICBtYWNybyhtYWtlVGhpc1R5cGVFcnJvcikgXAorICAgIG1hY3JvKG1hdGNoaW5nRWxlbWVudElu
RmxhdFRyZWUpIFwKICAgICBtYWNybyhtZWRpYVN0cmVhbVRyYWNrQ29uc3RyYWludHMpIFwKKyAg
ICBtYWNybyhvcGVuZXIpIFwKICAgICBtYWNybyhvcGVyYXRpb25zKSBcCiAgICAgbWFjcm8ob3du
ZXJSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKHBhcmVudCkgXAogICAgIG1hY3JvKHBlbmRp
bmdQdWxsSW50b3MpIFwKKyAgICBtYWNybyhwb3N0TWVzc2FnZSkgXAogICAgIG1hY3JvKHByaXZh
dGVHZXRTdGF0cykgXAogICAgIG1hY3JvKHB1bGwpIFwKLSAgICBtYWNybyhwdWxsaW5nKSBcCiAg
ICAgbWFjcm8ocHVsbEFnYWluKSBcCisgICAgbWFjcm8ocHVsbGluZykgXAogICAgIG1hY3JvKHF1
ZXVlKSBcCiAgICAgbWFjcm8ocXVldWVkQWRkSWNlQ2FuZGlkYXRlKSBcCiAgICAgbWFjcm8ocXVl
dWVkQ3JlYXRlQW5zd2VyKSBcCiAgICAgbWFjcm8ocXVldWVkQ3JlYXRlT2ZmZXIpIFwKICAgICBt
YWNybyhxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKSBcCiAgICAgbWFjcm8ocXVldWVkU2V0UmVt
b3RlRGVzY3JpcHRpb24pIFwKLSAgICBtYWNybyhyZWFkZXIpIFwKICAgICBtYWNybyhyZWFkSW50
b1JlcXVlc3RzKSBcCiAgICAgbWFjcm8ocmVhZFJlcXVlc3RzKSBcCiAgICAgbWFjcm8ocmVhZGFi
bGVCeXRlU3RyZWFtQVBJRW5hYmxlZCkgXAogICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlcikgXAorICAgIG1hY3JvKHJlYWRlcikgXAogICAgIG1hY3JvKHJlYWR5UHJvbWlzZUNhcGFi
aWxpdHkpIFwKICAgICBtYWNybyhyZW1vdmVUcmFjaykgXAorICAgIG1hY3JvKHJlc3BvbnNlKSBc
CiAgICAgbWFjcm8ocmVzcG9uc2VDYWNoZUlzVmFsaWQpIFwKICAgICBtYWNybyhyZXRyaWV2ZVJl
c3BvbnNlKSBcCi0gICAgbWFjcm8ocmVzcG9uc2UpIFwKKyAgICBtYWNybyhzZWxmKSBcCiAgICAg
bWFjcm8oc2V0Qm9keSkgXAogICAgIG1hY3JvKHNldEJvZHlBc1JlYWRhYmxlU3RyZWFtKSBcCiAg
ICAgbWFjcm8oc2V0Qm9keUZyb21JbnB1dFJlcXVlc3QpIFwKICAgICBtYWNybyhzZXRTdGF0dXMp
IFwKLSAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3JvKHNob3dNb2RhbERpYWxvZykgXAogICAg
IG1hY3JvKHN0YXJ0Q29uc3VtaW5nU3RyZWFtKSBcCiAgICAgbWFjcm8oc3RhcnRlZCkgXAogICAg
IG1hY3JvKHN0YXJ0ZWRQcm9taXNlKSBcCisgICAgbWFjcm8oc3RhdGUpIFwKICAgICBtYWNybyhz
dG9yZWRFcnJvcikgXAogICAgIG1hY3JvKHN0cmF0ZWd5KSBcCiAgICAgbWFjcm8oc3RyYXRlZ3lI
V00pIFwKQEAgLTEwNiwyNyArMjUxLDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNy
byhzdHJlYW1Xcml0YWJsZSkgXAogICAgIG1hY3JvKHN0cnVjdHVyZWRDbG9uZUFycmF5QnVmZmVy
KSBcCiAgICAgbWFjcm8oc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KSBcCisgICAgbWFj
cm8odG9wKSBcCiAgICAgbWFjcm8odG90YWxRdWV1ZWRCeXRlcykgXAogICAgIG1hY3JvKHVuZGVy
bHlpbmdCeXRlU291cmNlKSBcCiAgICAgbWFjcm8odW5kZXJseWluZ1NpbmspIFwKICAgICBtYWNy
byh1bmRlcmx5aW5nU291cmNlKSBcCiAgICAgbWFjcm8odmlldykgXAogICAgIG1hY3JvKHdlYlJU
Q0xlZ2FjeUFQSUVuYWJsZWQpIFwKLSAgICBtYWNybyh3cml0aW5nKSBcCi0gICAgbWFjcm8oSGVh
ZGVycykgXAotICAgIG1hY3JvKE1lZGlhU3RyZWFtKSBcCi0gICAgbWFjcm8oTWVkaWFTdHJlYW1U
cmFjaykgXAotICAgIG1hY3JvKFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpIFwKLSAgICBt
YWNybyhSZWFkYWJsZVN0cmVhbSkgXAotICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtQllPQlJlYWRl
cikgXAotICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QpIFwKLSAgICBtYWNybyhS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKSBcCi0gICAgbWFjcm8oUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyKSBcCi0gICAgbWFjcm8oUmVxdWVzdCkgXAotICAgIG1hY3JvKFJlc3Bv
bnNlKSBcCi0gICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCi0gICAgbWFjcm8oUlRDU2Vzc2lv
bkRlc2NyaXB0aW9uKSBcCi0gICAgbWFjcm8oWE1MSHR0cFJlcXVlc3QpCisgICAgbWFjcm8od2Vi
a2l0KSBcCisgICAgbWFjcm8od2Via2l0QXVkaW9Db250ZXh0KSBcCisgICAgbWFjcm8od2Via2l0
SURCQ3Vyc29yKSBcCisgICAgbWFjcm8od2Via2l0SURCRGF0YWJhc2UpIFwKKyAgICBtYWNybyh3
ZWJraXRJREJGYWN0b3J5KSBcCisgICAgbWFjcm8od2Via2l0SURCSW5kZXgpIFwKKyAgICBtYWNy
byh3ZWJraXRJREJLZXlSYW5nZSkgXAorICAgIG1hY3JvKHdlYmtpdElEQk9iamVjdFN0b3JlKSBc
CisgICAgbWFjcm8od2Via2l0SURCUmVxdWVzdCkgXAorICAgIG1hY3JvKHdlYmtpdElEQlRyYW5z
YWN0aW9uKSBcCisgICAgbWFjcm8od2Via2l0SW5kZXhlZERCKSBcCisgICAgbWFjcm8od2luZG93
KSBcCisgICAgbWFjcm8od3JpdGluZykKIAogY2xhc3MgV2ViQ29yZUJ1aWx0aW5OYW1lcyB7CiBw
dWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE2OTUs
NiArMTY5NSw3IEBAIHN1YiBOZWVkc1J1bnRpbWVDaGVjawogCiAgICAgcmV0dXJuICRjb250ZXh0
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfQogICAgICAgICB8fCAkY29u
dGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEZvcldvcmxkfQorICAgICAgICB8fCAk
Y29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30KICAgICAgICAg
fHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NlY3VyZUNvbnRleHR9OwogfQogCkBA
IC0xNzA1LDExICsxNzA2LDExIEBAIHN1YiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UKIAog
ICAgIHJldHVybiAxIGlmIElzR2xvYmFsT3JQcmltYXJ5R2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZh
Y2UpOwogCi0gICAgIyBGSVhNRTogVGhlIGJpbmRpbmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBw
b3J0IHB1dHRpbmcgcnVudGltZS1lbmFibGVkIG9wZXJhdGlvbnMgb24gdGhlIGluc3RhbmNlIHll
dCAoZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cykuCi0gICAgcmV0dXJuIDAgaWYgTmVlZHNSdW50
aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJhdGlvbik7Ci0KICAgICAjIFtVbmZvcmdlYWJsZV0g
b3BlcmF0aW9ucyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLiBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZQotICAgIHJldHVybiAxIGlmIElzVW5mb3JnZWFibGUo
JGludGVyZmFjZSwgJG9wZXJhdGlvbik7CisgICAgaWYgKElzVW5mb3JnZWFibGUoJGludGVyZmFj
ZSwgJG9wZXJhdGlvbikpIHsKKyAgICAgICAgYXNzZXJ0KCJUaGUgYmluZGluZ3MgZ2VuZXJhdG9y
IGRvZXMgbm90IHN1cHBvcnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0
aGUgaW5zdGFuY2UgeWV0IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKTpbIiAuICRpbnRlcmZh
Y2UtPnR5cGUtPm5hbWUgLiAiOjoiIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJdIikgaWYgTmVlZHNS
dW50aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiAxOwor
ICAgIH0KIAogICAgIHJldHVybiAwOwogfQpAQCAtMjk5MCw3ICsyOTkxLDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKIHsKLSAgICBteSAo
JG9iamVjdCwgJGludGVyZmFjZSwgJGlzSW5zdGFuY2UsICRoYXNoS2V5cywgJGhhc2hTcGVjaWFs
cywgJGhhc2hWYWx1ZTEsICRoYXNoVmFsdWUyLCAkY29uZGl0aW9uYWxzLCAkcmVhZFdyaXRlQ29u
ZGl0aW9uYWxzLCAkcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCAkcnVudGltZUVuYWJsZWRBdHRy
aWJ1dGVzLCAkc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucywgJHNldHRpbmdzRW5hYmxlZEF0dHJp
YnV0ZXMpID0gQF87CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpc0luc3RhbmNlLCAk
aGFzaEtleXMsICRoYXNoU3BlY2lhbHMsICRoYXNoVmFsdWUxLCAkaGFzaFZhbHVlMiwgJGNvbmRp
dGlvbmFscywgJHJlYWRXcml0ZUNvbmRpdGlvbmFscywgJHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9u
cywgJHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcykgPSBAXzsKIAogICAgICMgRklYTUU6IFRoZXNl
IHNob3VsZCBiZSBmdW5jdGlvbnMgb24gJGludGVyZmFjZS4KICAgICBteSAkaW50ZXJmYWNlTmFt
ZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CkBAIC0zMDUzLDEwICszMDU0LDYgQEAgc3ViIEdl
bmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2so
JGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgIHB1c2goQCRydW50aW1lRW5h
YmxlZEF0dHJpYnV0ZXMsICRhdHRyaWJ1dGUpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRh
dHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7Ci0gICAg
ICAgICAgICBwdXNoKEAkc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSk7Ci0g
ICAgICAgIH0KICAgICB9CiAKICAgICBteSBAb3BlcmF0aW9ucyA9IEB7JGludGVyZmFjZS0+b3Bl
cmF0aW9uc307CkBAIC0zMDk4LDEwICszMDk1LDYgQEAgc3ViIEdlbmVyYXRlUHJvcGVydGllc0hh
c2hUYWJsZQogICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJh
dGlvbikpIHsKICAgICAgICAgICAgIHB1c2goQCRydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMsICRv
cGVyYXRpb24pOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7Ci0gICAgICAgICAgICBwdXNoKEAkc2V0
dGluZ3NFbmFibGVkT3BlcmF0aW9ucywgJG9wZXJhdGlvbik7Ci0gICAgICAgIH0KICAgICB9CiAK
ICAgICByZXR1cm4gJHByb3BlcnR5Q291bnQ7CkBAIC0zNjYwLDYgKzM2NTMsMjAgQEAgc3ViIEdl
bmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaQogICAgICAgICBwdXNoKEBjb25qdW5j
dHMsICJ3b3JsZEZvckRPTU9iamVjdCh0aGlzKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9KSAuICIoKSIpOwogICAgIH0KIAor
ICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30p
IHsKKyAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEVuYWJsZWRCeVNldHRp
bmcuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9
IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRG9j
dW1lbnQuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIpOworCisg
ICAgICAgIGFzc2VydCgiRW5hYmxlZEJ5U2V0dGluZyBjYW4gb25seSBiZSB1c2VkIGJ5IGludGVy
ZmFjZXMgb25seSBleHBvc2VkIHRvIHRoZSBXaW5kb3ciKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntFeHBvc2VkfSBuZSAiV2luZG93IjsKKworICAgICAgICBteSBAZmxhZ3MgPSBzcGxpdCgvJi8s
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSk7CisgICAg
ICAgIGZvcmVhY2ggbXkgJGZsYWcgKEBmbGFncykgeworICAgICAgICAgICAgcHVzaChAY29uanVu
Y3RzLCAiZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4gVG9N
ZXRob2ROYW1lKCRmbGFnKSAuICJFbmFibGVkKCkiKTsKKyAgICAgICAgfQorICAgIH0KKwogICAg
IGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0pIHsK
ICAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEVuYWJsZWRBdFJ1bnRpbWUu
IikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9IGVx
ICJWQUxVRV9JU19NSVNTSU5HIjsKIApAQCAtMzk1MCwxMSArMzk1Nyw5IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgbXkgJGhhc2hOYW1lID0gJGNsYXNzTmFtZSAuICJUYWJsZSI7
CiAgICAgbXkgQHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9ucyA9ICgpOwogICAgIG15IEBydW50aW1l
RW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKLSAgICBteSBAc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9u
cyA9ICgpOwotICAgIG15IEBzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzID0gKCk7CiAKICAgICAj
IEdlbmVyYXRlIGhhc2ggdGFibGUgZm9yIHByb3BlcnRpZXMgb24gdGhlIGluc3RhbmNlLgotICAg
IG15ICRudW1JbnN0YW5jZVByb3BlcnRpZXMgPSBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUo
JG9iamVjdCwgJGludGVyZmFjZSwgMSwgXEBoYXNoS2V5cywgXEBoYXNoU3BlY2lhbHMsIFxAaGFz
aFZhbHVlMSwgXEBoYXNoVmFsdWUyLCBcJWNvbmRpdGlvbmFscywgXCVyZWFkV3JpdGVDb25kaXRp
b25hbHMsIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBcQHJ1bnRpbWVFbmFibGVkQXR0cmli
dXRlcywgXEBzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zLCBcQHNldHRpbmdzRW5hYmxlZEF0dHJp
YnV0ZXMpOworICAgIG15ICRudW1JbnN0YW5jZVByb3BlcnRpZXMgPSBHZW5lcmF0ZVByb3BlcnRp
ZXNIYXNoVGFibGUoJG9iamVjdCwgJGludGVyZmFjZSwgMSwgXEBoYXNoS2V5cywgXEBoYXNoU3Bl
Y2lhbHMsIFxAaGFzaFZhbHVlMSwgXEBoYXNoVmFsdWUyLCBcJWNvbmRpdGlvbmFscywgXCVyZWFk
V3JpdGVDb25kaXRpb25hbHMsIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBcQHJ1bnRpbWVF
bmFibGVkQXR0cmlidXRlcyk7CiAgICAgJG9iamVjdC0+R2VuZXJhdGVIYXNoVGFibGUoJGNsYXNz
TmFtZSwgJGhhc2hOYW1lLCAkbnVtSW5zdGFuY2VQcm9wZXJ0aWVzLCBcQGhhc2hLZXlzLCBcQGhh
c2hTcGVjaWFscywgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1ZTIsIFwlY29uZGl0aW9uYWxzLCBc
JXJlYWRXcml0ZUNvbmRpdGlvbmFscywgMCkgaWYgJG51bUluc3RhbmNlUHJvcGVydGllcyA+IDA7
CiAKICAgICAjIC0gQWRkIGFsbCBpbnRlcmZhY2Ugb2JqZWN0IChha2EgY29uc3RydWN0b3IpIHBy
b3BlcnRpZXMgKGNvbnN0YW50cywgc3RhdGljIGF0dHJpYnV0ZXMsIHN0YXRpYyBvcGVyYXRpb25z
KS4KQEAgLTQwNzAsMTYgKzQwNzUsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAlcmVhZFdyaXRlQ29uZGl0aW9uYWxzID0gKCk7CiAgICAgQHJ1bnRpbWVFbmFibGVkT3BlcmF0
aW9ucyA9ICgpOwogICAgIEBydW50aW1lRW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKLSAgICBAc2V0
dGluZ3NFbmFibGVkT3BlcmF0aW9ucyA9ICgpOwotICAgIEBzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1
dGVzID0gKCk7CiAKICAgICAjIEdlbmVyYXRlIGhhc2ggdGFibGUgZm9yIHByb3BlcnRpZXMgb24g
dGhlIHByb3RvdHlwZS4KICAgICBteSAkbnVtUHJvdG90eXBlUHJvcGVydGllcyA9IEdlbmVyYXRl
UHJvcGVydGllc0hhc2hUYWJsZSgkb2JqZWN0LCAkaW50ZXJmYWNlLCAwLAogICAgICAgICBcQGhh
c2hLZXlzLCBcQGhhc2hTcGVjaWFscywKICAgICAgICAgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1
ZTIsCiAgICAgICAgIFwlY29uZGl0aW9uYWxzLCBcJXJlYWRXcml0ZUNvbmRpdGlvbmFscywKLSAg
ICAgICAgXEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMsIFxAcnVudGltZUVuYWJsZWRBdHRyaWJ1
dGVzLAotICAgICAgICBcQHNldHRpbmdzRW5hYmxlZE9wZXJhdGlvbnMsIFxAc2V0dGluZ3NFbmFi
bGVkQXR0cmlidXRlcyk7CisgICAgICAgIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBcQHJ1
bnRpbWVFbmFibGVkQXR0cmlidXRlcyk7CiAKICAgICBteSAkaGFzaFNpemUgPSAkbnVtUHJvdG90
eXBlUHJvcGVydGllczsKIApAQCAtNDEyOCwzMSArNDEzMCw2IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgQHNldHRpbmdzRW5h
YmxlZFByb3BlcnRpZXMgPSBAc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9uczsKLSAgICAgICAgcHVz
aChAc2V0dGluZ3NFbmFibGVkUHJvcGVydGllcywgQHNldHRpbmdzRW5hYmxlZEF0dHJpYnV0ZXMp
OwotICAgICAgICBpZiAoc2NhbGFyKEBzZXR0aW5nc0VuYWJsZWRQcm9wZXJ0aWVzKSkgewotICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRvY3VtZW50LmgiKTsKLSAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVCghY29udGV4dCB8fCBjb250ZXh0LT5pc0Rv
Y3VtZW50KCkpO1xuIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvcmVhY2ggbXkgJG9w
ZXJhdGlvbk9yQXR0cmlidXRlIChAc2V0dGluZ3NFbmFibGVkUHJvcGVydGllcykgewotICAgICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb25PckF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKLQotICAgICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9
IFRvTWV0aG9kTmFtZSgkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0VuYWJsZWRCeVNldHRpbmd9KSAuICJFbmFibGVkIjsKLSAgICAgICAgICAgICAgICBteSAkbmFt
ZSA9ICRvcGVyYXRpb25PckF0dHJpYnV0ZS0+bmFtZTsKLQotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIGlmICghY29udGV4dCB8fCAhZG93bmNhc3Q8RG9jdW1lbnQ+KCpj
b250ZXh0KS5zZXR0aW5ncygpLiR7ZW5hYmxlRnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4o
XCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29w
ZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6ZGVs
ZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlO
YW1lKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIp
OwotCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIGZv
cmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAgICAg
ICAgICAgbmV4dCB1bmxlc3MgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZh
dGVJZGVudGlmaWVyfSk7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIik7CkBAIC00MjUxLDE3ICs0MjI4LDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIG5leHQgdW5sZXNzIE5lZWRzUnVudGltZUNoZWNrKCRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpOwogICAgICAgICBuZXh0IHVubGVzcyBBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlv
bmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0
dHJpYnV0ZSk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKICAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVD
b25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRh
dHRyaWJ1dGUtPm5hbWU7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke3J1
bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICBteSAkZ2V0dGVy
ID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAibnVs
bHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0byogY3Vz
dG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICRnZXR0ZXIs
ICRzZXR0ZXIpO1xuIik7CiAgICAgICAgIG15ICRqc2NBdHRyaWJ1dGVzID0gR2V0SlNDQXR0cmli
dXRlc0ZvckF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT4kYXR0cmlidXRlTmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CisKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgk
e3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pXG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS4iIC4gJGF0
dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJpYnV0
ZXMpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogICAgIH0KIApAQCAtNDI4NiwxNyArNDI2MywxNyBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBuZXh0IHVubGVzcyBPcGVyYXRpb25TaG91bGRC
ZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIG5leHQgaWYgJG9w
ZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSA+
IDE7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbik7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsK
ICAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogICAg
ICAgICBteSAkZnVuY3Rpb25OYW1lID0gJG9wZXJhdGlvbi0+bmFtZTsKICAgICAgICAgbXkgJGlt
cGxlbWVudGF0aW9uRnVuY3Rpb24gPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0
aW9uTGVuZ3RoKCRvcGVyYXRpb24pOwogICAgICAgICBteSAkanNBdHRyaWJ1dGVzID0gQ29tcHV0
ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSlc
biIpOwogCi0gICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAidm0ucHJvcGVydHlOYW1lcy0+JGZ1
bmN0aW9uTmFtZSI7Ci0gICAgICAgICRwcm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbk5h
bWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
UHJpdmF0ZUlkZW50aWZpZXJ9OworICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29k
ZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkb3BlcmF0aW9uKTsKKyAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7
cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSlcbiIpOworICAgICAgICBteSAkcHJvcGVy
dHlOYW1lID0gInN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLiIgLiAkZnVuY3Rpb25OYW1lIC4gKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSA/ICJQcml2YXRlTmFtZSgpIiA6ICJQdWJsaWNO
YW1lKCkiKTsKICAgICAgICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24p
KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0QnVp
bHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCAkcHJvcGVydHlOYW1lLCAkaW1wbGVtZW50YXRpb25GdW5j
dGlvbih2bSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzQXR0cmlidXRlcykpO1xuIik7CiAg
ICAgICAgIH0gZWxzZSB7CkBAIC00NjkwLDI0ICs0NjY3LDcgQEAgc3ViIEdlbmVyYXRlQXR0cmli
dXRlR2V0dGVyQm9keURlZmluaXRpbwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIp
OwotICAgIAotICAgICMgR2xvYmFsIGNvbnN0cnVjdG9ycyBjYW4gYmUgZGlzYWJsZWQgYXQgcnVu
dGltZS4KLSAgICAjIEZJWE1FOiBSZXR1cm5pbmcgdW5kZWZpbmVkIGlzIG5vdCB0aGUgc2FtZSBh
cyBkaWFzYWJsaW5nLiBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSByZW1vdmVkCi0gICAgIyBm
cm9tIHRoZSBvYmplY3QgaW5zdGVhZC4KLSAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3Ry
dWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpKSB7Ci0gICAgICAgIGlmICgkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewotICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIkZyYW1lLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIlNldHRpbmdzLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pIC4gIkVuYWJsZWQiOwot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghdGhpc09i
amVjdC53cmFwcGVkKCkuZnJhbWUoKSkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKLSAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlRnVuY3Rpb24oKSlcbiIpOwotICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIAorCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmCiAgICAgICAgICEkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmCiAgICAgICAgICEk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPbkdldHRl
cn0pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW5h
YmxlZEJ5U2V0dGluZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RFbmFibGVkQnlTZXR0aW5nLmlkbAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVuYWJsZWRCeVNldHRpbmcu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitpbnRlcmZh
Y2UgVGVzdEVuYWJsZWRCeVNldHRpbmcgeworICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RTZXR0
aW5nXSBhdHRyaWJ1dGUgVGVzdFN1Yk9iakNvbnN0cnVjdG9yIFRlc3RTdWJPYmpFbmFibGVkQnlT
ZXR0aW5nOworCisgICAgLy8gW0VuYWJsZWRCeVNldHRpbmddIGF0dHJpYnV0ZXMgYW5kIG9wZXJh
dGlvbnMuCisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEJ5U2V0dGluZz1U
ZXN0U2V0dGluZ10gYXR0cmlidXRlIERPTVN0cmluZyBlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
OworICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRCeVNldHRpbmc9VGVzdFNl
dHRpbmddIHZvaWQgZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFt
KTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMjE1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDYg
QEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHN0YXRpYyBy
ZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgc3RhdGljUmVhZE9ubHlMb25nQXR0cjsKICAgICBz
dGF0aWMgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgIHN0YXRpY1N0cmluZ0F0dHI7CiAgICAg
c3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXN0U3ViT2JqQ29uc3RydWN0b3IgVGVzdFN1Yk9i
ajsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZ10gYXR0cmlidXRlIFRlc3RTdWJP
YmpDb25zdHJ1Y3RvciBUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZzsKICAgICBhdHRyaWJ1dGUg
VGVzdEVudW1UeXBlIGVudW1BdHRyOwogICAgIGF0dHJpYnV0ZSBieXRlIGJ5dGVBdHRyOwogICAg
IGF0dHJpYnV0ZSBvY3RldCBvY3RldEF0dHI7CkBAIC0xMTMsMTMgKzExMiw4IEBAIGVudW0gVGVz
dENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9G
RUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2b2lkIGVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24obG9uZyB0ZXN0UGFyYW0pOwogCiAgICAgW0VuYWJsZWRGb3JXb3JsZD1zb21l
V29ybGQsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQobG9uZyB0ZXN0UGFyYW0pOwotCiAgICAg
W0VuYWJsZWRGb3JXb3JsZD1zb21lV29ybGRdIHZvaWQgd29ybGRTcGVjaWZpY01ldGhvZChsb25n
IHRlc3RQYXJhbSk7CiAKLSAgICAvLyBbRW5hYmxlZEJ5U2V0dGluZ10gYXR0cmlidXRlcyBhbmQg
b3BlcmF0aW9ucy4KLSAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQnlTZXR0
aW5nPVRlc3RTZXR0aW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuYWJsZWRCeVNldHRpbmdBdHRy
aWJ1dGU7Ci0gICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEJ5U2V0dGluZz1U
ZXN0U2V0dGluZ10gdm9pZCBlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKERPTVN0cmluZyB0ZXN0
UGFyYW0pOwotCiAgICAgLy8gW1NlY3VyZUNvbnRleHRdIGF0dHJpYnV0ZXMgYW5kIG9wZXJhdGlv
bnM7IHdpbGwgbm90IGJlIGV4cG9zZWQgdG8gYSBub24tc2VjdXJlIGNvbnRleHQuCiAgICAgLy8g
RnJvbSA8aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zZWN1cmUtY29udGV4dHMvI2lu
dGVncmF0aW9uLWlkbD4gKEVkaXRvcidzIERyYWZ0LCAxNyBOb3ZlbWJlciAyMDE2KQogICAgIFtT
ZWN1cmVDb250ZXh0XSBQcm9taXNlPGRvdWJsZT4gY2FsY3VsYXRlU2VjcmV0UmVzdWx0KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1NSBAQAorLyoKKyAgICBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhp
cyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9U
IE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAg
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg
ICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0RPTUF0
dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29u
c3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+Cisj
aW5jbHVkZSA8d3RmL0dldFB0ci5oPgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyNpbmNs
dWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGdW5jdGlvbnMKKworI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOworI2VuZGlmCisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
K2Jvb2wgc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jv
b2wgc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0VuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
KyNlbmRpZgorCitjbGFzcyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlIDogcHVibGlj
IEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTQzo6
SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3Rv
dHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisK
KyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6
Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogSlND
OjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKwordXNpbmcgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8SlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZz47CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
Y29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURfUEFS
QU0odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsKK30K
KwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwo
IlRlc3RFbmFibGVkQnlTZXR0aW5nIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RW5hYmxlZEJ5U2V0dGlu
ZyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxlIGZv
ciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmdQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3Rv
ciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNl
dEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcikgfSB9LAorI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCisgICAgeyAiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIsIEN1c3RvbUFjY2Vz
c29yIHwgRE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVk
QnlTZXR0aW5nQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNs
b3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0VuYWJsZWRCeVNldHRp
bmdBdHRyaWJ1dGUpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAw
IH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgeyAiZW5hYmxlZEJ5
U2V0dGluZ09wZXJhdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3Rv
dHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiksIChpbnRwdHJfdCkgKDEpIH0g
fSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgor
fTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OnNf
aW5mbyA9IHsgIlRlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpp
bmZvKCksIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMp
OworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVudD4o
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAgICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpLCBzdHJs
ZW4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2Jh
bE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7CisgICAgfQorI2VuZGlmCisj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiksIHN0cmxlbigi
ZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1
cmFibGUpOworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2Jq
ZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsKKyAgICB9CisjZW5kaWYKK30KKwor
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnNfaW5mbyA9IHsgIlRlc3RF
bmFibGVkQnlTZXR0aW5nIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKSB9OworCitKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEVuYWJsZWRCeVNldHRpbmc+
JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4oc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZzo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisgICAg
aWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRp
bmdFbmFibGVkKCkpCisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5UZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1B1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVyOjpj
cmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
Z0NvbnN0cnVjdG9yLCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3RvciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoRG9udEVudW0pKTsK
K30KKworSlNPYmplY3QqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmNyZWF0ZVByb3RvdHlwZShW
TSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwg
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNPYmpl
Y3QqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdEVuYWJsZWRC
eVNldHRpbmcqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
Kj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6fkpTVGVz
dEVuYWJsZWRCeVNldHRpbmcoKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZyogSURMQXR0cmlidXRlPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpjYXN0KEV4
ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1cm4g
anNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KHN0YXRlLnZtKCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZyogSURMT3BlcmF0aW9uPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+Ojpj
YXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpT
VGVzdEVuYWJsZWRCeVNldHRpbmcqPihzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUoKSk7Cit9
CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmdQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5cGUt
PnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3Rv
ciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29u
c3RydWN0b3JHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyYg
dGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICByZXR1cm4gSlNUZXN0
U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS52bSgpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVj
dCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPjo6Z2V0PGpzVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1
ZSwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25z
dHJ1Y3RvclNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAg
IC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlzT2Jq
ZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZS52
bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdWJPYmpFbmFibGVkQnlT
ZXR0aW5nIiksIHN0cmxlbigiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSksIHZhbHVlKTsK
K30KKworYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpzZXQ8c2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JTZXR0ZXI+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOworfQor
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RF
bmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5lbmFibGVk
QnlTZXR0aW5nQXR0cmlidXRlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQor
eworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OmdldDxq
c1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZUdldHRlciwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCB0aGlzVmFsdWUsICJlbmFibGVk
QnlTZXR0aW5nQXR0cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxl
ZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgaW1wbC5zZXRFbmFi
bGVkQnlTZXR0aW5nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGlu
Z0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdEVuYWJsZWRCeVNldHRpbmc+OjpzZXQ8c2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0VuYWJs
ZWRCeVNldHRpbmdBdHRyaWJ1dGVTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0
aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBp
bXBsLmVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVu
YWJsZWRCeVNldHRpbmdPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpjYWxsPGpzVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb25Cb2R5Pigq
c3RhdGUsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIik7Cit9CisKKyNlbmRpZgorCitib29s
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmdPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0odmlz
aXRvcik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
IGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IHN0YXRpY19j
YXN0PEpTVGVzdEVuYWJsZWRCeVNldHRpbmcqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7Cisg
ICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4dCk7
CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFbmFibGVkQnlTZXR0aW5nLT53cmFw
cGVkKCksIGpzVGVzdEVuYWJsZWRCeVNldHRpbmcpOworfQorCisjaWYgRU5BQkxFKEJJTkRJTkdf
SU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/P183
VGVzdEVuYWJsZWRCeVNldHRpbmdAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4dGVy
biAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTIwVGVzdEVuYWJsZWRCeVNldHRpbmdF
W107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVkKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RF
bmFibGVkQnlTZXR0aW5nPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRFR1JJ
VFkpCisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2FzdDx2
b2lkKio+KGltcGwucHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhwZWN0
ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVyKCI/
P183VGVzdEVuYWJsZWRCeVNldHRpbmdAV2ViQ29yZUBANkJAIikpOworI2Vsc2UKKyAgICB2b2lk
KiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTIwVGVzdEVuYWJsZWRCeVNl
dHRpbmdFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RFbmFibGVkQnlT
ZXR0aW5nIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUKKyAg
ICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJmYWNl
IGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVzdEVu
YWJsZWRCeVNldHRpbmc+Ojp2YWx1ZSwgIlRlc3RFbmFibGVkQnlTZXR0aW5nIGlzIG5vdCBwb2x5
bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0aGVy
IGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdEVuYWJsZWRCeVNldHRp
bmcgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RFbmFibGVkQnlTZXR0aW5nIGhhcyBzdWJjbGFzc2Vz
IHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWlyZSBU
ZXN0RW5hYmxlZEJ5U2V0dGluZyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmluZwor
ICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRo
ZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFi
bGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1cm4g
Y3JlYXRlV3JhcHBlcjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4oZ2xvYmFsT2JqZWN0LCBXVEZNb3Zl
KGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RW5hYmxlZEJ5U2V0dGluZyYgaW1w
bCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30KKwor
VGVzdEVuYWJsZWRCeVNldHRpbmcqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnRvV3JhcHBlZChK
U0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFwcGVy
ID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KHZtLCB2YWx1ZSkp
CisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxscHRy
OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmgJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVu
YWJsZWRCeVNldHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg3IEBACisvKgorICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAg
ICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFwcGVy
LmgiCisjaW5jbHVkZSAiVGVzdEVuYWJsZWRCeVNldHRpbmcuaCIKKyNpbmNsdWRlIDx3dGYvTmV2
ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4g
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdEVuYWJsZWRCeVNl
dHRpbmc+OworICAgIHN0YXRpYyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBjcmVhdGUoSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RFbmFibGVkQnlTZXR0aW5nPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dEVuYWJsZWRCeVNldHRpbmc+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOworICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAgIHJl
dHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpKU09i
amVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRp
YyBUZXN0RW5hYmxlZEJ5U2V0dGluZyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFsdWUp
OworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xBUkVf
SU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCop
OworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpT
Qzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworcHJvdGVj
dGVkOgorICAgIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4mJik7CisKKyAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmdPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmly
dHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7Cit9
OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFwcGVy
V29ybGQmLCBUZXN0RW5hYmxlZEJ5U2V0dGluZyopCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEpTVGVzdEVuYWJsZWRCeVNldHRpbmdPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZvd25l
ci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdEVuYWJsZWRCeVNldHRp
bmcqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0OworfQor
CitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kiwg
VGVzdEVuYWJsZWRCeVNldHRpbmcmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFbmFi
bGVkQnlTZXR0aW5nKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhzdGF0ZSwgZ2xvYmFsT2Jq
ZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3Jl
YXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RFbmFibGVk
QnlTZXR0aW5nPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZlB0
cjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05ld2x5
Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDogSlND
Ojpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0ZXJU
cmFpdHM8VGVzdEVuYWJsZWRCeVNldHRpbmc+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBU
ZXN0RW5hYmxlZEJ5U2V0dGluZyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2MywxMCArMTYzLDggQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmpl
Y3Q6OmZpbmlzaENyZWF0aW9uKAogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1dG8q
IGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rl
c3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9iYWxP
YmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKTsKLSAgICAgICAgcHV0RGlyZWN0Q3VzdG9t
QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUs
IGN1c3RvbUdldHRlclNldHRlciwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShDdXN0b21BY2Nlc3Nv
cikpOwotICAgIH0KKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNz
b3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0
aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEN1c3RvbUdl
dHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
KSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShDdXN0b21BY2Nlc3NvcikpOwogI2VuZGlmCiAgICAg
cHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGVQ
cml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFs
T2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoRG9udERlbGV0ZSB8IFJlYWRPbmx5KSk7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKQEAgLTE3NCwyOSArMTcyLDI5IEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbigKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkp
Ci0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB2bS5wcm9wZXJ0eU5h
bWVzLT5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblB1YmxpY05h
bWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVu
Y3Rpb24pKTsKICNlbmRpZgogICAgIGlmICh3b3JsZEZvckRPTU9iamVjdCh0aGlzKS5zcGVjaWZp
Y1dvcmxkKCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB2bS5w
cm9wZXJ0eU5hbWVzLT5lbmFibGVkSW5TcGVjaWZpY1dvcmxkLCAxLCBqc1Rlc3RHbG9iYWxPYmpl
Y3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZCwgTm9JbnRyaW5zaWMsIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFB1YmxpY05h
bWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29ybGQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rp
b24pKTsKICAgICBpZiAoKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNwZWNpZmljV29ybGQoKSAm
JiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5h
YmxlZCgpKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZtLnBy
b3BlcnR5TmFtZXMtPmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVz
Rm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVFbmFibGVkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQsIE5vSW50
cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKICAgICBpZiAo
KHdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNwZWNpZmljV29ybGQoKSAmJiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxlZCgp
KSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZtLnByb3BlcnR5
TmFtZXMtPmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCwg
MSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29y
bGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JT
dHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlv
bih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNF
bmFibGVkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
RW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkLCBOb0ludHJp
bnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CiAjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0
YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RQcml2YXRlRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCAwLCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbiwgTm9J
bnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogI2VuZGlm
CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKLSAgICAgICAgcHV0RGly
ZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT50ZXN0SlNCdWls
dGluRnVuY3Rpb24sIHRlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluRnVuY3Rpb25Db2RlR2Vu
ZXJhdG9yKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkJ1aWx0aW4pKTsKKyAgICAg
ICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xp
ZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS50ZXN0SlNCdWlsdGluRnVu
Y3Rpb25QdWJsaWNOYW1lKCksIHRlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluRnVuY3Rpb25D
b2RlR2VuZXJhdG9yKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkJ1aWx0aW4pKTsK
ICNlbmRpZgogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpCi0gICAgICAg
IHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxj
dWxhdGVTZWNyZXRSZXN1bHQsIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25D
YWxjdWxhdGVTZWNyZXRSZXN1bHQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJl
KEpTQzo6RnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRo
aXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5O
YW1lcygpLmNhbGN1bGF0ZVNlY3JldFJlc3VsdFB1YmxpY05hbWUoKSwgMCwganNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCwgTm9JbnRyaW5zaWMs
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogICAgIGlmIChqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXRTZWNyZXRCb29sZWFuLCAwLCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbiwgTm9JbnRyaW5zaWMs
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZ2V0U2VjcmV0Qm9vbGVhblB1YmxpY05hbWUo
KSwgMCwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4s
IE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKICNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICgoanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJlQ29u
dGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZl
YXR1cmVFbmFibGVkKCkpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhp
cywgdm0ucHJvcGVydHlOYW1lcy0+dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuLCAwLCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFu
LCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7Cisg
ICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS50ZXN0RmVhdHVyZUdl
dFNlY3JldEJvb2xlYW5QdWJsaWNOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYgQEAK
ICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgi
CkBAIC03OSw3ICs3OCw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWls
dGluTmFtZXMuaD4KQEAgLTk5Nyw5ICs5OTUsNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0CiAjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0
aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJs
ZWRCeVNldHRpbmdPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLSNlbmRpZgogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2FsY3Vs
YXRlU2VjcmV0UmVzdWx0KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKEpT
Qzo6RXhlY1N0YXRlKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTExNzYsOCArMTE3
MSw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBz
ZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9vbCBz
ZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpFbnVt
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTEyNjUs
MTAgKzEyNTgsNiBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBi
b29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgotI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJs
ZWRCeVNldHRpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVl
LCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE9iakVuYWJsZWRCeVNldHRpbmdB
dHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlKTsKLSNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFy
cmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTE0MTMs
MzAgKzE0MDIsMjggQEAgdXNpbmcgSlNUZXN0T2JqQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cgog
CiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRl
eCBKU1Rlc3RPYmpUYWJsZUluZGV4WzE3XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFj
dEhhc2hJbmRleCBKU1Rlc3RPYmpUYWJsZUluZGV4WzE2XSA9IHsKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAtMSB9LAorICAgIHsgNCwgLTEgfSwKICAgICB7IC0x
LCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQsIC0xIH0s
CisgICAgeyAzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAogICAgIHsg
MSwgLTEgfSwKICAgICB7IDIsIC0xIH0sCi0gICAgeyAwLCAxNiB9LAogICAgIHsgLTEsIC0xIH0s
CiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAg
eyAtMSwgLTEgfSwKLSAgICB7IDMsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFi
bGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJUZXN0U3ViT2JqRW5h
YmxlZEJ5U2V0dGluZyIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialRlc3RTdWJPYmpFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAidW5mb3JnZWFibGVBdHRyIiwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01BdHRyaWJ1dGUsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0T2JqVW5mb3JnZWFibGVBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAg
IHsgImNvbmRpdGlvbmFsQXR0cjQiLCBEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5
U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0
b3IpIH0gfSwKQEAgLTE0NTYsNyArMTQ0Myw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RPYmpUYWIKICAgICB7ICJ1bmZvcmdlYWJsZU1ldGhvZCIsIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxl
TWV0aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZSBKU1Rlc3RPYmpUYWJsZSA9IHsgNiwgMTUsIHRydWUsIEpTVGVzdE9iajo6aW5mbygpLCBKU1Rl
c3RPYmpUYWJsZVZhbHVlcywgSlNUZXN0T2JqVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgNSwgMTUsIHRydWUsIEpTVGVzdE9iajo6aW5mbygp
LCBKU1Rlc3RPYmpUYWJsZVZhbHVlcywgSlNUZXN0T2JqVGFibGVJbmRleCB9OwogLyogSGFzaCB0
YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC0xNjA1LDExICsxNTkyLDYgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogI2Vsc2UKICAgICB7IDAs
IDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKLSAgICB7ICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0
ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUpIH0gfSwKLSNlbHNlCi0gICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKLSNlbmRpZgogICAgIHsgInR5cGVkQXJy
YXlBdHRyIiwgQ3VzdG9tQWNjZXNzb3IgfCBET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2Jq
VHlwZWRBcnJheUF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cikgfSB9LAogICAgIHsgImF0
dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb24iLCBDdXN0b21BY2Nlc3NvciB8IERPTUF0dHJpYnV0
ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jPihqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKSwgKGludHB0
cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0
T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbikgfSB9LAogICAgIHsgImF0dHJpYnV0ZVdp
dGhTZXR0ZXJFeGNlcHRpb24iLCBDdXN0b21BY2Nlc3NvciB8IERPTUF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqQXR0cmli
dXRlV2l0aFNldHRlckV4Y2VwdGlvbikgfSB9LApAQCAtMTcwMiwxMSArMTY4NCw2IEBAIHN0YXRp
YyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICNlbmRpZgogICAgIHsgImVuYWJs
ZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIndvcmxkU3BlY2lm
aWNNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVj
aWZpY01ldGhvZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJF
KQotICAgIHsgImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iLCBKU0M6OkZ1bmN0aW9uLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiksIChpbnRwdHJfdCkg
KDEpIH0gfSwKLSNlbHNlCi0gICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKLSNl
bmRpZgogICAgIHsgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQpLCAoaW50cHRyX3QpICgwKSB9
IH0sCiAgICAgeyAiZ2V0U2VjcmV0Qm9vbGVhbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCkBAIC0xOTYzLDIyICsxOTQwLDYgQEAgdm9pZCBKU1Rlc3RPYmpQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKAogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOwogICAgIH0KLSAgICBhdXRvKiBjb250ZXh0
ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci0gICAgQVNTRVJUKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzRG9jdW1l
bnQoKSk7Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIWNvbnRleHQgfHwgIWRv
d25jYXN0PERvY3VtZW50PigqY29udGV4dCkuc2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQo
KSkgewotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmco
JnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdPcGVy
YXRpb24iKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIikpOwotICAgICAgICBW
TTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0
eSh0aGlzLCBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOwotICAg
IH0KLSNlbmRpZgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKCFjb250ZXh0IHx8
ICFkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFi
bGVkKCkpIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5n
QXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKLSAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsK
LSAgICB9Ci0jZW5kaWYKICAgICBwdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnByaXZhdGVNZXRob2RQcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmco
KSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKSwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5wdWJsaWNBbmRQcml2YXRlTWV0aG9kUHJp
dmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3Ry
aW5nKCksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZCks
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvdHlwZSgpLT5nZXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZhdGVO
YW1lKCkpLCBEb250RW51bSk7CkBAIC0yMjUyLDM2ICsyMjEzLDYgQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uc3RydWN0b3JUZXN0UwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
T2JqPjo6Z2V0U3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iakdldHRlcj4oKnN0
YXRlLCB0aGlzVmFsdWUsICJUZXN0U3ViT2JqIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKLSAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCkp
KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBTZXR0aW5ncyYgc2V0dGluZ3Mg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpOwotICAgIGlmICghc2V0
dGluZ3MudGVzdFNldHRpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICAgIHJldHVybiBKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRlLnZtKCksIHRo
aXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpU
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3JHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmciKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialRlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQotewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAgIHJl
dHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nIiksIHN0cmxlbigiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmci
KSksIHZhbHVlKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
Q29uc3RydWN0b3JTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0
U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqRW51bUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTM1NjgsNDIgKzM0OTksNiBAQCBib29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1CiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuZW5hYmxlZEJ5
U2V0dGluZ0F0dHJpYnV0ZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1FbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRy
aWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCAiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpOwotfQotCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW5h
YmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCi17Ci0g
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0g
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZlVmFs
dWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEVuYWJsZWRCeVNldHRp
bmdBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIHNldEpTVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0
T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKTsKLX0KLQotI2VuZGlmCi0K
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTE5MywyNyArNTA4OCw2
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
b3JsZFNwZWNpZmljTWV0aG9kQm9keT4oKnN0YXRlLCAid29ybGRTcGVjaWZpY01ldGhvZCIpOwog
fQogCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRp
b25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7Ci0gICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmluZz4o
KnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5lbmFibGVkQnlT
ZXR0aW5nT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uQm9k
eT4oKnN0YXRlLCAiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpOwotfQotCi0jZW5kaWYKLQog
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319815</attachid>
            <date>2017-09-03 16:32:11 -0700</date>
            <delta_ts>2017-09-03 19:39:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176312-20170903163210.patch</filename>
            <type>text/plain</type>
            <size>91193</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dl
YklETF0gVW5pZnkgYW5kIHNpbXBsaWZ5IEVuYWJsZUJ5U2V0dGluZ3Mgd2l0aCB0aGUgcmVzdCBv
ZiB0aGUgcnVudGltZSBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2MzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisKKyAgICAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlIHNwZWNpZmljIGlkZW50aWZpZXJzIGZyb20gQ29tbW9uSWRlbnRp
ZmllcnMuIFRoZXkgaGF2ZSBiZWVuIG1vdmVkCisgICAgICAgICAgICB0byBXZWJDb3JlQnVpbHRp
bk5hbWVzIGluIFdlYkNvcmUuCisKIDIwMTctMDktMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNTU1LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCShyZXZpc2lvbiAyMjE1NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMjUgKzI2LDQxIEBACiAv
LyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRvIGEgbWFj
cm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKIC8vIHdheXMgd2l0aG91dCByZXBl
YXRpbmcgdGhlIGxpc3QuCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9Q
RVJUWV9OQU1FKG1hY3JvKSBcCi0gICAgbWFjcm8oQW5pbWF0aW9uKSBcCi0gICAgbWFjcm8oQW5p
bWF0aW9uRWZmZWN0UmVhZE9ubHkpIFwKLSAgICBtYWNybyhBbmltYXRpb25UaW1lbGluZSkgXAog
ICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhB
cnJheUl0ZXJhdG9yKSBcCi0gICAgbWFjcm8oQXVkaW8pIFwKICAgICBtYWNybyhCWVRFU19QRVJf
RUxFTUVOVCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKLSAgICBtYWNybyhDYWNoZSkgXAotICAg
IG1hY3JvKENhY2hlU3RvcmFnZSkgXAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8o
Q3JlZGVudGlhbCkgXAotICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCi0gICAgbWFj
cm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRGF0ZSkgXAogICAgIG1hY3Jv
KERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oRGF0YVRyYW5zZmVySXRlbSkgXAogICAgIG1h
Y3JvKERhdGFUcmFuc2Zlckl0ZW1MaXN0KSBcCi0gICAgbWFjcm8oRG9jdW1lbnRUaW1lbGluZSkg
XAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCi0gICAgbWFjcm8o
RmVkZXJhdGVkQ3JlZGVudGlhbCkgXAotICAgIG1hY3JvKEZpbGVTeXN0ZW0pIFwKLSAgICBtYWNy
byhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkpIFwKLSAgICBtYWNybyhGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyKSBcCi0gICAgbWFjcm8oRmlsZVN5c3RlbUVudHJ5KSBcCi0gICAgbWFjcm8oRmls
ZVN5c3RlbUZpbGVFbnRyeSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCi0gICAgbWFjcm8oR2Ft
ZXBhZCkgXAotICAgIG1hY3JvKEdhbWVwYWRCdXR0b24pIFwKLSAgICBtYWNybyhHYW1lcGFkRXZl
bnQpIFwKICAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAotICAgIG1hY3JvKEhlYWRlcnMp
IFwKLSAgICBtYWNybyhIVE1MQXVkaW9FbGVtZW50KSBcCi0gICAgbWFjcm8oSFRNTFNsb3RFbGVt
ZW50KSBcCi0gICAgbWFjcm8oSURCQ3Vyc29yKSBcCi0gICAgbWFjcm8oSURCQ3Vyc29yV2l0aFZh
bHVlKSBcCi0gICAgbWFjcm8oSURCRGF0YWJhc2UpIFwKLSAgICBtYWNybyhJREJGYWN0b3J5KSBc
Ci0gICAgbWFjcm8oSURCSW5kZXgpIFwKLSAgICBtYWNybyhJREJLZXlSYW5nZSkgXAotICAgIG1h
Y3JvKElEQk9iamVjdFN0b3JlKSBcCi0gICAgbWFjcm8oSURCT3BlbkRCUmVxdWVzdCkgXAotICAg
IG1hY3JvKElEQlJlcXVlc3QpIFwKLSAgICBtYWNybyhJREJUcmFuc2FjdGlvbikgXAotICAgIG1h
Y3JvKElEQlZlcnNpb25DaGFuZ2VFdmVudCkgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCi0gICAg
bWFjcm8oSW5wdXRFdmVudCkgXAotICAgIG1hY3JvKEludGVyc2VjdGlvbk9ic2VydmVyKSBcCi0g
ICAgbWFjcm8oSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkgXAogICAgIG1hY3JvKEludGwpIFwK
ICAgICBtYWNybyhKU09OKSBcCiAgICAgbWFjcm8oTG9hZGVyKSBcCiAgICAgbWFjcm8oTWFwKVwK
ICAgICBtYWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFjcm8oTWF0aCkgXAotICAgIG1hY3JvKE1l
ZGlhRW5jcnlwdGVkRXZlbnQpIFwKLSAgICBtYWNybyhNZWRpYUtleU1lc3NhZ2VFdmVudCkgXAot
ICAgIG1hY3JvKE1lZGlhS2V5U2Vzc2lvbikgXAotICAgIG1hY3JvKE1lZGlhS2V5U3RhdHVzTWFw
KSBcCi0gICAgbWFjcm8oTWVkaWFLZXlTeXN0ZW1BY2Nlc3MpIFwKLSAgICBtYWNybyhNZWRpYUtl
eXMpIFwKLSAgICBtYWNybyhXZWJLaXRNZWRpYUtleUVycm9yKSBcCi0gICAgbWFjcm8oV2ViS2l0
TWVkaWFLZXlOZWVkZWRFdmVudCkgXAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5U2Vzc2lvbikg
XAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5cykgXAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5
TWVzc2FnZUV2ZW50KSBcCi0gICAgbWFjcm8oTWVkaWFTdHJlYW1FdmVudCkgXAotICAgIG1hY3Jv
KE1vZGVybk1lZGlhQ29udHJvbHMpIFwKICAgICBtYWNybyhOYU4pIFwKLSAgICBtYWNybyhOYXZp
Z2F0b3JDcmVkZW50aWFscykgXAotICAgIG1hY3JvKE5hdmlnYXRvck1lZGlhRGV2aWNlcykgXAot
ICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAogICAgIG1hY3JvKE51bWJlcikgXAogICAg
IG1hY3JvKE51bWJlckZvcm1hdCkgXAogICAgIG1hY3JvKE9iamVjdCkgXAotICAgIG1hY3JvKFBh
c3N3b3JkQ3JlZGVudGlhbCkgXAotICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCi0gICAgbWFj
cm8oUGF5bWVudFJlcXVlc3QpIFwKLSAgICBtYWNybyhQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50
KSBcCi0gICAgbWFjcm8oUGF5bWVudFJlc3BvbnNlKSBcCi0gICAgbWFjcm8oUGVyZm9ybWFuY2VF
bnRyeSkgXAotICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnlMaXN0KSBcCi0gICAgbWFjcm8oUGVy
Zm9ybWFuY2VNYXJrKSBcCi0gICAgbWFjcm8oUGVyZm9ybWFuY2VNZWFzdXJlKSBcCi0gICAgbWFj
cm8oUGVyZm9ybWFuY2VPYnNlcnZlcikgXAotICAgIG1hY3JvKFBlcmZvcm1hbmNlT2JzZXJ2ZXJF
bnRyeUxpc3QpIFwKLSAgICBtYWNybyhQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKSBcCiAgICAg
bWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFByb3h5KSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJv
cikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAog
ICAgIG1hY3JvKFJlZ0V4cCkgXAotICAgIG1hY3JvKFJlcXVlc3QpIFwKLSAgICBtYWNybyhSZXNw
b25zZSkgXAotICAgIG1hY3JvKFJUQ0RhdGFDaGFubmVsKSBcCi0gICAgbWFjcm8oUlRDRGF0YUNo
YW5uZWxFdmVudCkgXAotICAgIG1hY3JvKFJUQ0RUTUZTZW5kZXIpIFwKLSAgICBtYWNybyhSVENE
VE1GVG9uZUNoYW5nZUV2ZW50KSBcCi0gICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCi0gICAg
bWFjcm8oUlRDSWNlVHJhbnNwb3J0KSBcCi0gICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb24pIFwK
LSAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAotICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAot
ICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCi0gICAgbWFjcm8oUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uKSBcCi0gICAgbWFjcm8oUlRDU3RhdHNSZXBvcnQpIFwKLSAgICBtYWNybyhSVENUcmFj
a0V2ZW50KSBcCi0gICAgbWFjcm8oU2VydmljZVdvcmtlcilcCi0gICAgbWFjcm8oU2VydmljZVdv
cmtlckNvbnRhaW5lcilcCi0gICAgbWFjcm8oU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKVwKLSAg
ICBtYWNybyhTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKVwKICAgICBtYWNybyhTZXQpXAogICAg
IG1hY3JvKFNldEl0ZXJhdG9yKVwKLSAgICBtYWNybyhTaGFkb3dSb290KSBcCiAgICAgbWFjcm8o
U2hhcmVkQXJyYXlCdWZmZXIpIFwKLSAgICBtYWNybyhTdGF0aWNSYW5nZSkgXAogICAgIG1hY3Jv
KFN0cmluZykgXAogICAgIG1hY3JvKFN5bWJvbCkgXAogICAgIG1hY3JvKFN5bnRheEVycm9yKSBc
CkBAIC0xNTMsMzIgKzY5LDYgQEAKICAgICBtYWNybyhVVEMpIFwKICAgICBtYWNybyhXZWFrTWFw
KVwKICAgICBtYWNybyhXZWFrU2V0KVwKLSAgICBtYWNybyhXZWJHTDJSZW5kZXJpbmdDb250ZXh0
KSBcCi0gICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgXAotICAgIG1hY3JvKFdlYkdQ
VUJ1ZmZlcikgXAotICAgIG1hY3JvKFdlYkdQVUNvbW1hbmRCdWZmZXIpIFwKLSAgICBtYWNybyhX
ZWJHUFVDb21tYW5kUXVldWUpIFwKLSAgICBtYWNybyhXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXIpIFwKLSAgICBtYWNybyhXZWJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSkgXAotICAgIG1hY3Jv
KFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IpIFwKLSAgICBtYWNybyhXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSkgXAotICAgIG1hY3JvKFdlYkdQVURyYXdhYmxlKSBcCi0gICAgbWFjcm8oV2Vi
R1BVRnVuY3Rpb24pIFwKLSAgICBtYWNybyhXZWJHUFVMaWJyYXJ5KSBcCi0gICAgbWFjcm8oV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcikgXAotICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKSBcCi0gICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
IFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpIFwKLSAgICBt
YWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKSBcCi0gICAgbWFjcm8oV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCkgXAotICAgIG1hY3JvKFdlYkdQVVNpemUpIFwKLSAgICBtYWNybyhXZWJHUFVU
ZXh0dXJlKSBcCi0gICAgbWFjcm8oV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IpIFwKLSAgICBtYWNy
byhXZWJTb2NrZXQpIFwKLSAgICBtYWNybyhXcml0YWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKF9f
ZGVmaW5lR2V0dGVyX18pIFwKICAgICBtYWNybyhfX2RlZmluZVNldHRlcl9fKSBcCiAgICAgbWFj
cm8oX19sb29rdXBHZXR0ZXJfXykgXApAQCAtMTkxLDcgKzgxLDYgQEAKICAgICBtYWNybyhhc3Np
Z24pIFwKICAgICBtYWNybyhiYWNrKSBcCiAgICAgbWFjcm8oYmluZCkgXAotICAgIG1hY3JvKGJs
dXIpIFwKICAgICBtYWNybyhidWZmZXIpIFwKICAgICBtYWNybyhieXRlTGVuZ3RoKSBcCiAgICAg
bWFjcm8oYnl0ZU9mZnNldCkgXApAQCAtMTk5LDE0ICs4OCwxMSBAQAogICAgIG1hY3JvKGJ5dGVj
b2RlSW5kZXgpIFwKICAgICBtYWNybyhieXRlY29kZXMpIFwKICAgICBtYWNybyhieXRlY29kZXNJ
RCkgXAotICAgIG1hY3JvKGNhY2hlcykgXAogICAgIG1hY3JvKGNhbGVuZGFyKSBcCiAgICAgbWFj
cm8oY2FsbGVlKSBcCiAgICAgbWFjcm8oY2FsbGVyKSBcCiAgICAgbWFjcm8oY2FzZUZpcnN0KSBc
CiAgICAgbWFjcm8oY2xlYXIpIFwKLSAgICBtYWNybyhjbG9zZSkgXAotICAgIG1hY3JvKGNsb3Nl
ZCkgXAogICAgIG1hY3JvKGNvbGxhdGlvbikgXAogICAgIG1hY3JvKGNvbHVtbikgXAogICAgIG1h
Y3JvKGNvbXBpbGF0aW9uS2luZCkgXApAQCAtMjE3LDE0ICsxMDMsMTIgQEAKICAgICBtYWNybyhj
b25zdHJ1Y3RvcikgXAogICAgIG1hY3JvKGNvdW50KSBcCiAgICAgbWFjcm8oY291bnRlcnMpIFwK
LSAgICBtYWNybyhjdXN0b21FbGVtZW50cykgXAogICAgIG1hY3JvKGRheSkgXAogICAgIG1hY3Jv
KGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhk
ZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhkZXRhaWwpIFwKICAgICBtYWNybyhkaXNwbGF5TmFt
ZSkgXAotICAgIG1hY3JvKGRvY3VtZW50KSBcCiAgICAgbWFjcm8oZG9uZSkgXAogICAgIG1hY3Jv
KGRvdEFsbCkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKQEAgLTIzNiwxMiArMTIwLDEwIEBA
CiAgICAgbWFjcm8oZXhpdEtpbmQpIFwKICAgICBtYWNybyhmZXRjaCkgXAogICAgIG1hY3JvKGZs
YWdzKSBcCi0gICAgbWFjcm8oZm9jdXMpIFwKICAgICBtYWNybyhmb3JFYWNoKSBcCiAgICAgbWFj
cm8oZm9ybWF0TWF0Y2hlcikgXAogICAgIG1hY3JvKGZvcm1hdFRvUGFydHMpIFwKICAgICBtYWNy
byhmb3J3YXJkKSBcCi0gICAgbWFjcm8oZnJhbWVzKSBcCiAgICAgbWFjcm8oZnJvbSkgXAogICAg
IG1hY3JvKGZyb21DaGFyQ29kZSkgXAogICAgIG1hY3JvKGdldCkgXApAQCAtMjU4LDI1ICsxNDAs
MjEgQEAKICAgICBtYWNybyhpZ25vcmVDYXNlKSBcCiAgICAgbWFjcm8oaWdub3JlUHVuY3R1YXRp
b24pIFwKICAgICBtYWNybyhpbmRleCkgXAotICAgIG1hY3JvKGluZGV4ZWREQikgXAogICAgIG1h
Y3JvKGluZmVycmVkTmFtZSkgXAogICAgIG1hY3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaW5zdHJ1
Y3Rpb25Db3VudCkgXAogICAgIG1hY3JvKGlzQXJyYXkpIFwKICAgICBtYWNybyhpc0VuYWJsZWQp
IFwKICAgICBtYWNybyhpc1Byb3RvdHlwZU9mKSBcCi0gICAgbWFjcm8oaXNTZWN1cmVDb250ZXh0
KSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCiAgICAgbWFjcm8oaXNXYXRjaHBvaW50KSBcCiAgICAg
bWFjcm8oamV0dGlzb25SZWFzb24pIFwKICAgICBtYWNybyhqb2luKSBcCi0gICAgbWFjcm8oS2V5
ZnJhbWVFZmZlY3QpIFwKICAgICBtYWNybyhsYXN0SW5kZXgpIFwKICAgICBtYWNybyhsZW5ndGgp
IFwKICAgICBtYWNybyhsaW5lKSBcCiAgICAgbWFjcm8obG9jYWxlKSBcCiAgICAgbWFjcm8obG9j
YWxlTWF0Y2hlcikgXAotICAgIG1hY3JvKGxvY2F0aW9uKSBcCiAgICAgbWFjcm8obWVzc2FnZSkg
XAogICAgIG1hY3JvKG1pbnV0ZSkgXAogICAgIG1hY3JvKG1vbnRoKSBcCkBAIC0yOTEsMTUgKzE2
OSwxMiBAQAogICAgIG1hY3JvKG51bWVyaWMpIFwKICAgICBtYWNybyhvZikgXAogICAgIG1hY3Jv
KG9wY29kZSkgXAotICAgIG1hY3JvKG9wZW5lcikgXAogICAgIG1hY3JvKG9yaWdpbikgXAogICAg
IG1hY3JvKG9zckV4aXRTaXRlcykgXAogICAgIG1hY3JvKG9zckV4aXRzKSBcCi0gICAgbWFjcm8o
cGFyZW50KSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwYXJzZUludCkgXAogICAg
IG1hY3JvKHBhcnNlRmxvYXQpIFwKLSAgICBtYWNybyhwb3N0TWVzc2FnZSkgXAogICAgIG1hY3Jv
KHByb2ZpbGVkQnl0ZWNvZGVzKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUpIFwK
ICAgICBtYWNybyhwcm90b3R5cGUpIFwKQEAgLTMwOCwxMCArMTgzLDggQEAKICAgICBtYWNybyhy
ZXBsYWNlKSBcCiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNlY29uZCkgXAotICAg
IG1hY3JvKHNlbGYpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkg
XAotICAgIG1hY3JvKHNob3dNb2RhbERpYWxvZykgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBt
YWNybyhzbGljZSkgXAogICAgIG1hY3JvKHNvdXJjZSkgXApAQCAtMzM1LDI2ICsyMDgsMTIgQEAK
ICAgICBtYWNybyh0b0xvY2FsZVN0cmluZykgXAogICAgIG1hY3JvKHRvUHJlY2lzaW9uKSBcCiAg
ICAgbWFjcm8odG9TdHJpbmcpIFwKLSAgICBtYWNybyh0b3ApIFwKICAgICBtYWNybyh1aWQpIFwK
ICAgICBtYWNybyh1bmljb2RlKSBcCiAgICAgbWFjcm8odXNhZ2UpIFwKICAgICBtYWNybyh2YWx1
ZSkgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKLSAgICBtYWNybyh3ZWJraXQpIFwKLSAgICBtYWNy
byhjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUpIFwKLSAgICBtYWNybyhtYXRjaGlu
Z0VsZW1lbnRJbkZsYXRUcmVlKSBcCi0gICAgbWFjcm8od2Via2l0SURCQ3Vyc29yKSBcCi0gICAg
bWFjcm8od2Via2l0SURCRGF0YWJhc2UpIFwKLSAgICBtYWNybyh3ZWJraXRJREJGYWN0b3J5KSBc
Ci0gICAgbWFjcm8od2Via2l0SURCSW5kZXgpIFwKLSAgICBtYWNybyh3ZWJraXRJREJLZXlSYW5n
ZSkgXAotICAgIG1hY3JvKHdlYmtpdElEQk9iamVjdFN0b3JlKSBcCi0gICAgbWFjcm8od2Via2l0
SURCUmVxdWVzdCkgXAotICAgIG1hY3JvKHdlYmtpdElEQlRyYW5zYWN0aW9uKSBcCi0gICAgbWFj
cm8od2Via2l0SW5kZXhlZERCKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAotICAgIG1hY3JvKHdp
bmRvdykgXAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikKIApJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTctMDktMDMgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbV2ViSURMXSBTaW1wbGlmeSBFbmFibGVkQnlTZXR0
aW5ncyBnZW5lcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzYzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
TmVlZHNSdW50aW1lQ2hlY2spOgorICAgICAgICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNl
KToKKyAgICAgICAgKEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZSk6CisgICAgICAgIChHZW5l
cmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyk6CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmlu
aXRpb24pOgorCisgICAgICAgICAgICAtIFNpbXBsaWZ5IHRoZSBbRW5hYmxlZEJ5U2V0dGluZ10g
Y29kZSBnZW5lcmF0aW9uIGJ5IG1lcmdpbmcgaXQgd2l0aCB0aGUgb3RoZXIKKyAgICAgICAgICAg
IHJ1bnRpbWUgY2hlY2tzIChFeHBvc2VkLCBFbmFibGVkQXRSdW50aW1lLCBFbmFibGVkRm9yV29y
bGQsIGFuZCBTZWN1cmVDb250ZXh0KS4KKworICAgICAgICAgICAgLSBTd2l0Y2hlcyB0byB1c2lu
ZyBXZWJDb3JlQnVpbHRpbk5hbWVzIGZvciBpZGVudGlmaWVycywgcmF0aGVyIHRoYW4gcmVseWlu
ZworICAgICAgICAgICAgb24gdGhlIGFwcHJvcHJpYXRlIGlkZW50aWZpZXJzIGJlaW5nIGF2YWls
YWJsZSBvbiBKYXZhU2NyaXB0Q29yZSdzIENvbW1vbklkZW50aWZpZXJzCisgICAgICAgICAgICB3
aGljaCB3YXMgYW4gdW5uZWNlc3NhcnkgbGF5ZXJpbmcgdmlvbGF0aW9uLiBUaGVyZSBhcmUgc3Rp
bGwgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICBhcyB3ZSBjb250aW51ZSB0byBiZSBp
bmNvbnNpc3RlbnQgIGFib3V0IHdoaWNoIGlkZW50aWZpZXJzIGRlc2VydmUgdG8gYmUgaW4gCisg
ICAgICAgICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzLCBhbmQgd2hpY2ggb25lcyBjYW4gYmUgY3Jl
YXRlZCBlYWNoIHRpbWUgYW5kIHRoZXJlIGlzIG5vCisgICAgICAgICAgICBhdXRvbWF0aW9uIG9m
IFdlYkNvcmVCdWlsdGluTmFtZXMgZnJvbSB0aGUgSURMcy4KKworICAgICAgICAgICAgLSBFbmZv
cmNlIGF0IGNvZGUgZ2VuZXJhdGlvbiB0aW1lIHRoYXQgW0VuYWJsZWRCeVNldHRpbmddIGNhbiBv
bmx5IGJlIHVzZWQKKyAgICAgICAgICAgIG9uIGludGVyZmFjZXMgdGhhdCBhcmUgdW5pcXVlbHkg
ZXhwb3NlZCB0byB0aGUgd2luZG93IGVudmlyb25tZW50LiBUaGlzIGlzIGEKKyAgICAgICAgICAg
IGNvbmRpdGlvbiB3ZSBzaG91bGQgZmluZCBhIHdheSB0byByZW1vdmUgKGUuZy4gcHJvcGFnYXRp
bmcgbmVjZXNzYXJ5IHNldHRpbmdzIAorICAgICAgICAgICAgdG8gYW4gb2JqZWN0IHRoZSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IG93bnMpLCBidXQgZm9yIG5vdywgU2V0dGluZ3MgaXMgYSBtYWlu
CisgICAgICAgICAgICB0aHJlYWQgb25seSBvYmplY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0dl
dE93blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZENyb3NzT3JpZ2luV2luZG93UHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjphZGRDcm9zc09yaWdpbldpbmRvd093blByb3Bl
cnR5TmFtZXMpOgorCisgICAgICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgV2ViQ29yZUJ1aWx0aW5O
YW1lcyBmb3IgV2ViQ29yZSBzcGVjaWZpYyBpZGVudGlmaWVycy4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKworICAgICAgICAgICAgQWRkIFdlYkNvcmUg
c3BlY2lmaWMgaWRlbnRpZmllcnMgZnJvbSBKYXZhU2NyaXB0Q29yZSdzIENvbW1vbklkZW50aWZp
ZXJzCisgICAgICAgICAgICBhcyB3ZWxsIGFzIHNvbWUgbmV3IG9uZXMgbmVlZCBieSB0aGUgW0Vu
YWJsZUJ5U2V0dGluZ10gdW5pZmljYXRpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW5hYmxlZEJ5U2V0dGluZy5pZGw6
IEFkZGVkLgorCisgICAgICAgICAgICBBZGQgbmV3IHRlc3QgZm9yIFtFbmFibGVkQnlTZXR0aW5n
XS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKworICAgICAg
ICAgICAgUmVtb3ZlIHVzZSBvZiBbRW5hYmxlZEJ5U2V0dGluZ10gZnJvbSBUZXN0T2JqLCBhcyBp
dCBpcyBubyBsb25nZXIKKyAgICAgICAgICAgIHZhbGlkIHRvIHVzZSBbRW5hYmxlZEJ5U2V0dGlu
Z10gb24gaW50ZXJmYWNlcyB0aGF0IGFyZSBubyB1bmlxdWVseQorICAgICAgICAgICAgZXhwb3Nl
ZCB0byB0aGUgd2luZG93IGVudmlyb25tZW50LgorCiAyMDE3LTA5LTAzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBnZXRGaWxlTWV0YWRhdGEoKSByZXR1
cm4gYSBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDIyMTU1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxydW50aW1l
L0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL0xvb2t1cC5oPgogCkBAIC04MiwxNiAr
ODMsMTggQEAgc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNsbwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCisgICAgYXV0byYgYnVpbHRpbk5hbWVzID0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCk7CisKICAgICAvLyBXZSBkb24ndCB3
YW50IGFueSBwcm9wZXJ0aWVzIG90aGVyIHRoYW4gImNsb3NlIiBhbmQgImNsb3NlZCIgb24gYSBm
cmFtZWxlc3Mgd2luZG93CiAgICAgLy8gKGkuZS4gb25lIHdob3NlIHBhZ2UgZ290IGNsb3NlZCwg
b3Igd2hvc2UgaWZyYW1lIGdvdCByZW1vdmVkKS4KICAgICAvLyBGSVhNRTogVGhpcyBoYW5kbGlu
ZyBmb3IgZnJhbWVsZXNzIHdpbmRvd3MgZHVwbGljYXRlcyBzaW1pbGFyIGJlaGF2aW91ciBmb3Ig
Y3Jvc3Mtb3JpZ2luCiAgICAgLy8gYWNjZXNzIGJlbG93OyB3ZSBzaG91bGQgdHJ5IHRvIGZpbmQg
YSB3YXkgdG8gbWVyZ2UgdGhlIHR3by4KICAgICBpZiAoIWZyYW1lKSB7Ci0gICAgICAgIGlmIChw
cm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsb3NlZCkgeworICAgICAgICBp
ZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5jbG9zZWRQdWJsaWNOYW1lKCkpIHsKICAg
ICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSwganNET01XaW5kb3dDbG9zZWQpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2xv
c2UpIHsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VQdWJs
aWNOYW1lKCkpIHsKICAgICAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2lu
ZG93SW5zdGFuY2VGdW5jdGlvbkNsb3NlLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQpAQCAtMTEwLDE5ICsxMTMsMTkgQEAgc3RhdGljIGJvb2wganNET01XaW5kb3dH
ZXRPd25Qcm9wZXJ0eVNsbwogCiAgICAgLy8gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgd2UgYWxs
b3cgYWNjZXNzIHRvIGNyb3NzLW9yaWdpbiAoRG9Ob3RDaGVja1NlY3VyaXR5IGluIElETCkuCiAg
ICAgLy8gQWx3YXlzIHByb3ZpZGUgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uLCBvbiBhIGZyZXNoIHVu
Y2FjaGVkIGZ1bmN0aW9uIG9iamVjdC4KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5ibHVyKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFt
ZXMuYmx1clB1YmxpY05hbWUoKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0
LCBSZWFkT25seSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2luZG93SW5z
dGFuY2VGdW5jdGlvbkJsdXIsIDA+KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsb3NlKSB7CisgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VQdWJsaWNOYW1lKCkpIHsKICAg
ICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUmVhZE9ubHksIG5vbkNhY2hpbmdTdGF0
aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRvd0luc3RhbmNlRnVuY3Rpb25DbG9zZSwgMD4pOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuZm9jdXMpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0
aW5OYW1lcy5mb2N1c1B1YmxpY05hbWUoKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlz
T2JqZWN0LCBSZWFkT25seSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2lu
ZG93SW5zdGFuY2VGdW5jdGlvbkZvY3VzLCAwPik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wb3N0TWVz
c2FnZSkgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBvc3RNZXNzYWdl
UHVibGljTmFtZSgpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRP
bmx5LCBub25DYWNoaW5nU3RhdGljRnVuY3Rpb25HZXR0ZXI8anNET01XaW5kb3dJbnN0YW5jZUZ1
bmN0aW9uUG9zdE1lc3NhZ2UsIDI+KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MTMyLDE2ICsxMzUsMTYgQEAgc3RhdGljIGJvb2wganNET01XaW5kb3dHZXRPd25Qcm9wZXJ0eVNs
bwogICAgIC8vIGJlaGF2aW9yLgogICAgIGlmIChhdXRvKiBlbnRyeSA9IEpTRE9NV2luZG93Ojpp
bmZvKCktPnN0YXRpY1Byb3BIYXNoVGFibGUtPmVudHJ5KHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgLy8gT25seSBhbGxvdyBhY2Nlc3MgdG8gdGhlc2Ugc3BlY2lmaWMgcHJvcGVydGllcy4KLSAg
ICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubG9jYXRpb24K
LSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2xv
c2VkCisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmxvY2F0aW9uUHVi
bGljTmFtZSgpCisgICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNs
b3NlZFB1YmxpY05hbWUoKQogICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkuc2VsZgotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS53aW5kb3cKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9
PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuZnJhbWVzCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLm9wZW5lcgotICAgICAgICAgICAgfHwgcHJvcGVy
dHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJlbnQKLSAgICAgICAgICAgIHx8IHBy
b3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9wKSB7Ci0gICAgICAgICAgICBi
b29sIHNob3VsZEV4cG9zZVNldHRlciA9IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkubG9jYXRpb247CisgICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5h
bWVzLnNlbGZQdWJsaWNOYW1lKCkKKyAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBidWls
dGluTmFtZXMud2luZG93UHVibGljTmFtZSgpCisgICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUg
PT0gYnVpbHRpbk5hbWVzLmZyYW1lc1B1YmxpY05hbWUoKQorICAgICAgICAgICAgfHwgcHJvcGVy
dHlOYW1lID09IGJ1aWx0aW5OYW1lcy5vcGVuZXJQdWJsaWNOYW1lKCkKKyAgICAgICAgICAgIHx8
IHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMucGFyZW50UHVibGljTmFtZSgpCisgICAgICAg
ICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnRvcFB1YmxpY05hbWUoKSkgewor
ICAgICAgICAgICAgYm9vbCBzaG91bGRFeHBvc2VTZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gYnVp
bHRpbk5hbWVzLmxvY2F0aW9uUHVibGljTmFtZSgpOwogICAgICAgICAgICAgQ3VzdG9tR2V0dGVy
U2V0dGVyKiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2
bSwgZW50cnktPnByb3BlcnR5R2V0dGVyKCksIHNob3VsZEV4cG9zZVNldHRlciA/IGVudHJ5LT5w
cm9wZXJ0eVB1dHRlcigpIDogbnVsbHB0cik7CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbUdl
dHRlclNldHRlcih0aGlzT2JqZWN0LCBDdXN0b21BY2Nlc3NvciwgY3VzdG9tR2V0dGVyU2V0dGVy
KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTk2LDcgKzE5OSw3IEBAIGJvb2wgSlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU08KICAgICBQcm9wZXJ0eVNsb3Qgc2xvdENv
cHkgPSBzbG90OwogICAgIGlmIChCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
c3RhdGUsIHByb3BlcnR5TmFtZSwgc2xvdCkpIHsKICAgICAgICAgLy8gRGV0ZWN0IHdoZW4gd2Un
cmUgZ2V0dGluZyB0aGUgcHJvcGVydHkgJ3Nob3dNb2RhbERpYWxvZycsIHRoaXMgaXMgZGlzYWJs
ZWQsIGFuZCBoYXMgaXRzIG9yaWdpbmFsIHZhbHVlLgotICAgICAgICBib29sIGlzU2hvd01vZGFs
RGlhbG9nQW5kU2hvdWxkSGlkZSA9IHByb3BlcnR5TmFtZSA9PSBzdGF0ZS0+cHJvcGVydHlOYW1l
cygpLnNob3dNb2RhbERpYWxvZworICAgICAgICBib29sIGlzU2hvd01vZGFsRGlhbG9nQW5kU2hv
dWxkSGlkZSA9IHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHN0
YXRlLT52bSgpLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zaG93TW9kYWxEaWFsb2dQdWJs
aWNOYW1lKCkKICAgICAgICAgICAgICYmICFET01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZygq
ZnJhbWUpCiAgICAgICAgICAgICAmJiBzbG90LmlzVmFsdWUoKSAmJiBpc0hvc3RGdW5jdGlvbihz
bG90LmdldFZhbHVlKHN0YXRlLCBwcm9wZXJ0eU5hbWUpLCBqc0RPTVdpbmRvd0luc3RhbmNlRnVu
Y3Rpb25TaG93TW9kYWxEaWFsb2cpOwogICAgICAgICAvLyBVbmxlc3Mgd2UncmUgaW4gdGhlIHNo
b3dNb2RhbERpYWxvZyBzcGVjaWFsIGNhc2UsIHdlJ3JlIGRvbmUuCkBAIC0yMDYsNyArMjA5LDcg
QEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTTwogICAgIH0KIAogI2lm
IEVOQUJMRShVU0VSX01FU1NBR0VfSEFORExFUlMpCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBz
dGF0ZS0+cHJvcGVydHlOYW1lcygpLndlYmtpdCAmJiB0aGlzT2JqZWN0LT53cmFwcGVkKCkuc2hv
dWxkSGF2ZVdlYktpdE5hbWVzcGFjZUZvcldvcmxkKHRoaXNPYmplY3QtPndvcmxkKCkpKSB7Cisg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHN0YXRl
LT52bSgpLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS53ZWJraXRQdWJsaWNOYW1lKCkgJiYg
dGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3VsZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0
aGlzT2JqZWN0LT53b3JsZCgpKSkgewogICAgICAgICBzbG90LnNldENhY2hlYWJsZUN1c3RvbSh0
aGlzT2JqZWN0LCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzRE9NV2luZG93V2ViS2l0KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMjU1LDcgKzI1OCw3IEBAIGJvb2wgSlNET01X
aW5kb3c6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWMKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwog
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCpz
dGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLCBlcnJvck1lc3NhZ2UpKSB7CiAgICAgICAgIC8v
IFdlIG9ubHkgYWxsb3cgc2V0dGluZyAibG9jYXRpb24iIGF0dHJpYnV0ZSBjcm9zcy1vcmlnaW4u
Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5sb2Nh
dGlvbikgeworICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGljTmFt
ZSgpKSB7CiAgICAgICAgICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwogICAgICAgICAgICAg
aWYgKGxvb2t1cFB1dChzdGF0ZSwgcHJvcGVydHlOYW1lLCB0aGlzT2JqZWN0LCB2YWx1ZSwgKnNf
aW5mby5zdGF0aWNQcm9wSGFzaFRhYmxlLCBzbG90LCBwdXRSZXN1bHQpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBwdXRSZXN1bHQ7CkBAIC0yOTYsMTQgKzI5OSwyMiBAQCBib29sIEpTRE9NV2lu
ZG93OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgoCiB9CiAKIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvI2Nyb3Nzb3JpZ2lucHJvcGVydGllcy0oLW8tKQotc3RhdGljIHZvaWQgYWRkQ3Jv
c3NPcmlnaW5XaW5kb3dQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSYgc3RhdGUsIFByb3BlcnR5TmFt
ZUFycmF5JiBwcm9wZXJ0eU5hbWVzKQorc3RhdGljIHZvaWQgYWRkQ3Jvc3NPcmlnaW5XaW5kb3dQ
cm9wZXJ0eU5hbWVzKFZNJiB2bSwgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMpCiB7
CiAgICAgc3RhdGljIGNvbnN0IElkZW50aWZpZXIqIGNvbnN0IHByb3BlcnRpZXNbXSA9IHsKLSAg
ICAgICAgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5ibHVyLCAmc3RhdGUucHJvcGVydHlOYW1lcygp
LmNsb3NlLCAmc3RhdGUucHJvcGVydHlOYW1lcygpLmNsb3NlZCwKLSAgICAgICAgJnN0YXRlLnBy
b3BlcnR5TmFtZXMoKS5mb2N1cywgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5mcmFtZXMsICZzdGF0
ZS5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLAotICAgICAgICAmc3RhdGUucHJvcGVydHlOYW1lcygp
LmxvY2F0aW9uLCAmc3RhdGUucHJvcGVydHlOYW1lcygpLm9wZW5lciwgJnN0YXRlLnByb3BlcnR5
TmFtZXMoKS5wYXJlbnQsCi0gICAgICAgICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkucG9zdE1lc3Nh
Z2UsICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkuc2VsZiwgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS50
b3AsCi0gICAgICAgICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkud2luZG93CisgICAgICAgICZzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5i
bHVyUHVibGljTmFtZSgpLAorICAgICAgICAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuY2xvc2VQdWJsaWNOYW1lKCksCisgICAgICAg
ICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFt
ZXMoKS5jbG9zZWRQdWJsaWNOYW1lKCksCisgICAgICAgICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5mb2N1c1B1YmxpY05hbWUoKSwK
KyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLmZyYW1lc1B1YmxpY05hbWUoKSwKKyAgICAgICAgJnZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwKKyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmxvY2F0aW9uUHVibGljTmFtZSgpLAorICAgICAgICAm
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkub3BlbmVyUHVibGljTmFtZSgpLAorICAgICAgICAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucGFyZW50UHVibGljTmFtZSgpLAor
ICAgICAgICAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVp
bHRpbk5hbWVzKCkucG9zdE1lc3NhZ2VQdWJsaWNOYW1lKCksCisgICAgICAgICZzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5zZWxmUHVi
bGljTmFtZSgpLAorICAgICAgICAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkudG9wUHVibGljTmFtZSgpLAorICAgICAgICAmc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkud2lu
ZG93UHVibGljTmFtZSgpCiAgICAgfTsKICAgICBmb3IgKGF1dG8qIHByb3BlcnR5IDogcHJvcGVy
dGllcykKICAgICAgICAgcHJvcGVydHlOYW1lcy5hZGQoKnByb3BlcnR5KTsKQEAgLTMyNyw3ICsz
MzgsNyBAQCBzdGF0aWMgdm9pZCBhZGRTY29wZWRDaGlsZHJlbkluZGV4ZXMoRXhlCiAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNjcm9zc29yaWdpbm93bnByb3BlcnR5a2V5cy0oLW8t
KQogc3RhdGljIHZvaWQgYWRkQ3Jvc3NPcmlnaW5XaW5kb3dPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNT
dGF0ZSYgc3RhdGUsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzKQogewotICAgIGFk
ZENyb3NzT3JpZ2luV2luZG93UHJvcGVydHlOYW1lcyhzdGF0ZSwgcHJvcGVydHlOYW1lcyk7Cisg
ICAgYWRkQ3Jvc3NPcmlnaW5XaW5kb3dQcm9wZXJ0eU5hbWVzKHN0YXRlLnZtKCksIHByb3BlcnR5
TmFtZXMpOwogCiAgICAgcHJvcGVydHlOYW1lcy5hZGQoc3RhdGUucHJvcGVydHlOYW1lcygpLnRv
U3RyaW5nVGFnU3ltYm9sKTsKICAgICBwcm9wZXJ0eU5hbWVzLmFkZChzdGF0ZS5wcm9wZXJ0eU5h
bWVzKCkuaGFzSW5zdGFuY2VTeW1ib2wpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAkocmV2aXNpb24gMjIxNTU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3MSArMzAsMjE2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotI2RlZmlu
ZSBXRUJDT1JFX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRSht
YWNybylcCisjZGVmaW5lIFdFQkNPUkVfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9Q
Uk9QRVJUWV9OQU1FKG1hY3JvKSBcCisgICAgbWFjcm8oQW5pbWF0aW9uKSBcCisgICAgbWFjcm8o
QW5pbWF0aW9uRWZmZWN0UmVhZE9ubHkpIFwKKyAgICBtYWNybyhBbmltYXRpb25UaW1lbGluZSkg
XAorICAgIG1hY3JvKEFwcGxlUGF5U2Vzc2lvbikgXAorICAgIG1hY3JvKEF1ZGlvKSBcCisgICAg
bWFjcm8oQ2FjaGUpIFwKKyAgICBtYWNybyhDYWNoZVN0b3JhZ2UpIFwKKyAgICBtYWNybyhDcmVk
ZW50aWFsKSBcCisgICAgbWFjcm8oQ3JlZGVudGlhbHNDb250YWluZXIpIFwKKyAgICBtYWNybyhD
dXN0b21FbGVtZW50UmVnaXN0cnkpIFwKKyAgICBtYWNybyhEYXRhVHJhbnNmZXJJdGVtKSBcCisg
ICAgbWFjcm8oRGF0YVRyYW5zZmVySXRlbUxpc3QpIFwKKyAgICBtYWNybyhEb2N1bWVudFRpbWVs
aW5lKSBcCisgICAgbWFjcm8oRmVkZXJhdGVkQ3JlZGVudGlhbCkgXAorICAgIG1hY3JvKEZpbGVT
eXN0ZW0pIFwKKyAgICBtYWNybyhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkpIFwKKyAgICBtYWNy
byhGaWxlU3lzdGVtRGlyZWN0b3J5UmVhZGVyKSBcCisgICAgbWFjcm8oRmlsZVN5c3RlbUVudHJ5
KSBcCisgICAgbWFjcm8oRmlsZVN5c3RlbUZpbGVFbnRyeSkgXAorICAgIG1hY3JvKEdhbWVwYWQp
IFwKKyAgICBtYWNybyhHYW1lcGFkQnV0dG9uKSBcCisgICAgbWFjcm8oR2FtZXBhZEV2ZW50KSBc
CisgICAgbWFjcm8oSFRNTEF1ZGlvRWxlbWVudCkgXAorICAgIG1hY3JvKEhUTUxTbG90RWxlbWVu
dCkgXAorICAgIG1hY3JvKEhlYWRlcnMpIFwKKyAgICBtYWNybyhJREJDdXJzb3IpIFwKKyAgICBt
YWNybyhJREJDdXJzb3JXaXRoVmFsdWUpIFwKKyAgICBtYWNybyhJREJEYXRhYmFzZSkgXAorICAg
IG1hY3JvKElEQkZhY3RvcnkpIFwKKyAgICBtYWNybyhJREJJbmRleCkgXAorICAgIG1hY3JvKElE
QktleVJhbmdlKSBcCisgICAgbWFjcm8oSURCT2JqZWN0U3RvcmUpIFwKKyAgICBtYWNybyhJREJP
cGVuREJSZXF1ZXN0KSBcCisgICAgbWFjcm8oSURCUmVxdWVzdCkgXAorICAgIG1hY3JvKElEQlRy
YW5zYWN0aW9uKSBcCisgICAgbWFjcm8oSURCVmVyc2lvbkNoYW5nZUV2ZW50KSBcCisgICAgbWFj
cm8oSW5wdXRFdmVudCkgXAorICAgIG1hY3JvKEludGVyc2VjdGlvbk9ic2VydmVyKSBcCisgICAg
bWFjcm8oSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkgXAorICAgIG1hY3JvKEtleWZyYW1lRWZm
ZWN0KSBcCisgICAgbWFjcm8oTWVkaWFFbmNyeXB0ZWRFdmVudCkgXAorICAgIG1hY3JvKE1lZGlh
S2V5TWVzc2FnZUV2ZW50KSBcCisgICAgbWFjcm8oTWVkaWFLZXlTZXNzaW9uKSBcCisgICAgbWFj
cm8oTWVkaWFLZXlTdGF0dXNNYXApIFwKKyAgICBtYWNybyhNZWRpYUtleVN5c3RlbUFjY2Vzcykg
XAorICAgIG1hY3JvKE1lZGlhS2V5cykgXAorICAgIG1hY3JvKE1lZGlhU291cmNlKSBcCisgICAg
bWFjcm8oTWVkaWFTdHJlYW0pIFwKKyAgICBtYWNybyhNZWRpYVN0cmVhbUV2ZW50KSBcCisgICAg
bWFjcm8oTWVkaWFTdHJlYW1UcmFjaykgXAorICAgIG1hY3JvKE1vZGVybk1lZGlhQ29udHJvbHMp
IFwKKyAgICBtYWNybyhOYXZpZ2F0b3JDcmVkZW50aWFscykgXAorICAgIG1hY3JvKE5hdmlnYXRv
ck1lZGlhRGV2aWNlcykgXAorICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAorICAgIG1h
Y3JvKFBhc3N3b3JkQ3JlZGVudGlhbCkgXAorICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCisg
ICAgbWFjcm8oUGF5bWVudFJlcXVlc3QpIFwKKyAgICBtYWNybyhQYXltZW50UmVxdWVzdFVwZGF0
ZUV2ZW50KSBcCisgICAgbWFjcm8oUGF5bWVudFJlc3BvbnNlKSBcCisgICAgbWFjcm8oUGVyZm9y
bWFuY2VFbnRyeSkgXAorICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnlMaXN0KSBcCisgICAgbWFj
cm8oUGVyZm9ybWFuY2VNYXJrKSBcCisgICAgbWFjcm8oUGVyZm9ybWFuY2VNZWFzdXJlKSBcCisg
ICAgbWFjcm8oUGVyZm9ybWFuY2VPYnNlcnZlcikgXAorICAgIG1hY3JvKFBlcmZvcm1hbmNlT2Jz
ZXJ2ZXJFbnRyeUxpc3QpIFwKKyAgICBtYWNybyhQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKSBc
CisgICAgbWFjcm8oUlRDRFRNRlNlbmRlcikgXAorICAgIG1hY3JvKFJUQ0RUTUZUb25lQ2hhbmdl
RXZlbnQpIFwKKyAgICBtYWNybyhSVENEYXRhQ2hhbm5lbCkgXAorICAgIG1hY3JvKFJUQ0RhdGFD
aGFubmVsRXZlbnQpIFwKKyAgICBtYWNybyhSVENJY2VDYW5kaWRhdGUpIFwKKyAgICBtYWNybyhS
VENJY2VUcmFuc3BvcnQpIFwKKyAgICBtYWNybyhSVENQZWVyQ29ubmVjdGlvbikgXAorICAgIG1h
Y3JvKFJUQ1J0cFJlY2VpdmVyKSBcCisgICAgbWFjcm8oUlRDUnRwU2VuZGVyKSBcCisgICAgbWFj
cm8oUlRDUnRwVHJhbnNjZWl2ZXIpIFwKKyAgICBtYWNybyhSVENTZXNzaW9uRGVzY3JpcHRpb24p
IFwKKyAgICBtYWNybyhSVENTdGF0c1JlcG9ydCkgXAorICAgIG1hY3JvKFJUQ1RyYWNrRXZlbnQp
IFwKKyAgICBtYWNybyhSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyKSBcCisgICAgbWFjcm8o
UmVhZGFibGVTdHJlYW0pIFwKKyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIpIFwK
KyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0KSBcCisgICAgbWFjcm8oUmVhZGFi
bGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcikgXAorICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtRGVm
YXVsdFJlYWRlcikgXAorICAgIG1hY3JvKFJlcXVlc3QpIFwKKyAgICBtYWNybyhSZXNwb25zZSkg
XAorICAgIG1hY3JvKFNlcnZpY2VXb3JrZXIpIFwKKyAgICBtYWNybyhTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyKSBcCisgICAgbWFjcm8oU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKSBcCisgICAgbWFj
cm8oU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbikgXAorICAgIG1hY3JvKFNoYWRvd1Jvb3QpIFwK
KyAgICBtYWNybyhTdGF0aWNSYW5nZSkgXAorICAgIG1hY3JvKFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQpIFwKKyAgICBtYWNybyhXZWJHTFZlcnRleEFycmF5T2JqZWN0KSBcCisgICAgbWFjcm8oV2Vi
R1BVQnVmZmVyKSBcCisgICAgbWFjcm8oV2ViR1BVQ29tbWFuZEJ1ZmZlcikgXAorICAgIG1hY3Jv
KFdlYkdQVUNvbW1hbmRRdWV1ZSkgXAorICAgIG1hY3JvKFdlYkdQVUNvbXB1dGVDb21tYW5kRW5j
b2RlcikgXAorICAgIG1hY3JvKFdlYkdQVUNvbXB1dGVQaXBlbGluZVN0YXRlKSBcCisgICAgbWFj
cm8oV2ViR1BVRGVwdGhTdGVuY2lsRGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVURlcHRo
U3RlbmNpbFN0YXRlKSBcCisgICAgbWFjcm8oV2ViR1BVRHJhd2FibGUpIFwKKyAgICBtYWNybyhX
ZWJHUFVGdW5jdGlvbikgXAorICAgIG1hY3JvKFdlYkdQVUxpYnJhcnkpIFwKKyAgICBtYWNybyhX
ZWJHUFVSZW5kZXJDb21tYW5kRW5jb2RlcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NB
dHRhY2htZW50RGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NDb2xvckF0
dGFjaG1lbnREZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0RlcHRoQXR0
YWNobWVudERlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzRGVzY3JpcHRv
cikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBpcGVsaW5lQ29sb3JBdHRhY2htZW50RGVzY3Jp
cHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBpcGVsaW5lRGVzY3JpcHRvcikgXAorICAg
IG1hY3JvKFdlYkdQVVJlbmRlclBpcGVsaW5lU3RhdGUpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5k
ZXJpbmdDb250ZXh0KSBcCisgICAgbWFjcm8oV2ViR1BVU2l6ZSkgXAorICAgIG1hY3JvKFdlYkdQ
VVRleHR1cmUpIFwKKyAgICBtYWNybyhXZWJHUFVUZXh0dXJlRGVzY3JpcHRvcikgXAorICAgIG1h
Y3JvKFdlYktpdE1lZGlhS2V5RXJyb3IpIFwKKyAgICBtYWNybyhXZWJLaXRNZWRpYUtleU1lc3Nh
Z2VFdmVudCkgXAorICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5TmVlZGVkRXZlbnQpIFwKKyAgICBt
YWNybyhXZWJLaXRNZWRpYUtleVNlc3Npb24pIFwKKyAgICBtYWNybyhXZWJLaXRNZWRpYUtleXMp
IFwKKyAgICBtYWNybyhXZWJTb2NrZXQpIFwKKyAgICBtYWNybyhXcml0YWJsZVN0cmVhbSkgXAor
ICAgIG1hY3JvKFhNTEh0dHBSZXF1ZXN0KSBcCiAgICAgbWFjcm8oYWRkVHJhY2spIFwKICAgICBt
YWNybyhhcHBlbmRGcm9tSlMpIFwKICAgICBtYWNybyhhc3NvY2lhdGVkUmVhZGFibGVCeXRlU3Ry
ZWFtQ29udHJvbGxlcikgXAogICAgIG1hY3JvKGF1dG9BbGxvY2F0ZUNodW5rU2l6ZSkgXAogICAg
IG1hY3JvKGJhY2tpbmdNYXApIFwKKyAgICBtYWNybyhibHVyKSBcCiAgICAgbWFjcm8oYm9keSkg
XAogICAgIG1hY3JvKGJ5b2JSZXF1ZXN0KSBcCisgICAgbWFjcm8oY2FjaGVzKSBcCiAgICAgbWFj
cm8oY2FuY2VsKSBcCiAgICAgbWFjcm8oY2xvbmVBcnJheUJ1ZmZlcikgXAogICAgIG1hY3JvKGNs
b25lRm9ySlMpIFwKKyAgICBtYWNybyhjbG9zZSkgXAogICAgIG1hY3JvKGNsb3NlUmVxdWVzdGVk
KSBcCisgICAgbWFjcm8oY2xvc2VkKSBcCiAgICAgbWFjcm8oY2xvc2VkUHJvbWlzZUNhcGFiaWxp
dHkpIFwKKyAgICBtYWNybyhjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUpIFwKICAg
ICBtYWNybyhjb25zdW1lKSBcCiAgICAgbWFjcm8oY29uc3VtZUNodW5rKSBcCiAgICAgbWFjcm8o
Y29udHJvbGxlZFJlYWRhYmxlU3RyZWFtKSBcCiAgICAgbWFjcm8oY29udHJvbGxlcikgXAogICAg
IG1hY3JvKGNyZWF0ZVJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oY3VzdG9tRWxlbWVudHMp
IFwKICAgICBtYWNybyhkaXN0dXJiZWQpIFwKKyAgICBtYWNybyhkb2N1bWVudCkgXAogICAgIG1h
Y3JvKGZhaWx1cmVLaW5kKSBcCisgICAgbWFjcm8oZmV0Y2gpIFwKICAgICBtYWNybyhmZXRjaFJl
cXVlc3QpIFwKICAgICBtYWNybyhmaWxsRnJvbUpTKSBcCiAgICAgbWFjcm8oZmluaXNoQ29uc3Vt
aW5nU3RyZWFtKSBcCi0gICAgbWFjcm8oZ2V0VXNlck1lZGlhKSBcCisgICAgbWFjcm8oZm9jdXMp
IFwKKyAgICBtYWNybyhmcmFtZXMpIFwKICAgICBtYWNybyhnZXRSZW1vdGVTdHJlYW1zKSBcCiAg
ICAgbWFjcm8oZ2V0U2VuZGVycykgXAogICAgIG1hY3JvKGdldFRyYWNrcykgXAorICAgIG1hY3Jv
KGdldFVzZXJNZWRpYSkgXAorICAgIG1hY3JvKGhlYWRlcikgXAorICAgIG1hY3JvKGluZGV4ZWRE
QikgXAogICAgIG1hY3JvKGluaXRpYWxpemVXaXRoKSBcCiAgICAgbWFjcm8oaXNEaXN0dXJiZWQp
IFwKICAgICBtYWNybyhpc0xvYWRpbmcpIFwKKyAgICBtYWNybyhpc1NlY3VyZUNvbnRleHQpIFwK
ICAgICBtYWNybyhsb2NhbFN0cmVhbXMpIFwKLSAgICBtYWNybyhtYWtlVGhpc1R5cGVFcnJvcikg
XAorICAgIG1hY3JvKGxvY2F0aW9uKSBcCiAgICAgbWFjcm8obWFrZUdldHRlclR5cGVFcnJvcikg
XAorICAgIG1hY3JvKG1ha2VUaGlzVHlwZUVycm9yKSBcCisgICAgbWFjcm8obWF0Y2hpbmdFbGVt
ZW50SW5GbGF0VHJlZSkgXAogICAgIG1hY3JvKG1lZGlhU3RyZWFtVHJhY2tDb25zdHJhaW50cykg
XAorICAgIG1hY3JvKG9wZW5lcikgXAogICAgIG1hY3JvKG9wZXJhdGlvbnMpIFwKICAgICBtYWNy
byhvd25lclJlYWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8ocGFyZW50KSBcCiAgICAgbWFjcm8o
cGVuZGluZ1B1bGxJbnRvcykgXAorICAgIG1hY3JvKHBvc3RNZXNzYWdlKSBcCiAgICAgbWFjcm8o
cHJpdmF0ZUdldFN0YXRzKSBcCiAgICAgbWFjcm8ocHVsbCkgXAotICAgIG1hY3JvKHB1bGxpbmcp
IFwKICAgICBtYWNybyhwdWxsQWdhaW4pIFwKKyAgICBtYWNybyhwdWxsaW5nKSBcCiAgICAgbWFj
cm8ocXVldWUpIFwKICAgICBtYWNybyhxdWV1ZWRBZGRJY2VDYW5kaWRhdGUpIFwKICAgICBtYWNy
byhxdWV1ZWRDcmVhdGVBbnN3ZXIpIFwKICAgICBtYWNybyhxdWV1ZWRDcmVhdGVPZmZlcikgXAog
ICAgIG1hY3JvKHF1ZXVlZFNldExvY2FsRGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhxdWV1ZWRT
ZXRSZW1vdGVEZXNjcmlwdGlvbikgXAotICAgIG1hY3JvKHJlYWRlcikgXAogICAgIG1hY3JvKHJl
YWRJbnRvUmVxdWVzdHMpIFwKICAgICBtYWNybyhyZWFkUmVxdWVzdHMpIFwKICAgICBtYWNybyhy
ZWFkYWJsZUJ5dGVTdHJlYW1BUElFbmFibGVkKSBcCiAgICAgbWFjcm8ocmVhZGFibGVTdHJlYW1D
b250cm9sbGVyKSBcCisgICAgbWFjcm8ocmVhZGVyKSBcCiAgICAgbWFjcm8ocmVhZHlQcm9taXNl
Q2FwYWJpbGl0eSkgXAogICAgIG1hY3JvKHJlbW92ZVRyYWNrKSBcCisgICAgbWFjcm8ocmVzcG9u
c2UpIFwKICAgICBtYWNybyhyZXNwb25zZUNhY2hlSXNWYWxpZCkgXAogICAgIG1hY3JvKHJldHJp
ZXZlUmVzcG9uc2UpIFwKLSAgICBtYWNybyhyZXNwb25zZSkgXAorICAgIG1hY3JvKHNlbGYpIFwK
ICAgICBtYWNybyhzZXRCb2R5KSBcCiAgICAgbWFjcm8oc2V0Qm9keUFzUmVhZGFibGVTdHJlYW0p
IFwKICAgICBtYWNybyhzZXRCb2R5RnJvbUlucHV0UmVxdWVzdCkgXAogICAgIG1hY3JvKHNldFN0
YXR1cykgXAotICAgIG1hY3JvKHN0YXRlKSBcCisgICAgbWFjcm8oc2hvd01vZGFsRGlhbG9nKSBc
CiAgICAgbWFjcm8oc3RhcnRDb25zdW1pbmdTdHJlYW0pIFwKICAgICBtYWNybyhzdGFydGVkKSBc
CiAgICAgbWFjcm8oc3RhcnRlZFByb21pc2UpIFwKKyAgICBtYWNybyhzdGF0ZSkgXAogICAgIG1h
Y3JvKHN0b3JlZEVycm9yKSBcCiAgICAgbWFjcm8oc3RyYXRlZ3kpIFwKICAgICBtYWNybyhzdHJh
dGVneUhXTSkgXApAQCAtMTA2LDI3ICsyNTEsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IG1hY3JvKHN0cmVhbVdyaXRhYmxlKSBcCiAgICAgbWFjcm8oc3RydWN0dXJlZENsb25lQXJyYXlC
dWZmZXIpIFwKICAgICBtYWNybyhzdHJ1Y3R1cmVkQ2xvbmVBcnJheUJ1ZmZlclZpZXcpIFwKKyAg
ICBtYWNybyh0b3ApIFwKICAgICBtYWNybyh0b3RhbFF1ZXVlZEJ5dGVzKSBcCiAgICAgbWFjcm8o
dW5kZXJseWluZ0J5dGVTb3VyY2UpIFwKICAgICBtYWNybyh1bmRlcmx5aW5nU2luaykgXAogICAg
IG1hY3JvKHVuZGVybHlpbmdTb3VyY2UpIFwKICAgICBtYWNybyh2aWV3KSBcCiAgICAgbWFjcm8o
d2ViUlRDTGVnYWN5QVBJRW5hYmxlZCkgXAotICAgIG1hY3JvKHdyaXRpbmcpIFwKLSAgICBtYWNy
byhIZWFkZXJzKSBcCi0gICAgbWFjcm8oTWVkaWFTdHJlYW0pIFwKLSAgICBtYWNybyhNZWRpYVN0
cmVhbVRyYWNrKSBcCi0gICAgbWFjcm8oUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcikgXAot
ICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtKSBcCi0gICAgbWFjcm8oUmVhZGFibGVTdHJlYW1CWU9C
UmVhZGVyKSBcCi0gICAgbWFjcm8oUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCkgXAotICAgIG1h
Y3JvKFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIpIFwKLSAgICBtYWNybyhSZWFkYWJs
ZVN0cmVhbURlZmF1bHRSZWFkZXIpIFwKLSAgICBtYWNybyhSZXF1ZXN0KSBcCi0gICAgbWFjcm8o
UmVzcG9uc2UpIFwKLSAgICBtYWNybyhSVENJY2VDYW5kaWRhdGUpIFwKLSAgICBtYWNybyhSVENT
ZXNzaW9uRGVzY3JpcHRpb24pIFwKLSAgICBtYWNybyhYTUxIdHRwUmVxdWVzdCkKKyAgICBtYWNy
byh3ZWJraXQpIFwKKyAgICBtYWNybyh3ZWJraXRBdWRpb0NvbnRleHQpIFwKKyAgICBtYWNybyh3
ZWJraXRJREJDdXJzb3IpIFwKKyAgICBtYWNybyh3ZWJraXRJREJEYXRhYmFzZSkgXAorICAgIG1h
Y3JvKHdlYmtpdElEQkZhY3RvcnkpIFwKKyAgICBtYWNybyh3ZWJraXRJREJJbmRleCkgXAorICAg
IG1hY3JvKHdlYmtpdElEQktleVJhbmdlKSBcCisgICAgbWFjcm8od2Via2l0SURCT2JqZWN0U3Rv
cmUpIFwKKyAgICBtYWNybyh3ZWJraXRJREJSZXF1ZXN0KSBcCisgICAgbWFjcm8od2Via2l0SURC
VHJhbnNhY3Rpb24pIFwKKyAgICBtYWNybyh3ZWJraXRJbmRleGVkREIpIFwKKyAgICBtYWNybyh3
aW5kb3cpIFwKKyAgICBtYWNybyh3cml0aW5nKQogCiBjbGFzcyBXZWJDb3JlQnVpbHRpbk5hbWVz
IHsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMjE1NTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAt
MTY5NSw2ICsxNjk1LDcgQEAgc3ViIE5lZWRzUnVudGltZUNoZWNrCiAKICAgICByZXR1cm4gJGNv
bnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9CiAgICAgICAgIHx8
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9CisgICAgICAg
IHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfQogICAg
ICAgICB8fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2VjdXJlQ29udGV4dH07CiB9
CiAKQEAgLTE3MDUsMTEgKzE3MDYsMTEgQEAgc3ViIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5j
ZQogCiAgICAgcmV0dXJuIDEgaWYgSXNHbG9iYWxPclByaW1hcnlHbG9iYWxJbnRlcmZhY2UoJGlu
dGVyZmFjZSk7CiAKLSAgICAjIEZJWE1FOiBUaGUgYmluZGluZ3MgZ2VuZXJhdG9yIGRvZXMgbm90
IHN1cHBvcnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBvbiB0aGUgaW5zdGFu
Y2UgeWV0IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKS4KLSAgICByZXR1cm4gMCBpZiBOZWVk
c1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKLQogICAgICMgW1VuZm9yZ2Vh
YmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuIGh0dHBzOi8vaGV5Y2Ft
LmdpdGh1Yi5pby93ZWJpZGwvI1VuZm9yZ2VhYmxlCi0gICAgcmV0dXJuIDEgaWYgSXNVbmZvcmdl
YWJsZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKKyAgICBpZiAoSXNVbmZvcmdlYWJsZSgkaW50
ZXJmYWNlLCAkb3BlcmF0aW9uKSkgeworICAgICAgICBhc3NlcnQoIlRoZSBiaW5kaW5ncyBnZW5l
cmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBwdXR0aW5nIHJ1bnRpbWUtZW5hYmxlZCBvcGVyYXRpb25z
IG9uIHRoZSBpbnN0YW5jZSB5ZXQgKGV4Y2VwdCBmb3IgZ2xvYmFsIG9iamVjdHMpOlsiIC4gJGlu
dGVyZmFjZS0+dHlwZS0+bmFtZSAuICI6OiIgLiAkb3BlcmF0aW9uLT5uYW1lIC4gIl0iKSBpZiBO
ZWVkc1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKKyAgICAgICAgcmV0dXJu
IDE7CisgICAgfQogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yOTkwLDcgKzI5OTEsNyBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKIAogc3ViIEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogewotICAg
IG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkaXNJbnN0YW5jZSwgJGhhc2hLZXlzLCAkaGFzaFNw
ZWNpYWxzLCAkaGFzaFZhbHVlMSwgJGhhc2hWYWx1ZTIsICRjb25kaXRpb25hbHMsICRyZWFkV3Jp
dGVDb25kaXRpb25hbHMsICRydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMsICRydW50aW1lRW5hYmxl
ZEF0dHJpYnV0ZXMsICRzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zLCAkc2V0dGluZ3NFbmFibGVk
QXR0cmlidXRlcykgPSBAXzsKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlzSW5zdGFu
Y2UsICRoYXNoS2V5cywgJGhhc2hTcGVjaWFscywgJGhhc2hWYWx1ZTEsICRoYXNoVmFsdWUyLCAk
Y29uZGl0aW9uYWxzLCAkcmVhZFdyaXRlQ29uZGl0aW9uYWxzLCAkcnVudGltZUVuYWJsZWRPcGVy
YXRpb25zLCAkcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzKSA9IEBfOwogCiAgICAgIyBGSVhNRTog
VGhlc2Ugc2hvdWxkIGJlIGZ1bmN0aW9ucyBvbiAkaW50ZXJmYWNlLgogICAgIG15ICRpbnRlcmZh
Y2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKQEAgLTMwNTMsMTAgKzMwNTQsNiBAQCBz
dWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIGlmIChOZWVkc1J1bnRpbWVD
aGVjaygkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgcHVzaChAJHJ1bnRp
bWVFbmFibGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KLQotICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pIHsK
LSAgICAgICAgICAgIHB1c2goQCRzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzLCAkYXR0cmlidXRl
KTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIG15IEBvcGVyYXRpb25zID0gQHskaW50ZXJmYWNl
LT5vcGVyYXRpb25zfTsKQEAgLTMwOTgsMTAgKzMwOTUsNiBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0
aWVzSGFzaFRhYmxlCiAgICAgICAgIGlmIChOZWVkc1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAk
b3BlcmF0aW9uKSkgewogICAgICAgICAgICAgcHVzaChAJHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9u
cywgJG9wZXJhdGlvbik7CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pIHsKLSAgICAgICAgICAgIHB1c2go
QCRzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zLCAkb3BlcmF0aW9uKTsKLSAgICAgICAgfQogICAg
IH0KIAogICAgIHJldHVybiAkcHJvcGVydHlDb3VudDsKQEAgLTM2NjAsNiArMzY1MywyMCBAQCBz
dWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpCiAgICAgICAgIHB1c2goQGNv
bmp1bmN0cywgIndvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLiIgLiBUb01ldGhvZE5hbWUoJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRGb3JXb3JsZH0pIC4gIigpIik7CiAgICAg
fQogCisgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0
aW5nfSkgeworICAgICAgICBhc3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRW5hYmxlZEJ5
U2V0dGluZy4iKSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0
dGluZ30gZXEgIlZBTFVFX0lTX01JU1NJTkciOworCisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJEb2N1bWVudC5oIik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7
CisKKyAgICAgICAgYXNzZXJ0KCJFbmFibGVkQnlTZXR0aW5nIGNhbiBvbmx5IGJlIHVzZWQgYnkg
aW50ZXJmYWNlcyBvbmx5IGV4cG9zZWQgdG8gdGhlIFdpbmRvdyIpIGlmICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9ICYmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0V4cG9zZWR9IG5lICJXaW5kb3ciOworCisgICAgICAgIG15IEBmbGFncyA9IHNwbGl0
KC8mLywgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KTsK
KyAgICAgICAgZm9yZWFjaCBteSAkZmxhZyAoQGZsYWdzKSB7CisgICAgICAgICAgICBwdXNoKEBj
b25qdW5jdHMsICJkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLiIg
LiBUb01ldGhvZE5hbWUoJGZsYWcpIC4gIkVuYWJsZWQoKSIpOworICAgICAgICB9CisgICAgfQor
CiAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1l
fSkgewogICAgICAgICBhc3NlcnQoIk11c3Qgc3BlY2lmeSB2YWx1ZSBmb3IgRW5hYmxlZEF0UnVu
dGltZS4iKSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGlt
ZX0gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogCkBAIC0zOTUwLDExICszOTU3LDkgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBteSAkaGFzaE5hbWUgPSAkY2xhc3NOYW1lIC4gIlRh
YmxlIjsKICAgICBteSBAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zID0gKCk7CiAgICAgbXkgQHJ1
bnRpbWVFbmFibGVkQXR0cmlidXRlcyA9ICgpOwotICAgIG15IEBzZXR0aW5nc0VuYWJsZWRPcGVy
YXRpb25zID0gKCk7Ci0gICAgbXkgQHNldHRpbmdzRW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKIAog
ICAgICMgR2VuZXJhdGUgaGFzaCB0YWJsZSBmb3IgcHJvcGVydGllcyBvbiB0aGUgaW5zdGFuY2Uu
Ci0gICAgbXkgJG51bUluc3RhbmNlUHJvcGVydGllcyA9IEdlbmVyYXRlUHJvcGVydGllc0hhc2hU
YWJsZSgkb2JqZWN0LCAkaW50ZXJmYWNlLCAxLCBcQGhhc2hLZXlzLCBcQGhhc2hTcGVjaWFscywg
XEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1ZTIsIFwlY29uZGl0aW9uYWxzLCBcJXJlYWRXcml0ZUNv
bmRpdGlvbmFscywgXEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMsIFxAcnVudGltZUVuYWJsZWRB
dHRyaWJ1dGVzLCBcQHNldHRpbmdzRW5hYmxlZE9wZXJhdGlvbnMsIFxAc2V0dGluZ3NFbmFibGVk
QXR0cmlidXRlcyk7CisgICAgbXkgJG51bUluc3RhbmNlUHJvcGVydGllcyA9IEdlbmVyYXRlUHJv
cGVydGllc0hhc2hUYWJsZSgkb2JqZWN0LCAkaW50ZXJmYWNlLCAxLCBcQGhhc2hLZXlzLCBcQGhh
c2hTcGVjaWFscywgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1ZTIsIFwlY29uZGl0aW9uYWxzLCBc
JXJlYWRXcml0ZUNvbmRpdGlvbmFscywgXEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMsIFxAcnVu
dGltZUVuYWJsZWRBdHRyaWJ1dGVzKTsKICAgICAkb2JqZWN0LT5HZW5lcmF0ZUhhc2hUYWJsZSgk
Y2xhc3NOYW1lLCAkaGFzaE5hbWUsICRudW1JbnN0YW5jZVByb3BlcnRpZXMsIFxAaGFzaEtleXMs
IFxAaGFzaFNwZWNpYWxzLCBcQGhhc2hWYWx1ZTEsIFxAaGFzaFZhbHVlMiwgXCVjb25kaXRpb25h
bHMsIFwlcmVhZFdyaXRlQ29uZGl0aW9uYWxzLCAwKSBpZiAkbnVtSW5zdGFuY2VQcm9wZXJ0aWVz
ID4gMDsKIAogICAgICMgLSBBZGQgYWxsIGludGVyZmFjZSBvYmplY3QgKGFrYSBjb25zdHJ1Y3Rv
cikgcHJvcGVydGllcyAoY29uc3RhbnRzLCBzdGF0aWMgYXR0cmlidXRlcywgc3RhdGljIG9wZXJh
dGlvbnMpLgpAQCAtNDA3MCwxNiArNDA3NSwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICVyZWFkV3JpdGVDb25kaXRpb25hbHMgPSAoKTsKICAgICBAcnVudGltZUVuYWJsZWRP
cGVyYXRpb25zID0gKCk7CiAgICAgQHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcyA9ICgpOwotICAg
IEBzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zID0gKCk7Ci0gICAgQHNldHRpbmdzRW5hYmxlZEF0
dHJpYnV0ZXMgPSAoKTsKIAogICAgICMgR2VuZXJhdGUgaGFzaCB0YWJsZSBmb3IgcHJvcGVydGll
cyBvbiB0aGUgcHJvdG90eXBlLgogICAgIG15ICRudW1Qcm90b3R5cGVQcm9wZXJ0aWVzID0gR2Vu
ZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlKCRvYmplY3QsICRpbnRlcmZhY2UsIDAsCiAgICAgICAg
IFxAaGFzaEtleXMsIFxAaGFzaFNwZWNpYWxzLAogICAgICAgICBcQGhhc2hWYWx1ZTEsIFxAaGFz
aFZhbHVlMiwKICAgICAgICAgXCVjb25kaXRpb25hbHMsIFwlcmVhZFdyaXRlQ29uZGl0aW9uYWxz
LAotICAgICAgICBcQHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9ucywgXEBydW50aW1lRW5hYmxlZEF0
dHJpYnV0ZXMsCi0gICAgICAgIFxAc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucywgXEBzZXR0aW5n
c0VuYWJsZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgXEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMs
IFxAcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzKTsKIAogICAgIG15ICRoYXNoU2l6ZSA9ICRudW1Q
cm90b3R5cGVQcm9wZXJ0aWVzOwogCkBAIC00MTI4LDMxICs0MTMwLDYgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIAotICAgICAgICBteSBAc2V0dGlu
Z3NFbmFibGVkUHJvcGVydGllcyA9IEBzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zOwotICAgICAg
ICBwdXNoKEBzZXR0aW5nc0VuYWJsZWRQcm9wZXJ0aWVzLCBAc2V0dGluZ3NFbmFibGVkQXR0cmli
dXRlcyk7Ci0gICAgICAgIGlmIChzY2FsYXIoQHNldHRpbmdzRW5hYmxlZFByb3BlcnRpZXMpKSB7
Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRG9jdW1lbnQuaCIpOwotICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNldHRpbmdzLmgiKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8qIGNvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKCFjb250ZXh0IHx8IGNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7XG4iKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yZWFjaCBt
eSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUgKEBzZXR0aW5nc0VuYWJsZWRQcm9wZXJ0aWVzKSB7Ci0g
ICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbk9yQXR0cmlidXRlKTsKLSAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotCi0gICAgICAgICAgICAgICAgbXkgJGVuYWJsZUZ1bmN0
aW9uID0gVG9NZXRob2ROYW1lKCRvcGVyYXRpb25PckF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pIC4gIkVuYWJsZWQiOwotICAgICAgICAgICAgICAgIG15
ICRuYW1lID0gJG9wZXJhdGlvbk9yQXR0cmlidXRlLT5uYW1lOwotCi0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFjb250ZXh0IHx8ICFkb3duY2FzdDxEb2N1bWVu
dD4oKmNvbnRleHQpLnNldHRpbmdzKCkuJHtlbmFibGVGdW5jdGlvbn0oKSkge1xuIik7Ci0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3Bl
IHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xu
Iik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIEpTT2JqZWN0
OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9w
ZXJ0eU5hbWUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
fVxuIik7Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KICAgICAg
ICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CiAg
ICAgICAgICAgICBuZXh0IHVubGVzcyAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
UHJpdmF0ZUlkZW50aWZpZXJ9KTsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJD
b3JlSlNDbGllbnREYXRhLmgiKTsKQEAgLTQyNTEsMTcgKzQyMjgsMTcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgbmV4dCB1bmxlc3MgTmVlZHNSdW50aW1lQ2hlY2soJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIG5leHQgdW5sZXNzIEF0dHJpYnV0ZVNob3Vs
ZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAotICAgICAgICBteSAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmlu
ZygkYXR0cmlidXRlKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwogICAgICAgICBteSAkcnVudGltZUVu
YWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxT
dHJpbmcoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1l
ID0gJGF0dHJpYnV0ZS0+bmFtZTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CiAgICAgICAgIG15ICRn
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpOwogICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSA/
ICJudWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRv
KiBjdXN0b21HZXR0ZXJTZXR0ZXIgPSBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgJGdl
dHRlciwgJHNldHRlcik7XG4iKTsKICAgICAgICAgbXkgJGpzY0F0dHJpYnV0ZXMgPSBHZXRKU0NB
dHRyaWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHZt
LnByb3BlcnR5TmFtZXMtPiRhdHRyaWJ1dGVOYW1lLCBjdXN0b21HZXR0ZXJTZXR0ZXIsIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJpYnV0ZXMpKTtcbiIpOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB9XG4iKTsKKworICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSlcbiIpOworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLiIg
LiAkYXR0cmlidXRlTmFtZSAuICJQdWJsaWNOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3Jl
YXRlKHZtLCAkZ2V0dGVyLCAkc2V0dGVyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSgkanNjQXR0
cmlidXRlcykpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQogCkBAIC00Mjg2LDE3ICs0MjYzLDE3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG5leHQgdW5sZXNzIE9wZXJhdGlvblNo
b3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKICAgICAgICAgbmV4dCBp
ZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5k
ZXh9ID4gMTsKIAotICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkb3BlcmF0aW9uKTsKLSAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEu
aCIpOwogICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJh
dGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7
CiAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkb3BlcmF0aW9uLT5uYW1lOwogICAgICAgICBt
eSAkaW1wbGVtZW50YXRpb25GdW5jdGlvbiA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0
RnVuY3Rpb25MZW5ndGgoJG9wZXJhdGlvbik7CiAgICAgICAgIG15ICRqc0F0dHJpYnV0ZXMgPSBD
b21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmd9KVxuIik7CiAKLSAgICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICJ2bS5wcm9wZXJ0eU5hbWVz
LT4kZnVuY3Rpb25OYW1lIjsKLSAgICAgICAgJHByb3BlcnR5TmFtZSA9ICJzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0
aW9uTmFtZSAuICJQcml2YXRlTmFtZSgpIiBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntQcml2YXRlSWRlbnRpZmllcn07CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb24pOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KVxuIik7CisgICAgICAgIG15ICRw
cm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbk5hbWUgLiAoJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9ID8gIlByaXZhdGVOYW1lKCkiIDogIlB1
YmxpY05hbWUoKSIpOwogICAgICAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJG9wZXJh
dGlvbikpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJl
Y3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXMsICRwcm9wZXJ0eU5hbWUsICRpbXBsZW1lbnRhdGlv
bkZ1bmN0aW9uKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSgkanNBdHRyaWJ1dGVzKSk7XG4i
KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTQ2OTAsMjQgKzQ2NjcsNyBAQCBzdWIgR2VuZXJhdGVB
dHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0oc3RhdGUp
O1xuIik7Ci0gICAgCi0gICAgIyBHbG9iYWwgY29uc3RydWN0b3JzIGNhbiBiZSBkaXNhYmxlZCBh
dCBydW50aW1lLgotICAgICMgRklYTUU6IFJldHVybmluZyB1bmRlZmluZWQgaXMgbm90IHRoZSBz
YW1lIGFzIGRpYXNhYmxpbmcuIFRoZXNlIHByb3BlcnRpZXMgc2hvdWxkIGJlIHJlbW92ZWQKLSAg
ICAjIGZyb20gdGhlIG9iamVjdCBpbnN0ZWFkLgotICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXND
b25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKLSAgICAgICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7Ci0gICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IFRvTWV0aG9kTmFtZSgkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgLiAiRW5hYmxl
ZCI7Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCF0
aGlzT2JqZWN0LndyYXBwZWQoKS5mcmFtZSgpKSlcbiIpOwotICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOwotICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdzKCk7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXNldHRpbmdzLiRlbmFibGVGdW5jdGlvbigpKVxuIik7
Ci0gICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpO1xuIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCisKICAgICBpZiAoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gJiYKICAgICAgICAgISRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX0gJiYKICAgICAg
ICAgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9u
R2V0dGVyfSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RFbmFibGVkQnlTZXR0aW5nLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVuYWJsZWRCeVNldHRpbmcuaWRsCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW5hYmxlZEJ5U2V0
dGluZy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2lu
dGVyZmFjZSBUZXN0RW5hYmxlZEJ5U2V0dGluZyB7CisgICAgW0VuYWJsZWRCeVNldHRpbmc9VGVz
dFNldHRpbmddIGF0dHJpYnV0ZSBUZXN0U3ViT2JqQ29uc3RydWN0b3IgVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmc7CisKKyAgICAvLyBbRW5hYmxlZEJ5U2V0dGluZ10gYXR0cmlidXRlcyBhbmQg
b3BlcmF0aW9ucy4KKyAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQnlTZXR0
aW5nPVRlc3RTZXR0aW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuYWJsZWRCeVNldHRpbmdBdHRy
aWJ1dGU7CisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEJ5U2V0dGluZz1U
ZXN0U2V0dGluZ10gdm9pZCBlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKERPTVN0cmluZyB0ZXN0
UGFyYW0pOworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDIyMTU1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyAr
NTgsNiBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93CiAgICAgc3Rh
dGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nICAgICBzdGF0aWNSZWFkT25seUxvbmdBdHRyOwog
ICAgIHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgICAgc3RhdGljU3RyaW5nQXR0cjsK
ICAgICBzdGF0aWMgcmVhZG9ubHkgYXR0cmlidXRlIFRlc3RTdWJPYmpDb25zdHJ1Y3RvciBUZXN0
U3ViT2JqOwotICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RTZXR0aW5nXSBhdHRyaWJ1dGUgVGVz
dFN1Yk9iakNvbnN0cnVjdG9yIFRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nOwogICAgIGF0dHJp
YnV0ZSBUZXN0RW51bVR5cGUgZW51bUF0dHI7CiAgICAgYXR0cmlidXRlIGJ5dGUgYnl0ZUF0dHI7
CiAgICAgYXR0cmlidXRlIG9jdGV0IG9jdGV0QXR0cjsKQEAgLTExMywxMyArMTEyLDggQEAgZW51
bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIFtDb25kaXRpb25hbD1U
RVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbihsb25nIHRlc3RQYXJhbSk7CiAKICAgICBbRW5hYmxlZEZvcldvcmxk
PXNvbWVXb3JsZCwgRW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChsb25nIHRlc3RQYXJhbSk7Ci0K
ICAgICBbRW5hYmxlZEZvcldvcmxkPXNvbWVXb3JsZF0gdm9pZCB3b3JsZFNwZWNpZmljTWV0aG9k
KGxvbmcgdGVzdFBhcmFtKTsKIAotICAgIC8vIFtFbmFibGVkQnlTZXR0aW5nXSBhdHRyaWJ1dGVz
IGFuZCBvcGVyYXRpb25zLgotICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRC
eVNldHRpbmc9VGVzdFNldHRpbmddIGF0dHJpYnV0ZSBET01TdHJpbmcgZW5hYmxlZEJ5U2V0dGlu
Z0F0dHJpYnV0ZTsKLSAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQnlTZXR0
aW5nPVRlc3RTZXR0aW5nXSB2b2lkIGVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oRE9NU3RyaW5n
IHRlc3RQYXJhbSk7Ci0KICAgICAvLyBbU2VjdXJlQ29udGV4dF0gYXR0cmlidXRlcyBhbmQgb3Bl
cmF0aW9uczsgd2lsbCBub3QgYmUgZXhwb3NlZCB0byBhIG5vbi1zZWN1cmUgY29udGV4dC4KICAg
ICAvLyBGcm9tIDxodHRwczovL3czYy5naXRodWIuaW8vd2ViYXBwc2VjLXNlY3VyZS1jb250ZXh0
cy8jaW50ZWdyYXRpb24taWRsPiAoRWRpdG9yJ3MgRHJhZnQsIDE3IE5vdmVtYmVyIDIwMTYpCiAg
ICAgW1NlY3VyZUNvbnRleHRdIFByb21pc2U8ZG91YmxlPiBjYWxjdWxhdGVTZWNyZXRSZXN1bHQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
bmFibGVkQnlTZXR0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJs
ZWRCeVNldHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzU1IEBACisvKgorICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAg
ICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBE
TyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nLmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpT
RE9NQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKKyNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgorI2luY2x1ZGUgIkpTVGVzdFN1Yk9iai5oIgorI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMu
aD4KKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQor
I2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZ1bmN0aW9ucworCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0
aW9uKEpTQzo6RXhlY1N0YXRlKik7CisjZW5kaWYKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVj
dG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmdDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUpOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworI2VuZGlmCisKK2NsYXNzIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUgOiBw
dWJsaWMgSlNDOjpKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
SlNDOjpKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU+KHZtLmhlYXApKSBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nUHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAg
IH0KKworICAgIERFQ0xBUkVfSU5GTzsKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZv
KEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAg
OiBKU0M6OkpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJs
ZTxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEVu
YWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIFVOVVNF
RF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC5mdW5jdGlvblByb3RvdHlwZSgp
OworfQorCit0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiVGVzdEVuYWJsZWRCeVNldHRpbmciKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJl
YWRPbmx5IHwgRG9udEVudW0pOworfQorCit0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkQnlT
ZXR0aW5nIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpIH07CisKKy8qIEhhc2ggdGFi
bGUgZm9yIHByb3RvdHlwZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0
cnVjdG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVj
dG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKSB9IH0sCisjaWYgRU5BQkxF
KFRFU1RfRkVBVFVSRSkKKyAgICB7ICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiwgQ3VzdG9t
QWNjZXNzb3IgfCBET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RW5hYmxlZEJ5U2V0dGluZ0Vu
YWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5
U2V0dGluZ0F0dHJpYnV0ZSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7
IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICB7ICJlbmFi
bGVkQnlTZXR0aW5nT3BlcmF0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RFbmFibGVkQnlTZXR0aW5n
UHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKSwgKGludHB0cl90KSAo
MSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAorI2Vu
ZGlmCit9OworCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlw
ZTo6c19pbmZvID0geyAiVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUiLCAmQmFzZTo6c19p
bmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRC
eVNldHRpbmdQcm90b3R5cGUpIH07CisKK3ZvaWQgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmc6OmluZm8oKSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZVRhYmxlVmFsdWVzLCAq
dGhpcyk7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoIWRvd25jYXN0PERvY3Vt
ZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIiks
IHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpKTsKKyAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpOworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywg
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsKKyAgICB9CisjZW5k
aWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmICghZG93bmNhc3Q8RG9jdW1lbnQ+
KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJsZWQoKSkgeworICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKSwgc3Ry
bGVuKCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOworICAgICAgICBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNv
bmZpZ3VyYWJsZSk7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOworICAgIH0KKyNlbmRpZgor
fQorCitjb25zdCBDbGFzc0luZm8gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6c19pbmZvID0geyAi
VGVzdEVuYWJsZWRCeVNldHRpbmciLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEVuYWJsZWRCeVNldHRpbmcpIH07CisKK0pTVGVzdEVu
YWJsZWRCeVNldHRpbmc6OkpTVGVzdEVuYWJsZWRCeVNldHRpbmcoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RW5hYmxlZEJ5U2V0
dGluZz4mJiBpbXBsKQorICAgIDogSlNET01XcmFwcGVyPFRlc3RFbmFibGVkQnlTZXR0aW5nPihz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSkKK3sKK30KKwordm9pZCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisK
KyAgICBpZiAoZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS50ZXN0
U2V0dGluZ0VuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
LlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0
ZXI6OmNyZWF0ZSh2bSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlT
ZXR0aW5nQ29uc3RydWN0b3IsIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShEb250RW51
bSkpOworfQorCitKU09iamVjdCogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6Y3JlYXRlUHJvdG90
eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1
cm4gSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
ICZnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSkpOworfQorCitK
U09iamVjdCogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6cHJvdG90eXBlKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBl
PEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCitKU1ZhbHVl
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBK
U0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2b2lkIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmc6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCit7CisgICAgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmcqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5KU1Rlc3RFbmFibGVkQnlTZXR0aW5nOjp+
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZygpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nKiBJRExBdHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OmNh
c3QoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQoreworICAgIHJl
dHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4oc3RhdGUudm0o
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBJRExPcGVyYXRpb248SlNUZXN0RW5hYmxlZEJ5U2V0dGlu
Zz46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSkKK3sKKyAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KHN0YXRlLnZtKCksIHN0YXRlLnRoaXNWYWx1ZSgp
KTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQoreworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6Z2V0Q29uc3RydWN0b3Ioc3Rh
dGUtPnZtKCksIHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKFVOTElLRUxZKCFwcm90b3R5cGUpKSB7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJuIHByb3Rv
dHlwZS0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0
cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRp
bmdDb25zdHJ1Y3RvckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIHJldHVybiBK
U1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRlLnZtKCksIHRoaXNPYmplY3QuZ2xvYmFs
T2JqZWN0KCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpnZXQ8anNUZXN0RW5hYmxlZEJ5U2V0dGlu
Z1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JHZXR0ZXI+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKK30KKworc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGlu
Z0NvbnN0cnVjdG9yU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEVuYWJsZWRCeVNldHRp
bmcmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCisgICAgcmV0dXJuIHRo
aXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0
YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmciKSwgc3RybGVuKCJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpKSwgdmFs
dWUpOworfQorCitib29sIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxl
ZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OnNldDxzZXRKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclNldHRlcj4oKnN0YXRl
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7
Cit9CisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcmIHRoaXNPYmplY3QsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExET01TdHJpbmc+KHN0YXRlLCBpbXBsLmVu
YWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5j
b2RlZEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0dGluZ0VuYWJsZWRCeVNldHRpbmdBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPjo6
Z2V0PGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlR2V0dGVy
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUsIHRoaXNWYWx1ZSwgImVu
YWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdF
bmFibGVkQnlTZXR0aW5nQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEVu
YWJsZWRCeVNldHRpbmcmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBpbXBsLnNl
dEVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlT
ZXR0aW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OnNldDxzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
RW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKTsKK30KKworI2VuZGlmCisKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdP
cGVyYXRpb25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdGVzdFBhcmFtID0gY29u
dmVydDxJRExET01TdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIGltcGwuZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihXVEZNb3ZlKHRlc3RQYXJhbSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0
aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46OmNhbGw8anNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbkJv
ZHk+KCpzdGF0ZSwgImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKTsKK30KKworI2VuZGlmCisK
K2Jvb2wgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ093bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOworICAgIFVOVVNFRF9QQVJB
TSh2aXNpdG9yKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ093bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwg
dm9pZCogY29udGV4dCkKK3sKKyAgICBhdXRvKiBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nID0gc3Rh
dGljX2Nhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgp
KTsKKyAgICBhdXRvJiB3b3JsZCA9ICpzdGF0aWNfY2FzdDxET01XcmFwcGVyV29ybGQqPihjb250
ZXh0KTsKKyAgICB1bmNhY2hlV3JhcHBlcih3b3JsZCwgJmpzVGVzdEVuYWJsZWRCeVNldHRpbmct
PndyYXBwZWQoKSwganNUZXN0RW5hYmxlZEJ5U2V0dGluZyk7Cit9CisKKyNpZiBFTkFCTEUoQklO
RElOR19JTlRFR1JJVFkpCisjaWYgUExBVEZPUk0oV0lOKQorI3ByYWdtYSB3YXJuaW5nKGRpc2Fi
bGU6IDQ0ODMpCitleHRlcm4gIkMiIHsgZXh0ZXJuIHZvaWQgKCpjb25zdCBfX2lkZW50aWZpZXIo
Ij8/XzdUZXN0RW5hYmxlZEJ5U2V0dGluZ0BXZWJDb3JlQEA2QkAiKVtdKSgpOyB9CisjZWxzZQor
ZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkKiBfWlRWTjdXZWJDb3JlMjBUZXN0RW5hYmxlZEJ5U2V0
dGluZ0VbXTsgfQorI2VuZGlmCisjZW5kaWYKKworSlNDOjpKU1ZhbHVlIHRvSlNOZXdseUNyZWF0
ZWQoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdEVuYWJsZWRCeVNldHRpbmc+JiYgaW1wbCkKK3sKKworI2lmIEVOQUJMRShCSU5ESU5HX0lO
VEVHUklUWSkKKyAgICB2b2lkKiBhY3R1YWxWVGFibGVQb2ludGVyID0gKihyZWludGVycHJldF9j
YXN0PHZvaWQqKj4oaW1wbC5wdHIoKSkpOworI2lmIFBMQVRGT1JNKFdJTikKKyAgICB2b2lkKiBl
eHBlY3RlZFZUYWJsZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihfX2lkZW50aWZp
ZXIoIj8/XzdUZXN0RW5hYmxlZEJ5U2V0dGluZ0BXZWJDb3JlQEA2QkAiKSk7CisjZWxzZQorICAg
IHZvaWQqIGV4cGVjdGVkVlRhYmxlUG9pbnRlciA9ICZfWlRWTjdXZWJDb3JlMjBUZXN0RW5hYmxl
ZEJ5U2V0dGluZ0VbMl07CisjZW5kaWYKKworICAgIC8vIElmIHRoaXMgZmFpbHMgVGVzdEVuYWJs
ZWRCeVNldHRpbmcgZG9lcyBub3QgaGF2ZSBhIHZ0YWJsZSwgc28geW91IG5lZWQgdG8gYWRkIHRo
ZQorICAgIC8vIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUgYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgZGVmaW5pdGlvbgorICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2x5bW9ycGhpYzxU
ZXN0RW5hYmxlZEJ5U2V0dGluZz46OnZhbHVlLCAiVGVzdEVuYWJsZWRCeVNldHRpbmcgaXMgbm90
IHBvbHltb3JwaGljIik7CisKKyAgICAvLyBJZiB5b3UgaGl0IHRoaXMgYXNzZXJ0aW9uIHlvdSBl
aXRoZXIgaGF2ZSBhIHVzZSBhZnRlciBmcmVlIGJ1Zywgb3IKKyAgICAvLyBUZXN0RW5hYmxlZEJ5
U2V0dGluZyBoYXMgc3ViY2xhc3Nlcy4gSWYgVGVzdEVuYWJsZWRCeVNldHRpbmcgaGFzIHN1YmNs
YXNzZXMgdGhhdCBnZXQgcGFzc2VkCisgICAgLy8gdG8gdG9KUygpIHdlIGN1cnJlbnRseSByZXF1
aXJlIFRlc3RFbmFibGVkQnlTZXR0aW5nIHlvdSB0byBvcHQgb3V0IG9mIGJpbmRpbmcgaGFyZGVu
aW5nCisgICAgLy8gYnkgYWRkaW5nIHRoZSBTa2lwVlRhYmxlVmFsaWRhdGlvbiBhdHRyaWJ1dGUg
dG8gdGhlIGludGVyZmFjZSBJREwgZGVmaW5pdGlvbgorICAgIFJFTEVBU0VfQVNTRVJUKGFjdHVh
bFZUYWJsZVBvaW50ZXIgPT0gZXhwZWN0ZWRWVGFibGVQb2ludGVyKTsKKyNlbmRpZgorICAgIHJl
dHVybiBjcmVhdGVXcmFwcGVyPFRlc3RFbmFibGVkQnlTZXR0aW5nPihnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoaW1wbCkpOworfQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RFbmFibGVkQnlTZXR0aW5n
JiBpbXBsKQoreworICAgIHJldHVybiB3cmFwKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwpOwor
fQorCitUZXN0RW5hYmxlZEJ5U2V0dGluZyogSlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6dG9XcmFw
cGVkKEpTQzo6Vk0mIHZtLCBKU0M6OkpTVmFsdWUgdmFsdWUpCit7CisgICAgaWYgKGF1dG8qIHdy
YXBwZXIgPSBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKj4odm0sIHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuICZ3cmFwcGVyLT53cmFwcGVkKCk7CisgICAgcmV0dXJuIG51
bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODcgQEAKKy8q
CisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0
LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3Mu
cGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU0RPTVdy
YXBwZXIuaCIKKyNpbmNsdWRlICJUZXN0RW5hYmxlZEJ5U2V0dGluZy5oIgorI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmcgOiBwdWJsaWMgSlNET01XcmFwcGVyPFRlc3RFbmFibGVkQnlTZXR0
aW5nPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxl
ZEJ5U2V0dGluZz47CisgICAgc3RhdGljIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdEVuYWJsZWRCeVNldHRpbmc+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVz
dEVuYWJsZWRCeVNldHRpbmcqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGTW92ZShpbXBsKSk7
CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKKyAgICAg
ICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRl
UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0YXRpYyBKU0M6
OkpTT2JqZWN0KiBwcm90b3R5cGUoSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CisgICAg
c3RhdGljIFRlc3RFbmFibGVkQnlTZXR0aW5nKiB0b1dyYXBwZWQoSlNDOjpWTSYsIEpTQzo6SlNW
YWx1ZSk7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gSlNDOjpIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Citw
cm90ZWN0ZWQ6CisgICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZyhKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RFbmFibGVkQnlTZXR0aW5nPiYmKTsKKworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKworY2xhc3MgSlNUZXN0RW5hYmxlZEJ5
U2V0dGluZ093bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlND
OjpVbmtub3duPiwgdm9pZCogY29udGV4dCwgSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1
YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+LCB2b2lkKiBjb250ZXh0
KTsKK307CisKK2lubGluZSBKU0M6OldlYWtIYW5kbGVPd25lciogd3JhcHBlck93bmVyKERPTVdy
YXBwZXJXb3JsZCYsIFRlc3RFbmFibGVkQnlTZXR0aW5nKikKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ093bmVyPiBvd25lcjsKKyAgICByZXR1cm4g
Jm93bmVyLmdldCgpOworfQorCitpbmxpbmUgdm9pZCogd3JhcHBlcktleShUZXN0RW5hYmxlZEJ5
U2V0dGluZyogd3JhcHBhYmxlT2JqZWN0KQoreworICAgIHJldHVybiB3cmFwcGFibGVPYmplY3Q7
Cit9CisKK0pTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBUZXN0RW5hYmxlZEJ5U2V0dGluZyYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVz
dEVuYWJsZWRCeVNldHRpbmcqIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pTKHN0YXRlLCBnbG9i
YWxPYmplY3QsICppbXBsKSA6IEpTQzo6anNOdWxsKCk7IH0KK0pTQzo6SlNWYWx1ZSB0b0pTTmV3
bHlDcmVhdGVkKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdEVu
YWJsZWRCeVNldHRpbmc+JiYpOworaW5saW5lIEpTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmUHRyPFRlc3RFbmFibGVkQnlTZXR0aW5nPiYmIGltcGwpIHsgcmV0dXJuIGltcGwgPyB0b0pT
TmV3bHlDcmVhdGVkKHN0YXRlLCBnbG9iYWxPYmplY3QsIGltcGwucmVsZWFzZU5vbk51bGwoKSkg
OiBKU0M6OmpzTnVsbCgpOyB9CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9NV3JhcHBlckNvbnZl
cnRlclRyYWl0czxUZXN0RW5hYmxlZEJ5U2V0dGluZz4geworICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IEpTVGVzdEVuYWJsZWRCeVNldHRpbmc7CisgICAgdXNpbmcgVG9XcmFwcGVkUmV0dXJuVHlw
ZSA9IFRlc3RFbmFibGVkQnlTZXR0aW5nKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyMjE1NTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDEwICsxNjMsOCBAQCB2b2lkIEpTVGVzdEdsb2Jh
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKIAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKLSAgICAgICAg
YXV0byogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IGpzVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUsIHNldEpTVGVzdEds
b2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUpOwotICAgICAgICBwdXREaXJlY3RD
dXN0b21BY2Nlc3Nvcih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEN1c3RvbUFj
Y2Vzc29yKSk7Ci0gICAgfQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICBwdXREaXJlY3RDdXN0b21B
Y2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVB1YmxpY05hbWUoKSwgQ3Vz
dG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGpzVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGUsIHNldEpTVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGUpLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEN1c3RvbUFjY2Vzc29yKSk7CiAjZW5kaWYK
ICAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVibGljQW5kUHJpdmF0ZUF0dHJp
YnV0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RH
bG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlLCBudWxscHRyKSwgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShEb250RGVsZXRlIHwgUmVhZE9ubHkpKTsKICNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQpAQCAtMTc0LDI5ICsxNzIsMjkgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmZp
bmlzaENyZWF0aW9uKAogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJs
ZWQoKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZtLnByb3Bl
cnR5TmFtZXMtPmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24sIDEsIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCBOb0ludHJpbnNpYywg
YXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVj
dE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uUHVi
bGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlND
OjpGdW5jdGlvbikpOwogI2VuZGlmCiAgICAgaWYgKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNw
ZWNpZmljV29ybGQoKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMs
IHZtLnByb3BlcnR5TmFtZXMtPmVuYWJsZWRJblNwZWNpZmljV29ybGQsIDEsIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkLCBOb0ludHJpbnNp
YywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkUHVi
bGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZElu
U3BlY2lmaWNXb3JsZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpG
dW5jdGlvbikpOwogICAgIGlmICgod29ybGRGb3JET01PYmplY3QodGhpcykuc3BlY2lmaWNXb3Js
ZCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1
cmVFbmFibGVkKCkpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywg
dm0ucHJvcGVydHlOYW1lcy0+ZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWQsIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCwgTm9JbnRyaW5zaWMsIGF0dHJp
YnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZUVuYWJsZWRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCwg
Tm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogICAg
IGlmICgod29ybGRGb3JET01PYmplY3QodGhpcykuc3BlY2lmaWNXb3JsZCgpICYmIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkgJiYg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZTFFbmFi
bGVkKCkpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgdm0ucHJv
cGVydHlOYW1lcy0+ZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFi
bGVkLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkLCBOb0ludHJpbnNpYywgYXR0cmlidXRl
c0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1
bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERh
dGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlc0VuYWJsZWRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQsIE5v
SW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkudGVzdFByaXZhdGVGdW5jdGlvblByaXZhdGVOYW1lKCks
IDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQotICAgICAgICBw
dXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPnRlc3RK
U0J1aWx0aW5GdW5jdGlvbiwgdGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5GdW5jdGlvbkNv
ZGVHZW5lcmF0b3Iodm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6QnVpbHRpbikpOwor
ICAgICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RKU0J1aWx0
aW5GdW5jdGlvblB1YmxpY05hbWUoKSwgdGVzdEdsb2JhbE9iamVjdFRlc3RKU0J1aWx0aW5GdW5j
dGlvbkNvZGVHZW5lcmF0b3Iodm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6QnVpbHRp
bikpOwogI2VuZGlmCiAgICAgaWYgKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkKLSAg
ICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMt
PmNhbGN1bGF0ZVNlY3JldFJlc3VsdCwgMCwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1
Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2
bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVp
bHRpbk5hbWVzKCkuY2FsY3VsYXRlU2VjcmV0UmVzdWx0UHVibGljTmFtZSgpLCAwLCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0LCBOb0ludHJp
bnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CiAgICAgaWYgKGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb24odm0sIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmdldFNlY3JldEJvb2xlYW4sIDAsIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuLCBOb0ludHJp
bnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CisgICAgICAgIHB1
dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5nZXRTZWNyZXRCb29sZWFuUHVibGlj
TmFtZSgpLCAwLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9v
bGVhbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikp
OwogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKChqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1
cmVDb250ZXh0KCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50
ZXN0RmVhdHVyZUVuYWJsZWQoKSkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT50ZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4sIDAs
IGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJv
b2xlYW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24p
KTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RGZWF0
dXJlR2V0U2VjcmV0Qm9vbGVhblB1YmxpY05hbWUoKSwgMCwganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvblRlc3RGZWF0dXJlR2V0U2VjcmV0Qm9vbGVhbiwgTm9JbnRyaW5zaWMsIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogI2VuZGlmCiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCShyZXZpc2lvbiAyMjE1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKQEAgLTc5LDcgKzc4LDYgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPGJ1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oPgpAQCAtOTk3LDkgKzk5NSw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3QKICNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lm
aWNNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
RW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwotI2VuZGlmCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
YWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4oSlNDOjpFeGVjU3RhdGUqKTsKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtMTE3Niw4
ICsxMTcxLDYgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcgogSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBi
b29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmooSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1KU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1i
b29sIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdE9i
akVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAt
MTI2NSwxMCArMTI1OCw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0
cigKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
RW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKLWJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEJ5U2V0
dGluZ0F0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6
RW5jb2RlZEpTVmFsdWUpOwotI2VuZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5
cGVkQXJyYXlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAt
MTQxMywzMCArMTQwMiwyOCBAQCB1c2luZyBKU1Rlc3RPYmpDb25zdHJ1Y3RvciA9IEpTRE9NQ29u
c3RyCiAKIC8qIEhhc2ggdGFibGUgKi8KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFz
aEluZGV4IEpTVGVzdE9ialRhYmxlSW5kZXhbMTddID0geworc3RhdGljIGNvbnN0IHN0cnVjdCBD
b21wYWN0SGFzaEluZGV4IEpTVGVzdE9ialRhYmxlSW5kZXhbMTZdID0gewogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDUsIC0xIH0sCisgICAgeyA0LCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAotICAgIHsgNCwg
LTEgfSwKKyAgICB7IDMsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIC0xIH0sCiAg
ICAgeyAxLCAtMSB9LAogICAgIHsgMiwgLTEgfSwKLSAgICB7IDAsIDE2IH0sCiAgICAgeyAtMSwg
LTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAotICAgIHsgMywgLTEgfSwKIH07CiAKIAogc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYmxlVmFsdWVzW10gPQogewotICAgIHsgIlRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqVGVzdFN1Yk9i
akVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0
UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nQ29uc3RydWN0b3IpIH0gfSwKICAgICB7ICJ1bmZvcmdlYWJsZUF0dHIiLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
CiAgICAgeyAiY29uZGl0aW9uYWxBdHRyNCIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjRDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJv
cGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25z
dHJ1Y3RvcikgfSB9LApAQCAtMTQ1Niw3ICsxNDQzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE9ialRhYgogICAgIHsgInVuZm9yZ2VhYmxlTWV0aG9kIiwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3Jn
ZWFibGVNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCiB9OwogCi1zdGF0aWMgY29uc3QgSGFz
aFRhYmxlIEpTVGVzdE9ialRhYmxlID0geyA2LCAxNSwgdHJ1ZSwgSlNUZXN0T2JqOjppbmZvKCks
IEpTVGVzdE9ialRhYmxlVmFsdWVzLCBKU1Rlc3RPYmpUYWJsZUluZGV4IH07CitzdGF0aWMgY29u
c3QgSGFzaFRhYmxlIEpTVGVzdE9ialRhYmxlID0geyA1LCAxNSwgdHJ1ZSwgSlNUZXN0T2JqOjpp
bmZvKCksIEpTVGVzdE9ialRhYmxlVmFsdWVzLCBKU1Rlc3RPYmpUYWJsZUluZGV4IH07CiAvKiBI
YXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFs
dWUgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KQEAgLTE2MDUsMTEgKzE1OTIs
NiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJvCiAjZWxzZQogICAg
IHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCiAjZW5kaWYKLSNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQotICAgIHsgImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiLCBDdXN0b21BY2Nl
c3NvciB8IERPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0
cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVl
RnVuYz4oc2V0SlNUZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSkgfSB9LAotI2Vsc2UK
LSAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAotI2VuZGlmCiAgICAgeyAidHlw
ZWRBcnJheUF0dHIiLCBDdXN0b21BY2Nlc3NvciB8IERPTUF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpUeXBlZEFycmF5QXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9ialR5cGVkQXJyYXlBdHRyKSB9IH0sCiAgICAg
eyAiYXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbiIsIEN1c3RvbUFjY2Vzc29yIHwgRE9NQXR0
cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb24pLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRK
U1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKSB9IH0sCiAgICAgeyAiYXR0cmli
dXRlV2l0aFNldHRlckV4Y2VwdGlvbiIsIEN1c3RvbUFjY2Vzc29yIHwgRE9NQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhTZXR0ZXJFeGNlcHRpb24pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpB
dHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uKSB9IH0sCkBAIC0xNzAyLDExICsxNjg0LDYgQEAg
c3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogI2VuZGlmCiAgICAgeyAi
ZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQiLCBKU0M6OkZ1
bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rp
b24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5S
dW50aW1lRmVhdHVyZUVuYWJsZWQpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAid29ybGRT
cGVjaWZpY01ldGhvZCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3Js
ZFNwZWNpZmljTWV0aG9kKSwgKGludHB0cl90KSAoMSkgfSB9LAotI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCi0gICAgeyAiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIsIEpTQzo6RnVuY3Rpb24s
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKSwgKGludHB0
cl90KSAoMSkgfSB9LAotI2Vsc2UKLSAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9
LAotI2VuZGlmCiAgICAgeyAiY2FsY3VsYXRlU2VjcmV0UmVzdWx0IiwgSlNDOjpGdW5jdGlvbiwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCksIChpbnRwdHJfdCkg
KDApIH0gfSwKICAgICB7ICJnZXRTZWNyZXRCb29sZWFuIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkdldFNlY3JldEJvb2xlYW4pLCAoaW50cHRyX3QpICgwKSB9IH0sCiAj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTE5NjMsMjIgKzE5NDAsNiBAQCB2b2lkIEpTVGVz
dE9ialByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oCiAgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKICAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdCgpLT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7CiAgICAgfQotICAgIGF1dG8qIGNv
bnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBBU1NFUlQoIWNvbnRleHQgfHwgY29udGV4dC0+aXNE
b2N1bWVudCgpKTsKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmICghY29udGV4dCB8
fCAhZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5h
YmxlZCgpKSB7Ci0gICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGlu
Z09wZXJhdGlvbiIpLCBzdHJsZW4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7Ci0gICAg
ICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKLSAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVBy
b3BlcnR5KHRoaXMsIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7
Ci0gICAgfQotI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIWNvbnRl
eHQgfHwgIWRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCkuc2V0dGluZ3MoKS50ZXN0U2V0dGlu
Z0VuYWJsZWQoKSkgewotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNl
dHRpbmdBdHRyaWJ1dGUiKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIikpOwot
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxl
dGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5h
bWUpOwotICAgIH0KLSNlbmRpZgogICAgIHB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNs
aWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZU1ldGhvZFBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0
cmluZygpLCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2QpLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnB1YmxpY0FuZFByaXZhdGVNZXRo
b2RQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAw
LCBTdHJpbmcoKSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0
aG9kKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG90eXBlKCkt
PmdldERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudmFsdWVzUHJp
dmF0ZU5hbWUoKSksIERvbnRFbnVtKTsKQEAgLTIyNTIsMzYgKzIyMTMsNiBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpnZXRTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqR2V0dGVy
Pigqc3RhdGUsIHRoaXNWYWx1ZSwgIlRlc3RTdWJPYmoiKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQotewotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwotICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdC53cmFwcGVkKCkuZnJh
bWUoKSkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFNldHRpbmdzJiBzZXR0
aW5ncyA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgaWYg
KCFzZXR0aW5ncy50ZXN0U2V0dGluZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Ci0gICAgcmV0dXJuIEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUudm0o
KSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3RvckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJUZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZyIpOwotfQotCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvclNldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7Ci0gICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IuCi0g
ICAgcmV0dXJuIHRoaXNPYmplY3QucHV0RGlyZWN0KHN0YXRlLnZtKCksIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLnZtKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiVGVz
dFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSwgc3RybGVuKCJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0
dGluZyIpKSwgdmFsdWUpOwotfQotCi1ib29sIHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCi17Ci0gICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNl
dHRpbmdDb25zdHJ1Y3RvclNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
IlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RPYmpFbnVtQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtMzU2OCw0MiArMzQ5OSw2IEBAIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxl
ZEF0UnVudGltZUF0dHJpYnUKIAogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQot
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGVH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQotewotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwotICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
LSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5lbmFi
bGVkQnlTZXR0aW5nQXR0cmlidXRlKCkpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCi17Ci0gICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqRW5hYmxlZEJ5U2V0dGlu
Z0F0dHJpYnV0ZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRl
LCB0aGlzVmFsdWUsICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIik7Ci19Ci0KLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlU2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
LXsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgYXV0byBuYXRp
dmVWYWx1ZSA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOwotICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGltcGwuc2V0RW5hYmxlZEJ5
U2V0dGluZ0F0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7Ci0gICAgcmV0dXJuIHRydWU7
Ci19Ci0KLWJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKLXsKLSAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRK
U1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlU2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpOwotfQotCi0jZW5k
aWYKLQogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01MTkzLDI3ICs1
MDg4LDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldvcmxkU3BlY2lmaWNNZXRob2RCb2R5Pigqc3RhdGUsICJ3b3JsZFNwZWNpZmljTWV0aG9k
Iik7CiB9CiAKLSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09w
ZXJhdGlvbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQotewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwotICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1l
bnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpbXBsLmVuYWJs
ZWRCeVNldHRpbmdPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKLSAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlv
bihFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRp
b25Cb2R5Pigqc3RhdGUsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIik7Ci19Ci0KLSNlbmRp
ZgotCiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXVlcy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVldWVzLnB5CShy
ZXZpc2lvbiAyMjE1NDgpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMv
cXVldWVzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yOTcsNyArMjk3LDcgQEAgY2xhc3MgUGF0Y2hQ
cm9jZXNzaW5nUXVldWUoQWJzdHJhY3RQYXRjaAogCiAgICAgICAgIHNlbGYuX2NyZWF0ZV9wb3J0
KCkKIAotICAgIGRlZiBfdXBsb2FkX3Jlc3VsdHNfYXJjaGl2ZV9mb3JfcGF0Y2goc2VsZiwgcGF0
Y2gsIHJlc3VsdHNfYXJjaGl2ZV96aXApOgorICAgIGRlZiBfdXBsb2FkX3Jlc3VsdHNfYXJjaGl2
ZV9mb3JfcGF0Y2goc2VsZiwgcGF0Y2gsIHJlc3VsdHNfYXJjaGl2ZV96aXAsIGVycm9yX21lc3Nh
Z2UpOgogICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydDoKICAgICAgICAgICAgIHNlbGYuX2NyZWF0
ZV9wb3J0KCkKIApAQCAtMzA4LDEyICszMDgsMTEgQEAgY2xhc3MgUGF0Y2hQcm9jZXNzaW5nUXVl
dWUoQWJzdHJhY3RQYXRjaAogICAgICAgICAjIFJld2luZCB0aGUgZmlsZSBvYmplY3QgdG8gc3Rh
cnQgKHNpbmNlIE1lY2hhbml6ZSB3b24ndCBkbyB0aGF0IGF1dG9tYXRpY2FsbHkpCiAgICAgICAg
ICMgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDU5MwogICAg
ICAgICByZXN1bHRzX2FyY2hpdmVfZmlsZS5zZWVrKDApCi0gICAgICAgICMgRklYTUU6IFRoaXMg
aXMgYSBzbWFsbCBsaWUgdG8gYWx3YXlzIHNheSBydW4td2Via2l0LXRlc3RzIHNpbmNlIENocm9t
aXVtIHVzZXMgbmV3LXJ1bi13ZWJraXQtdGVzdHMuCi0gICAgICAgICMgV2UgY291bGQgbWFrZSB0
aGlzIGNvZGUgbG9vayB1cCB0aGUgdGVzdCBzY3JpcHQgbmFtZSBvZmYgdGhlIHBvcnQuCiAgICAg
ICAgIGNvbW1lbnRfdGV4dCA9ICJUaGUgYXR0YWNoZWQgdGVzdCBmYWlsdXJlcyB3ZXJlIHNlZW4g
d2hpbGUgcnVubmluZyBydW4td2Via2l0LXRlc3RzIG9uIHRoZSAlcy5cbiIgJSAoc2VsZi5uYW1l
KQotICAgICAgICAjIEZJWE1FOiBXZSBjb3VsZCBlYXNpbHkgbGlzdCB0aGUgdGVzdCBmYWlsdXJl
cyBmcm9tIHRoZSBhcmNoaXZlIGhlcmUsCi0gICAgICAgICMgY3VycmVudGx5IGNhbGxlcnMgZG8g
dGhhdCBzZXBhcmF0ZWx5LgogICAgICAgICBjb21tZW50X3RleHQgKz0gQm90SW5mbyhzZWxmLl90
b29sLCBzZWxmLl9wb3J0Lm5hbWUoKSkuc3VtbWFyeV90ZXh0KCkKKyAgICAgICAgY29tbWVudF90
ZXh0ICs9IGVycm9yX21lc3NhZ2UKKyAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYWxzbyB0
YWcgdGhlIGNvbW1lbnQgd2l0aCBwYXRjaC5pZCgpLCBpdCBjYW4gYmUgb2JzZWxldGVkIHdoZW4K
KyAgICAgICAgIyB0aGUgcGF0Y2ggZ2V0cyBvYnNlbGV0ZWQuCiAgICAgICAgIHNlbGYuX3Rvb2wu
YnVncy5hZGRfYXR0YWNobWVudF90b19idWcocGF0Y2guYnVnX2lkKCksIHJlc3VsdHNfYXJjaGl2
ZV9maWxlLCBkZXNjcmlwdGlvbiwgZmlsZW5hbWU9ImxheW91dC10ZXN0LXJlc3VsdHMuemlwIiwg
Y29tbWVudF90ZXh0PWNvbW1lbnRfdGV4dCkKIAogCkBAIC0zNDgsMTEgKzM0NywxMyBAQCBjbGFz
cyBDb21taXRRdWV1ZShQYXRjaFByb2Nlc3NpbmdRdWV1ZSwgCiAgICAgICAgICAgICBzZWxmLl9k
aWRfZXJyb3IocGF0Y2gsICIlcyBkaWQgbm90IHByb2Nlc3MgcGF0Y2guIFJlYXNvbjogJXMiICUg
KHNlbGYubmFtZSwgZXJyb3IuZmFpbHVyZV9tZXNzYWdlKSkKICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6Ci0gICAgICAgICAgICB2YWxpZGF0
b3IgPSBDb21taXR0ZXJWYWxpZGF0b3Ioc2VsZi5fdG9vbCkKLSAgICAgICAgICAgIHZhbGlkYXRv
ci5yZWplY3RfcGF0Y2hfZnJvbV9jb21taXRfcXVldWUocGF0Y2guaWQoKSwgc2VsZi5fZXJyb3Jf
bWVzc2FnZV9mb3JfYnVnKHRhc2ssIHBhdGNoLCBlKSkKKyAgICAgICAgICAgIGVycm9yX21lc3Nh
Z2UgPSBzZWxmLl9lcnJvcl9tZXNzYWdlX2Zvcl9idWcodGFzaywgcGF0Y2gsIGUpCiAgICAgICAg
ICAgICByZXN1bHRzX2FyY2hpdmUgPSB0YXNrLnJlc3VsdHNfYXJjaGl2ZV9mcm9tX3BhdGNoX3Rl
c3RfcnVuKHBhdGNoKQogICAgICAgICAgICAgaWYgcmVzdWx0c19hcmNoaXZlOgotICAgICAgICAg
ICAgICAgIHNlbGYuX3VwbG9hZF9yZXN1bHRzX2FyY2hpdmVfZm9yX3BhdGNoKHBhdGNoLCByZXN1
bHRzX2FyY2hpdmUpCisgICAgICAgICAgICAgICAgc2VsZi5fdXBsb2FkX3Jlc3VsdHNfYXJjaGl2
ZV9mb3JfcGF0Y2gocGF0Y2gsIHJlc3VsdHNfYXJjaGl2ZSwgZXJyb3JfbWVzc2FnZSkKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdmFsaWRhdG9yID0gQ29tbWl0dGVyVmFsaWRh
dG9yKHNlbGYuX3Rvb2wpCisgICAgICAgICAgICAgICAgdmFsaWRhdG9yLnJlamVjdF9wYXRjaF9m
cm9tX2NvbW1pdF9xdWV1ZShwYXRjaC5pZCgpLCBlcnJvcl9tZXNzYWdlKQogICAgICAgICAgICAg
c2VsZi5fZGlkX2ZhaWwocGF0Y2gpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319828</attachid>
            <date>2017-09-03 19:39:54 -0700</date>
            <delta_ts>2017-09-04 03:51:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176312-20170903193953.patch</filename>
            <type>text/plain</type>
            <size>90168</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dl
YklETF0gVW5pZnkgYW5kIHNpbXBsaWZ5IEVuYWJsZUJ5U2V0dGluZ3Mgd2l0aCB0aGUgcmVzdCBv
ZiB0aGUgcnVudGltZSBzZXR0aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2MzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisKKyAgICAgICAg
ICAgIFJlbW92ZSBXZWJDb3JlIHNwZWNpZmljIGlkZW50aWZpZXJzIGZyb20gQ29tbW9uSWRlbnRp
ZmllcnMuIFRoZXkgaGF2ZSBiZWVuIG1vdmVkCisgICAgICAgICAgICB0byBXZWJDb3JlQnVpbHRp
bk5hbWVzIGluIFdlYkNvcmUuCisKIDIwMTctMDktMDMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjIxNTU1LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCShyZXZpc2lvbiAyMjE1NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMjUgKzI2LDQxIEBACiAv
LyBNYXJrZWRBcmd1bWVudEJ1ZmZlciBvZiBwcm9wZXJ0eSBuYW1lcywgcGFzc2VkIHRvIGEgbWFj
cm8gc28gd2UgY2FuIGRvIHNldCB0aGVtIHVwIHZhcmlvdXMKIC8vIHdheXMgd2l0aG91dCByZXBl
YXRpbmcgdGhlIGxpc3QuCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9Q
RVJUWV9OQU1FKG1hY3JvKSBcCi0gICAgbWFjcm8oQW5pbWF0aW9uKSBcCi0gICAgbWFjcm8oQW5p
bWF0aW9uRWZmZWN0UmVhZE9ubHkpIFwKLSAgICBtYWNybyhBbmltYXRpb25UaW1lbGluZSkgXAog
ICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhB
cnJheUl0ZXJhdG9yKSBcCi0gICAgbWFjcm8oQXVkaW8pIFwKICAgICBtYWNybyhCWVRFU19QRVJf
RUxFTUVOVCkgXAogICAgIG1hY3JvKEJvb2xlYW4pIFwKLSAgICBtYWNybyhDYWNoZSkgXAotICAg
IG1hY3JvKENhY2hlU3RvcmFnZSkgXAogICAgIG1hY3JvKENvbGxhdG9yKSBcCiAgICAgbWFjcm8o
Q3JlZGVudGlhbCkgXAotICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCi0gICAgbWFj
cm8oQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5KSBcCiAgICAgbWFjcm8oRGF0ZSkgXAogICAgIG1hY3Jv
KERhdGVUaW1lRm9ybWF0KSBcCiAgICAgbWFjcm8oRGF0YVRyYW5zZmVySXRlbSkgXAogICAgIG1h
Y3JvKERhdGFUcmFuc2Zlckl0ZW1MaXN0KSBcCi0gICAgbWFjcm8oRG9jdW1lbnRUaW1lbGluZSkg
XAogICAgIG1hY3JvKEVycm9yKSBcCiAgICAgbWFjcm8oRXZhbEVycm9yKSBcCi0gICAgbWFjcm8o
RmVkZXJhdGVkQ3JlZGVudGlhbCkgXAotICAgIG1hY3JvKEZpbGVTeXN0ZW0pIFwKLSAgICBtYWNy
byhGaWxlU3lzdGVtRGlyZWN0b3J5RW50cnkpIFwKLSAgICBtYWNybyhGaWxlU3lzdGVtRGlyZWN0
b3J5UmVhZGVyKSBcCi0gICAgbWFjcm8oRmlsZVN5c3RlbUVudHJ5KSBcCi0gICAgbWFjcm8oRmls
ZVN5c3RlbUZpbGVFbnRyeSkgXAogICAgIG1hY3JvKEZ1bmN0aW9uKSBcCi0gICAgbWFjcm8oR2Ft
ZXBhZCkgXAotICAgIG1hY3JvKEdhbWVwYWRCdXR0b24pIFwKLSAgICBtYWNybyhHYW1lcGFkRXZl
bnQpIFwKICAgICBtYWNybyhHZW5lcmF0b3JGdW5jdGlvbikgXAotICAgIG1hY3JvKEhlYWRlcnMp
IFwKLSAgICBtYWNybyhIVE1MQXVkaW9FbGVtZW50KSBcCi0gICAgbWFjcm8oSFRNTFNsb3RFbGVt
ZW50KSBcCi0gICAgbWFjcm8oSURCQ3Vyc29yKSBcCi0gICAgbWFjcm8oSURCQ3Vyc29yV2l0aFZh
bHVlKSBcCi0gICAgbWFjcm8oSURCRGF0YWJhc2UpIFwKLSAgICBtYWNybyhJREJGYWN0b3J5KSBc
Ci0gICAgbWFjcm8oSURCSW5kZXgpIFwKLSAgICBtYWNybyhJREJLZXlSYW5nZSkgXAotICAgIG1h
Y3JvKElEQk9iamVjdFN0b3JlKSBcCi0gICAgbWFjcm8oSURCT3BlbkRCUmVxdWVzdCkgXAotICAg
IG1hY3JvKElEQlJlcXVlc3QpIFwKLSAgICBtYWNybyhJREJUcmFuc2FjdGlvbikgXAotICAgIG1h
Y3JvKElEQlZlcnNpb25DaGFuZ2VFdmVudCkgXAogICAgIG1hY3JvKEluZmluaXR5KSBcCi0gICAg
bWFjcm8oSW5wdXRFdmVudCkgXAotICAgIG1hY3JvKEludGVyc2VjdGlvbk9ic2VydmVyKSBcCi0g
ICAgbWFjcm8oSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSkgXAogICAgIG1hY3JvKEludGwpIFwK
ICAgICBtYWNybyhKU09OKSBcCiAgICAgbWFjcm8oTG9hZGVyKSBcCiAgICAgbWFjcm8oTWFwKVwK
ICAgICBtYWNybyhNYXBJdGVyYXRvcilcCiAgICAgbWFjcm8oTWF0aCkgXAotICAgIG1hY3JvKE1l
ZGlhRW5jcnlwdGVkRXZlbnQpIFwKLSAgICBtYWNybyhNZWRpYUtleU1lc3NhZ2VFdmVudCkgXAot
ICAgIG1hY3JvKE1lZGlhS2V5U2Vzc2lvbikgXAotICAgIG1hY3JvKE1lZGlhS2V5U3RhdHVzTWFw
KSBcCi0gICAgbWFjcm8oTWVkaWFLZXlTeXN0ZW1BY2Nlc3MpIFwKLSAgICBtYWNybyhNZWRpYUtl
eXMpIFwKLSAgICBtYWNybyhXZWJLaXRNZWRpYUtleUVycm9yKSBcCi0gICAgbWFjcm8oV2ViS2l0
TWVkaWFLZXlOZWVkZWRFdmVudCkgXAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5U2Vzc2lvbikg
XAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5cykgXAotICAgIG1hY3JvKFdlYktpdE1lZGlhS2V5
TWVzc2FnZUV2ZW50KSBcCi0gICAgbWFjcm8oTWVkaWFTdHJlYW1FdmVudCkgXAotICAgIG1hY3Jv
KE1vZGVybk1lZGlhQ29udHJvbHMpIFwKICAgICBtYWNybyhOYU4pIFwKLSAgICBtYWNybyhOYXZp
Z2F0b3JDcmVkZW50aWFscykgXAotICAgIG1hY3JvKE5hdmlnYXRvck1lZGlhRGV2aWNlcykgXAot
ICAgIG1hY3JvKE5hdmlnYXRvclVzZXJNZWRpYSkgXAogICAgIG1hY3JvKE51bWJlcikgXAogICAg
IG1hY3JvKE51bWJlckZvcm1hdCkgXAogICAgIG1hY3JvKE9iamVjdCkgXAotICAgIG1hY3JvKFBh
c3N3b3JkQ3JlZGVudGlhbCkgXAotICAgIG1hY3JvKFBheW1lbnRBZGRyZXNzKSBcCi0gICAgbWFj
cm8oUGF5bWVudFJlcXVlc3QpIFwKLSAgICBtYWNybyhQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50
KSBcCi0gICAgbWFjcm8oUGF5bWVudFJlc3BvbnNlKSBcCi0gICAgbWFjcm8oUGVyZm9ybWFuY2VF
bnRyeSkgXAotICAgIG1hY3JvKFBlcmZvcm1hbmNlRW50cnlMaXN0KSBcCi0gICAgbWFjcm8oUGVy
Zm9ybWFuY2VNYXJrKSBcCi0gICAgbWFjcm8oUGVyZm9ybWFuY2VNZWFzdXJlKSBcCi0gICAgbWFj
cm8oUGVyZm9ybWFuY2VPYnNlcnZlcikgXAotICAgIG1hY3JvKFBlcmZvcm1hbmNlT2JzZXJ2ZXJF
bnRyeUxpc3QpIFwKLSAgICBtYWNybyhQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKSBcCiAgICAg
bWFjcm8oUHJvbWlzZSkgXAogICAgIG1hY3JvKFByb3h5KSBcCiAgICAgbWFjcm8oUmFuZ2VFcnJv
cikgXAogICAgIG1hY3JvKFJlZmVyZW5jZUVycm9yKSBcCiAgICAgbWFjcm8oUmVmbGVjdCkgXAog
ICAgIG1hY3JvKFJlZ0V4cCkgXAotICAgIG1hY3JvKFJlcXVlc3QpIFwKLSAgICBtYWNybyhSZXNw
b25zZSkgXAotICAgIG1hY3JvKFJUQ0RhdGFDaGFubmVsKSBcCi0gICAgbWFjcm8oUlRDRGF0YUNo
YW5uZWxFdmVudCkgXAotICAgIG1hY3JvKFJUQ0RUTUZTZW5kZXIpIFwKLSAgICBtYWNybyhSVENE
VE1GVG9uZUNoYW5nZUV2ZW50KSBcCi0gICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCi0gICAg
bWFjcm8oUlRDSWNlVHJhbnNwb3J0KSBcCi0gICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb24pIFwK
LSAgICBtYWNybyhSVENSdHBSZWNlaXZlcikgXAotICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAot
ICAgIG1hY3JvKFJUQ1J0cFRyYW5zY2VpdmVyKSBcCi0gICAgbWFjcm8oUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uKSBcCi0gICAgbWFjcm8oUlRDU3RhdHNSZXBvcnQpIFwKLSAgICBtYWNybyhSVENUcmFj
a0V2ZW50KSBcCi0gICAgbWFjcm8oU2VydmljZVdvcmtlcilcCi0gICAgbWFjcm8oU2VydmljZVdv
cmtlckNvbnRhaW5lcilcCi0gICAgbWFjcm8oU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKVwKLSAg
ICBtYWNybyhTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKVwKICAgICBtYWNybyhTZXQpXAogICAg
IG1hY3JvKFNldEl0ZXJhdG9yKVwKLSAgICBtYWNybyhTaGFkb3dSb290KSBcCiAgICAgbWFjcm8o
U2hhcmVkQXJyYXlCdWZmZXIpIFwKLSAgICBtYWNybyhTdGF0aWNSYW5nZSkgXAogICAgIG1hY3Jv
KFN0cmluZykgXAogICAgIG1hY3JvKFN5bWJvbCkgXAogICAgIG1hY3JvKFN5bnRheEVycm9yKSBc
CkBAIC0xNTMsMzIgKzY5LDYgQEAKICAgICBtYWNybyhVVEMpIFwKICAgICBtYWNybyhXZWFrTWFw
KVwKICAgICBtYWNybyhXZWFrU2V0KVwKLSAgICBtYWNybyhXZWJHTDJSZW5kZXJpbmdDb250ZXh0
KSBcCi0gICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgXAotICAgIG1hY3JvKFdlYkdQ
VUJ1ZmZlcikgXAotICAgIG1hY3JvKFdlYkdQVUNvbW1hbmRCdWZmZXIpIFwKLSAgICBtYWNybyhX
ZWJHUFVDb21tYW5kUXVldWUpIFwKLSAgICBtYWNybyhXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXIpIFwKLSAgICBtYWNybyhXZWJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSkgXAotICAgIG1hY3Jv
KFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IpIFwKLSAgICBtYWNybyhXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSkgXAotICAgIG1hY3JvKFdlYkdQVURyYXdhYmxlKSBcCi0gICAgbWFjcm8oV2Vi
R1BVRnVuY3Rpb24pIFwKLSAgICBtYWNybyhXZWJHUFVMaWJyYXJ5KSBcCi0gICAgbWFjcm8oV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcikgXAotICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKSBcCi0gICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
IFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IpIFwKLSAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpIFwKLSAgICBt
YWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKSBcCi0gICAgbWFjcm8oV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCkgXAotICAgIG1hY3JvKFdlYkdQVVNpemUpIFwKLSAgICBtYWNybyhXZWJHUFVU
ZXh0dXJlKSBcCi0gICAgbWFjcm8oV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IpIFwKLSAgICBtYWNy
byhXZWJTb2NrZXQpIFwKLSAgICBtYWNybyhXcml0YWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKF9f
ZGVmaW5lR2V0dGVyX18pIFwKICAgICBtYWNybyhfX2RlZmluZVNldHRlcl9fKSBcCiAgICAgbWFj
cm8oX19sb29rdXBHZXR0ZXJfXykgXApAQCAtMTkxLDcgKzgxLDYgQEAKICAgICBtYWNybyhhc3Np
Z24pIFwKICAgICBtYWNybyhiYWNrKSBcCiAgICAgbWFjcm8oYmluZCkgXAotICAgIG1hY3JvKGJs
dXIpIFwKICAgICBtYWNybyhidWZmZXIpIFwKICAgICBtYWNybyhieXRlTGVuZ3RoKSBcCiAgICAg
bWFjcm8oYnl0ZU9mZnNldCkgXApAQCAtMTk5LDE0ICs4OCwxMSBAQAogICAgIG1hY3JvKGJ5dGVj
b2RlSW5kZXgpIFwKICAgICBtYWNybyhieXRlY29kZXMpIFwKICAgICBtYWNybyhieXRlY29kZXNJ
RCkgXAotICAgIG1hY3JvKGNhY2hlcykgXAogICAgIG1hY3JvKGNhbGVuZGFyKSBcCiAgICAgbWFj
cm8oY2FsbGVlKSBcCiAgICAgbWFjcm8oY2FsbGVyKSBcCiAgICAgbWFjcm8oY2FzZUZpcnN0KSBc
CiAgICAgbWFjcm8oY2xlYXIpIFwKLSAgICBtYWNybyhjbG9zZSkgXAotICAgIG1hY3JvKGNsb3Nl
ZCkgXAogICAgIG1hY3JvKGNvbGxhdGlvbikgXAogICAgIG1hY3JvKGNvbHVtbikgXAogICAgIG1h
Y3JvKGNvbXBpbGF0aW9uS2luZCkgXApAQCAtMjE3LDE0ICsxMDMsMTIgQEAKICAgICBtYWNybyhj
b25zdHJ1Y3RvcikgXAogICAgIG1hY3JvKGNvdW50KSBcCiAgICAgbWFjcm8oY291bnRlcnMpIFwK
LSAgICBtYWNybyhjdXN0b21FbGVtZW50cykgXAogICAgIG1hY3JvKGRheSkgXAogICAgIG1hY3Jv
KGRlZmluZVByb3BlcnR5KSBcCiAgICAgbWFjcm8oZGVzY3JpcHRpb24pIFwKICAgICBtYWNybyhk
ZXNjcmlwdGlvbnMpIFwKICAgICBtYWNybyhkZXRhaWwpIFwKICAgICBtYWNybyhkaXNwbGF5TmFt
ZSkgXAotICAgIG1hY3JvKGRvY3VtZW50KSBcCiAgICAgbWFjcm8oZG9uZSkgXAogICAgIG1hY3Jv
KGRvdEFsbCkgXAogICAgIG1hY3JvKGVudW1lcmFibGUpIFwKQEAgLTIzNiwxMiArMTIwLDEwIEBA
CiAgICAgbWFjcm8oZXhpdEtpbmQpIFwKICAgICBtYWNybyhmZXRjaCkgXAogICAgIG1hY3JvKGZs
YWdzKSBcCi0gICAgbWFjcm8oZm9jdXMpIFwKICAgICBtYWNybyhmb3JFYWNoKSBcCiAgICAgbWFj
cm8oZm9ybWF0TWF0Y2hlcikgXAogICAgIG1hY3JvKGZvcm1hdFRvUGFydHMpIFwKICAgICBtYWNy
byhmb3J3YXJkKSBcCi0gICAgbWFjcm8oZnJhbWVzKSBcCiAgICAgbWFjcm8oZnJvbSkgXAogICAg
IG1hY3JvKGZyb21DaGFyQ29kZSkgXAogICAgIG1hY3JvKGdldCkgXApAQCAtMjU4LDI1ICsxNDAs
MjEgQEAKICAgICBtYWNybyhpZ25vcmVDYXNlKSBcCiAgICAgbWFjcm8oaWdub3JlUHVuY3R1YXRp
b24pIFwKICAgICBtYWNybyhpbmRleCkgXAotICAgIG1hY3JvKGluZGV4ZWREQikgXAogICAgIG1h
Y3JvKGluZmVycmVkTmFtZSkgXAogICAgIG1hY3JvKGlucHV0KSBcCiAgICAgbWFjcm8oaW5zdHJ1
Y3Rpb25Db3VudCkgXAogICAgIG1hY3JvKGlzQXJyYXkpIFwKICAgICBtYWNybyhpc0VuYWJsZWQp
IFwKICAgICBtYWNybyhpc1Byb3RvdHlwZU9mKSBcCi0gICAgbWFjcm8oaXNTZWN1cmVDb250ZXh0
KSBcCiAgICAgbWFjcm8oaXNWaWV3KSBcCiAgICAgbWFjcm8oaXNXYXRjaHBvaW50KSBcCiAgICAg
bWFjcm8oamV0dGlzb25SZWFzb24pIFwKICAgICBtYWNybyhqb2luKSBcCi0gICAgbWFjcm8oS2V5
ZnJhbWVFZmZlY3QpIFwKICAgICBtYWNybyhsYXN0SW5kZXgpIFwKICAgICBtYWNybyhsZW5ndGgp
IFwKICAgICBtYWNybyhsaW5lKSBcCiAgICAgbWFjcm8obG9jYWxlKSBcCiAgICAgbWFjcm8obG9j
YWxlTWF0Y2hlcikgXAotICAgIG1hY3JvKGxvY2F0aW9uKSBcCiAgICAgbWFjcm8obWVzc2FnZSkg
XAogICAgIG1hY3JvKG1pbnV0ZSkgXAogICAgIG1hY3JvKG1vbnRoKSBcCkBAIC0yOTEsMTUgKzE2
OSwxMiBAQAogICAgIG1hY3JvKG51bWVyaWMpIFwKICAgICBtYWNybyhvZikgXAogICAgIG1hY3Jv
KG9wY29kZSkgXAotICAgIG1hY3JvKG9wZW5lcikgXAogICAgIG1hY3JvKG9yaWdpbikgXAogICAg
IG1hY3JvKG9zckV4aXRTaXRlcykgXAogICAgIG1hY3JvKG9zckV4aXRzKSBcCi0gICAgbWFjcm8o
cGFyZW50KSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhwYXJzZUludCkgXAogICAg
IG1hY3JvKHBhcnNlRmxvYXQpIFwKLSAgICBtYWNybyhwb3N0TWVzc2FnZSkgXAogICAgIG1hY3Jv
KHByb2ZpbGVkQnl0ZWNvZGVzKSBcCiAgICAgbWFjcm8ocHJvcGVydHlJc0VudW1lcmFibGUpIFwK
ICAgICBtYWNybyhwcm90b3R5cGUpIFwKQEAgLTMwOCwxMCArMTgzLDggQEAKICAgICBtYWNybyhy
ZXBsYWNlKSBcCiAgICAgbWFjcm8ocmVzb2x2ZSkgXAogICAgIG1hY3JvKHNlY29uZCkgXAotICAg
IG1hY3JvKHNlbGYpIFwKICAgICBtYWNybyhzZW5zaXRpdml0eSkgXAogICAgIG1hY3JvKHNldCkg
XAotICAgIG1hY3JvKHNob3dNb2RhbERpYWxvZykgXAogICAgIG1hY3JvKHNpemUpIFwKICAgICBt
YWNybyhzbGljZSkgXAogICAgIG1hY3JvKHNvdXJjZSkgXApAQCAtMzM1LDI2ICsyMDgsMTIgQEAK
ICAgICBtYWNybyh0b0xvY2FsZVN0cmluZykgXAogICAgIG1hY3JvKHRvUHJlY2lzaW9uKSBcCiAg
ICAgbWFjcm8odG9TdHJpbmcpIFwKLSAgICBtYWNybyh0b3ApIFwKICAgICBtYWNybyh1aWQpIFwK
ICAgICBtYWNybyh1bmljb2RlKSBcCiAgICAgbWFjcm8odXNhZ2UpIFwKICAgICBtYWNybyh2YWx1
ZSkgXAogICAgIG1hY3JvKHZhbHVlT2YpIFwKLSAgICBtYWNybyh3ZWJraXQpIFwKLSAgICBtYWNy
byhjb2xsZWN0TWF0Y2hpbmdFbGVtZW50c0luRmxhdFRyZWUpIFwKLSAgICBtYWNybyhtYXRjaGlu
Z0VsZW1lbnRJbkZsYXRUcmVlKSBcCi0gICAgbWFjcm8od2Via2l0SURCQ3Vyc29yKSBcCi0gICAg
bWFjcm8od2Via2l0SURCRGF0YWJhc2UpIFwKLSAgICBtYWNybyh3ZWJraXRJREJGYWN0b3J5KSBc
Ci0gICAgbWFjcm8od2Via2l0SURCSW5kZXgpIFwKLSAgICBtYWNybyh3ZWJraXRJREJLZXlSYW5n
ZSkgXAotICAgIG1hY3JvKHdlYmtpdElEQk9iamVjdFN0b3JlKSBcCi0gICAgbWFjcm8od2Via2l0
SURCUmVxdWVzdCkgXAotICAgIG1hY3JvKHdlYmtpdElEQlRyYW5zYWN0aW9uKSBcCi0gICAgbWFj
cm8od2Via2l0SW5kZXhlZERCKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAotICAgIG1hY3JvKHdp
bmRvdykgXAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCiAgICAgbWFjcm8oeWVhcikKIApJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTctMDktMDMgIFNhbSBXZWluaWcgIDxz
YW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbV2ViSURMXSBTaW1wbGlmeSBFbmFibGVkQnlTZXR0
aW5ncyBnZW5lcmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzYzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
TmVlZHNSdW50aW1lQ2hlY2spOgorICAgICAgICAoT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNl
KToKKyAgICAgICAgKEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZSk6CisgICAgICAgIChHZW5l
cmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyk6CisgICAgICAgIChHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmlu
aXRpb24pOgorCisgICAgICAgICAgICAtIFNpbXBsaWZ5IHRoZSBbRW5hYmxlZEJ5U2V0dGluZ10g
Y29kZSBnZW5lcmF0aW9uIGJ5IG1lcmdpbmcgaXQgd2l0aCB0aGUgb3RoZXIKKyAgICAgICAgICAg
IHJ1bnRpbWUgY2hlY2tzIChFeHBvc2VkLCBFbmFibGVkQXRSdW50aW1lLCBFbmFibGVkRm9yV29y
bGQsIGFuZCBTZWN1cmVDb250ZXh0KS4KKworICAgICAgICAgICAgLSBTd2l0Y2hlcyB0byB1c2lu
ZyBXZWJDb3JlQnVpbHRpbk5hbWVzIGZvciBpZGVudGlmaWVycywgcmF0aGVyIHRoYW4gcmVseWlu
ZworICAgICAgICAgICAgb24gdGhlIGFwcHJvcHJpYXRlIGlkZW50aWZpZXJzIGJlaW5nIGF2YWls
YWJsZSBvbiBKYXZhU2NyaXB0Q29yZSdzIENvbW1vbklkZW50aWZpZXJzCisgICAgICAgICAgICB3
aGljaCB3YXMgYW4gdW5uZWNlc3NhcnkgbGF5ZXJpbmcgdmlvbGF0aW9uLiBUaGVyZSBhcmUgc3Rp
bGwgcHJvYmxlbXMgd2l0aCB0aGlzCisgICAgICAgICAgICBhcyB3ZSBjb250aW51ZSB0byBiZSBp
bmNvbnNpc3RlbnQgIGFib3V0IHdoaWNoIGlkZW50aWZpZXJzIGRlc2VydmUgdG8gYmUgaW4gCisg
ICAgICAgICAgICBXZWJDb3JlQnVpbHRpbk5hbWVzLCBhbmQgd2hpY2ggb25lcyBjYW4gYmUgY3Jl
YXRlZCBlYWNoIHRpbWUgYW5kIHRoZXJlIGlzIG5vCisgICAgICAgICAgICBhdXRvbWF0aW9uIG9m
IFdlYkNvcmVCdWlsdGluTmFtZXMgZnJvbSB0aGUgSURMcy4KKworICAgICAgICAgICAgLSBFbmZv
cmNlIGF0IGNvZGUgZ2VuZXJhdGlvbiB0aW1lIHRoYXQgW0VuYWJsZWRCeVNldHRpbmddIGNhbiBv
bmx5IGJlIHVzZWQKKyAgICAgICAgICAgIG9uIGludGVyZmFjZXMgdGhhdCBhcmUgdW5pcXVlbHkg
ZXhwb3NlZCB0byB0aGUgd2luZG93IGVudmlyb25tZW50LiBUaGlzIGlzIGEKKyAgICAgICAgICAg
IGNvbmRpdGlvbiB3ZSBzaG91bGQgZmluZCBhIHdheSB0byByZW1vdmUgKGUuZy4gcHJvcGFnYXRp
bmcgbmVjZXNzYXJ5IHNldHRpbmdzIAorICAgICAgICAgICAgdG8gYW4gb2JqZWN0IHRoZSBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IG93bnMpLCBidXQgZm9yIG5vdywgU2V0dGluZ3MgaXMgYSBtYWlu
CisgICAgICAgICAgICB0aHJlYWQgb25seSBvYmplY3QuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc0RPTVdpbmRvd0dl
dE93blByb3BlcnR5U2xvdFJlc3RyaWN0ZWRBY2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SlNE
T01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdp
bmRvdzo6cHV0KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZENyb3NzT3JpZ2luV2luZG93UHJvcGVy
dHlOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjphZGRDcm9zc09yaWdpbldpbmRvd093blByb3Bl
cnR5TmFtZXMpOgorCisgICAgICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgV2ViQ29yZUJ1aWx0aW5O
YW1lcyBmb3IgV2ViQ29yZSBzcGVjaWZpYyBpZGVudGlmaWVycy4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKworICAgICAgICAgICAgQWRkIFdlYkNvcmUg
c3BlY2lmaWMgaWRlbnRpZmllcnMgZnJvbSBKYXZhU2NyaXB0Q29yZSdzIENvbW1vbklkZW50aWZp
ZXJzCisgICAgICAgICAgICBhcyB3ZWxsIGFzIHNvbWUgbmV3IG9uZXMgbmVlZCBieSB0aGUgW0Vu
YWJsZUJ5U2V0dGluZ10gdW5pZmljYXRpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHA6IEFkZGVkLgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmg6IEFkZGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RW5hYmxlZEJ5U2V0dGluZy5pZGw6
IEFkZGVkLgorCisgICAgICAgICAgICBBZGQgbmV3IHRlc3QgZm9yIFtFbmFibGVkQnlTZXR0aW5n
XS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmpl
Y3QuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKworICAgICAg
ICAgICAgUmVtb3ZlIHVzZSBvZiBbRW5hYmxlZEJ5U2V0dGluZ10gZnJvbSBUZXN0T2JqLCBhcyBp
dCBpcyBubyBsb25nZXIKKyAgICAgICAgICAgIHZhbGlkIHRvIHVzZSBbRW5hYmxlZEJ5U2V0dGlu
Z10gb24gaW50ZXJmYWNlcyB0aGF0IGFyZSBubyB1bmlxdWVseQorICAgICAgICAgICAgZXhwb3Nl
ZCB0byB0aGUgd2luZG93IGVudmlyb25tZW50LgorCiAyMDE3LTA5LTAzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgSGF2ZSBnZXRGaWxlTWV0YWRhdGEoKSByZXR1
cm4gYSBzdGQ6Om9wdGlvbmFsPEZpbGVNZXRhZGF0YT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkocmV2aXNpb24gMjIxNTU5KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtOTEsOSArOTEsMTEgQEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmZpbmlzaENyZWF0
aW9uKFZNJgogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBwcm94eSk7CiAgICAgQVNTRVJU
KGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAorICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpOwor
CiAgICAgR2xvYmFsUHJvcGVydHlJbmZvIHN0YXRpY0dsb2JhbHNbXSA9IHsKLSAgICAgICAgR2xv
YmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmRvY3VtZW50LCBqc051bGwoKSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3Bl
cnR5TmFtZXMtPndpbmRvdywgbV9wcm94eSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKGJ1aWx0aW5OYW1lcy5kb2N1bWVudFB1YmxpY05hbWUoKSwg
anNOdWxsKCksIERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyhidWlsdGluTmFtZXMud2luZG93UHVibGljTmFtZSgpLCBtX3Byb3h5LCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAogICAgIH07CiAKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0dsb2Jh
bHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwpAQCAtMTE3LDcgKzExOSw3IEBA
IHZvaWQgSlNET01XaW5kb3dCYXNlOjp1cGRhdGVEb2N1bWVudCgpCiAgICAgYm9vbCBzaG91bGRU
aHJvd1JlYWRPbmx5RXJyb3IgPSBmYWxzZTsKICAgICBib29sIGlnbm9yZVJlYWRPbmx5RXJyb3Jz
ID0gdHJ1ZTsKICAgICBib29sIHB1dFJlc3VsdCA9IGZhbHNlOwotICAgIHN5bWJvbFRhYmxlUHV0
VG91Y2hXYXRjaHBvaW50U2V0KHRoaXMsIGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lcy0+
ZG9jdW1lbnQsIHRvSlMoZXhlYywgdGhpcywgbV93cmFwcGVkLT5kb2N1bWVudCgpKSwgc2hvdWxk
VGhyb3dSZWFkT25seUVycm9yLCBpZ25vcmVSZWFkT25seUVycm9ycywgcHV0UmVzdWx0KTsKKyAg
ICBzeW1ib2xUYWJsZVB1dFRvdWNoV2F0Y2hwb2ludFNldCh0aGlzLCBleGVjLCBzdGF0aWNfY2Fz
dDxKU1ZNQ2xpZW50RGF0YSo+KGV4ZWMtPnZtKCkuY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
LmRvY3VtZW50UHVibGljTmFtZSgpLCB0b0pTKGV4ZWMsIHRoaXMsIG1fd3JhcHBlZC0+ZG9jdW1l
bnQoKSksIHNob3VsZFRocm93UmVhZE9ubHlFcnJvciwgaWdub3JlUmVhZE9ubHlFcnJvcnMsIHB1
dFJlc3VsdCk7CiB9CiAKIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIEpTRE9NV2luZG93QmFzZTo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAyMjE1NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCiAjaW5jbHVkZSAiU2NoZWR1bGVkQWN0aW9uLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9K
U0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9Mb29rdXAuaD4KIApAQCAtODIsMTYgKzgz
LDE4IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG8KICAgICBWTSYg
dm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAorICAgIGF1dG8mIGJ1aWx0aW5OYW1lcyA9IHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpOworCiAgICAgLy8gV2UgZG9uJ3Qgd2Fu
dCBhbnkgcHJvcGVydGllcyBvdGhlciB0aGFuICJjbG9zZSIgYW5kICJjbG9zZWQiIG9uIGEgZnJh
bWVsZXNzIHdpbmRvdwogICAgIC8vIChpLmUuIG9uZSB3aG9zZSBwYWdlIGdvdCBjbG9zZWQsIG9y
IHdob3NlIGlmcmFtZSBnb3QgcmVtb3ZlZCkuCiAgICAgLy8gRklYTUU6IFRoaXMgaGFuZGxpbmcg
Zm9yIGZyYW1lbGVzcyB3aW5kb3dzIGR1cGxpY2F0ZXMgc2ltaWxhciBiZWhhdmlvdXIgZm9yIGNy
b3NzLW9yaWdpbgogICAgIC8vIGFjY2VzcyBiZWxvdzsgd2Ugc2hvdWxkIHRyeSB0byBmaW5kIGEg
d2F5IHRvIG1lcmdlIHRoZSB0d28uCiAgICAgaWYgKCFmcmFtZSkgewotICAgICAgICBpZiAocHJv
cGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZWQpIHsKKyAgICAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBidWlsdGluTmFtZXMuY2xvc2VkUHVibGljTmFtZSgpKSB7CiAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUs
IGpzRE9NV2luZG93Q2xvc2VkKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
Ci0gICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsb3Nl
KSB7CisgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGlj
TmFtZSgpKSB7CiAgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25s
eSB8IERvbnREZWxldGUsIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25DbG9zZSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KQEAgLTExMCwxOSArMTEzLDE5IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0
T3duUHJvcGVydHlTbG8KIAogICAgIC8vIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHdlIGFsbG93
IGFjY2VzcyB0byBjcm9zcy1vcmlnaW4gKERvTm90Q2hlY2tTZWN1cml0eSBpbiBJREwpLgogICAg
IC8vIEFsd2F5cyBwcm92aWRlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiwgb24gYSBmcmVzaCB1bmNh
Y2hlZCBmdW5jdGlvbiBvYmplY3QuCi0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuYmx1cikgeworICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVz
LmJsdXJQdWJsaWNOYW1lKCkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
UmVhZE9ubHksIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRvd0luc3Rh
bmNlRnVuY3Rpb25CbHVyLCAwPik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jbG9zZSkgeworICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLmNsb3NlUHVibGljTmFtZSgpKSB7CiAgICAg
ICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5LCBub25DYWNoaW5nU3RhdGlj
RnVuY3Rpb25HZXR0ZXI8anNET01XaW5kb3dJbnN0YW5jZUZ1bmN0aW9uQ2xvc2UsIDA+KTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLmZvY3VzKSB7CisgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBidWlsdGlu
TmFtZXMuZm9jdXNQdWJsaWNOYW1lKCkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09i
amVjdCwgUmVhZE9ubHksIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcjxqc0RPTVdpbmRv
d0luc3RhbmNlRnVuY3Rpb25Gb2N1cywgMD4pOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucG9zdE1lc3Nh
Z2UpIHsKKyAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5wb3N0TWVzc2FnZVB1
YmxpY05hbWUoKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25s
eSwgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVyPGpzRE9NV2luZG93SW5zdGFuY2VGdW5j
dGlvblBvc3RNZXNzYWdlLCAyPik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTEz
MiwxNiArMTM1LDE2IEBAIHN0YXRpYyBib29sIGpzRE9NV2luZG93R2V0T3duUHJvcGVydHlTbG8K
ICAgICAvLyBiZWhhdmlvci4KICAgICBpZiAoYXV0byogZW50cnkgPSBKU0RPTVdpbmRvdzo6aW5m
bygpLT5zdGF0aWNQcm9wSGFzaFRhYmxlLT5lbnRyeShwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
IC8vIE9ubHkgYWxsb3cgYWNjZXNzIHRvIHRoZXNlIHNwZWNpZmljIHByb3BlcnRpZXMuCi0gICAg
ICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxvY2F0aW9uCi0g
ICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmNsb3Nl
ZAorICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5sb2NhdGlvblB1Ymxp
Y05hbWUoKQorICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy5jbG9z
ZWRQdWJsaWNOYW1lKCkKICAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoCi0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+
cHJvcGVydHlOYW1lcygpLnNlbGYKLSAgICAgICAgICAgIHx8IHByb3BlcnR5TmFtZSA9PSBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkud2luZG93Ci0gICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0g
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmZyYW1lcwotICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5vcGVuZXIKLSAgICAgICAgICAgIHx8IHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucGFyZW50Ci0gICAgICAgICAgICB8fCBwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvcCkgewotICAgICAgICAgICAgYm9v
bCBzaG91bGRFeHBvc2VTZXR0ZXIgPSBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxvY2F0aW9uOworICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1l
cy5zZWxmUHVibGljTmFtZSgpCisgICAgICAgICAgICB8fCBwcm9wZXJ0eU5hbWUgPT0gYnVpbHRp
bk5hbWVzLndpbmRvd1B1YmxpY05hbWUoKQorICAgICAgICAgICAgfHwgcHJvcGVydHlOYW1lID09
IGJ1aWx0aW5OYW1lcy5mcmFtZXNQdWJsaWNOYW1lKCkKKyAgICAgICAgICAgIHx8IHByb3BlcnR5
TmFtZSA9PSBidWlsdGluTmFtZXMub3BlbmVyUHVibGljTmFtZSgpCisgICAgICAgICAgICB8fCBw
cm9wZXJ0eU5hbWUgPT0gYnVpbHRpbk5hbWVzLnBhcmVudFB1YmxpY05hbWUoKQorICAgICAgICAg
ICAgfHwgcHJvcGVydHlOYW1lID09IGJ1aWx0aW5OYW1lcy50b3BQdWJsaWNOYW1lKCkpIHsKKyAg
ICAgICAgICAgIGJvb2wgc2hvdWxkRXhwb3NlU2V0dGVyID0gcHJvcGVydHlOYW1lID09IGJ1aWx0
aW5OYW1lcy5sb2NhdGlvblB1YmxpY05hbWUoKTsKICAgICAgICAgICAgIEN1c3RvbUdldHRlclNl
dHRlciogY3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0s
IGVudHJ5LT5wcm9wZXJ0eUdldHRlcigpLCBzaG91bGRFeHBvc2VTZXR0ZXIgPyBlbnRyeS0+cHJv
cGVydHlQdXR0ZXIoKSA6IG51bGxwdHIpOwogICAgICAgICAgICAgc2xvdC5zZXRDdXN0b21HZXR0
ZXJTZXR0ZXIodGhpc09iamVjdCwgQ3VzdG9tQWNjZXNzb3IsIGN1c3RvbUdldHRlclNldHRlcik7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE5Niw3ICsxOTksNyBAQCBib29sIEpTRE9N
V2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPCiAgICAgUHJvcGVydHlTbG90IHNsb3RDb3B5
ID0gc2xvdDsKICAgICBpZiAoQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIHN0
YXRlLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKSB7CiAgICAgICAgIC8vIERldGVjdCB3aGVuIHdlJ3Jl
IGdldHRpbmcgdGhlIHByb3BlcnR5ICdzaG93TW9kYWxEaWFsb2cnLCB0aGlzIGlzIGRpc2FibGVk
LCBhbmQgaGFzIGl0cyBvcmlnaW5hbCB2YWx1ZS4KLSAgICAgICAgYm9vbCBpc1Nob3dNb2RhbERp
YWxvZ0FuZFNob3VsZEhpZGUgPSBwcm9wZXJ0eU5hbWUgPT0gc3RhdGUtPnByb3BlcnR5TmFtZXMo
KS5zaG93TW9kYWxEaWFsb2cKKyAgICAgICAgYm9vbCBpc1Nob3dNb2RhbERpYWxvZ0FuZFNob3Vs
ZEhpZGUgPSBwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihzdGF0
ZS0+dm0oKS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2hvd01vZGFsRGlhbG9nUHVibGlj
TmFtZSgpCiAgICAgICAgICAgICAmJiAhRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2coKmZy
YW1lKQogICAgICAgICAgICAgJiYgc2xvdC5pc1ZhbHVlKCkgJiYgaXNIb3N0RnVuY3Rpb24oc2xv
dC5nZXRWYWx1ZShzdGF0ZSwgcHJvcGVydHlOYW1lKSwganNET01XaW5kb3dJbnN0YW5jZUZ1bmN0
aW9uU2hvd01vZGFsRGlhbG9nKTsKICAgICAgICAgLy8gVW5sZXNzIHdlJ3JlIGluIHRoZSBzaG93
TW9kYWxEaWFsb2cgc3BlY2lhbCBjYXNlLCB3ZSdyZSBkb25lLgpAQCAtMjA2LDcgKzIwOSw3IEBA
IGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChKU08KICAgICB9CiAKICNpZiBF
TkFCTEUoVVNFUl9NRVNTQUdFX0hBTkRMRVJTKQotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS53ZWJraXQgJiYgdGhpc09iamVjdC0+d3JhcHBlZCgpLnNob3Vs
ZEhhdmVXZWJLaXROYW1lc3BhY2VGb3JXb3JsZCh0aGlzT2JqZWN0LT53b3JsZCgpKSkgeworICAg
IGlmIChwcm9wZXJ0eU5hbWUgPT0gc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPihzdGF0ZS0+
dm0oKS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkud2Via2l0UHVibGljTmFtZSgpICYmIHRo
aXNPYmplY3QtPndyYXBwZWQoKS5zaG91bGRIYXZlV2ViS2l0TmFtZXNwYWNlRm9yV29ybGQodGhp
c09iamVjdC0+d29ybGQoKSkpIHsKICAgICAgICAgc2xvdC5zZXRDYWNoZWFibGVDdXN0b20odGhp
c09iamVjdCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBqc0RPTVdpbmRvd1dlYktpdCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI1NSw3ICsyNTgsNyBAQCBib29sIEpTRE9NV2lu
ZG93OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjCiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKICAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygqc3Rh
dGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKSwgZXJyb3JNZXNzYWdlKSkgewogICAgICAgICAvLyBX
ZSBvbmx5IGFsbG93IHNldHRpbmcgImxvY2F0aW9uIiBhdHRyaWJ1dGUgY3Jvc3Mtb3JpZ2luLgot
ICAgICAgICBpZiAocHJvcGVydHlOYW1lID09IHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkubG9jYXRp
b24pIHsKKyAgICAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlvblB1YmxpY05hbWUo
KSkgewogICAgICAgICAgICAgYm9vbCBwdXRSZXN1bHQgPSBmYWxzZTsKICAgICAgICAgICAgIGlm
IChsb29rdXBQdXQoc3RhdGUsIHByb3BlcnR5TmFtZSwgdGhpc09iamVjdCwgdmFsdWUsICpzX2lu
Zm8uc3RhdGljUHJvcEhhc2hUYWJsZSwgc2xvdCwgcHV0UmVzdWx0KSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcHV0UmVzdWx0OwpAQCAtMjk2LDE0ICsyOTksMjIgQEAgYm9vbCBKU0RPTVdpbmRv
dzo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogfQogCiAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnLyNjcm9zc29yaWdpbnByb3BlcnRpZXMtKC1vLSkKLXN0YXRpYyB2b2lkIGFkZENyb3Nz
T3JpZ2luV2luZG93UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUmIHN0YXRlLCBQcm9wZXJ0eU5hbWVB
cnJheSYgcHJvcGVydHlOYW1lcykKK3N0YXRpYyB2b2lkIGFkZENyb3NzT3JpZ2luV2luZG93UHJv
cGVydHlOYW1lcyhWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzKQogewog
ICAgIHN0YXRpYyBjb25zdCBJZGVudGlmaWVyKiBjb25zdCBwcm9wZXJ0aWVzW10gPSB7Ci0gICAg
ICAgICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkuYmx1ciwgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5j
bG9zZSwgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5jbG9zZWQsCi0gICAgICAgICZzdGF0ZS5wcm9w
ZXJ0eU5hbWVzKCkuZm9jdXMsICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkuZnJhbWVzLCAmc3RhdGUu
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwKLSAgICAgICAgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5s
b2NhdGlvbiwgJnN0YXRlLnByb3BlcnR5TmFtZXMoKS5vcGVuZXIsICZzdGF0ZS5wcm9wZXJ0eU5h
bWVzKCkucGFyZW50LAotICAgICAgICAmc3RhdGUucHJvcGVydHlOYW1lcygpLnBvc3RNZXNzYWdl
LCAmc3RhdGUucHJvcGVydHlOYW1lcygpLnNlbGYsICZzdGF0ZS5wcm9wZXJ0eU5hbWVzKCkudG9w
LAotICAgICAgICAmc3RhdGUucHJvcGVydHlOYW1lcygpLndpbmRvdworICAgICAgICAmc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuYmx1
clB1YmxpY05hbWUoKSwKKyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0u
Y2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmNsb3NlUHVibGljTmFtZSgpLAorICAgICAgICAm
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkuY2xvc2VkUHVibGljTmFtZSgpLAorICAgICAgICAmc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERh
dGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZm9jdXNQdWJsaWNOYW1lKCksCisg
ICAgICAgICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWls
dGluTmFtZXMoKS5mcmFtZXNQdWJsaWNOYW1lKCksCisgICAgICAgICZ2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsCisgICAgICAgICZzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVu
dERhdGEpLT5idWlsdGluTmFtZXMoKS5sb2NhdGlvblB1YmxpY05hbWUoKSwKKyAgICAgICAgJnN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
Lm9wZW5lclB1YmxpY05hbWUoKSwKKyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnBhcmVudFB1YmxpY05hbWUoKSwKKyAg
ICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0
aW5OYW1lcygpLnBvc3RNZXNzYWdlUHVibGljTmFtZSgpLAorICAgICAgICAmc3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuc2VsZlB1Ymxp
Y05hbWUoKSwKKyAgICAgICAgJnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRvcFB1YmxpY05hbWUoKSwKKyAgICAgICAgJnN0YXRpY19j
YXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLndpbmRv
d1B1YmxpY05hbWUoKQogICAgIH07CiAgICAgZm9yIChhdXRvKiBwcm9wZXJ0eSA6IHByb3BlcnRp
ZXMpCiAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKCpwcm9wZXJ0eSk7CkBAIC0zMjcsNyArMzM4
LDcgQEAgc3RhdGljIHZvaWQgYWRkU2NvcGVkQ2hpbGRyZW5JbmRleGVzKEV4ZQogLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jY3Jvc3NvcmlnaW5vd25wcm9wZXJ0eWtleXMtKC1vLSkK
IHN0YXRpYyB2b2lkIGFkZENyb3NzT3JpZ2luV2luZG93T3duUHJvcGVydHlOYW1lcyhFeGVjU3Rh
dGUmIHN0YXRlLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcykKIHsKLSAgICBhZGRD
cm9zc09yaWdpbldpbmRvd1Byb3BlcnR5TmFtZXMoc3RhdGUsIHByb3BlcnR5TmFtZXMpOworICAg
IGFkZENyb3NzT3JpZ2luV2luZG93UHJvcGVydHlOYW1lcyhzdGF0ZS52bSgpLCBwcm9wZXJ0eU5h
bWVzKTsKIAogICAgIHByb3BlcnR5TmFtZXMuYWRkKHN0YXRlLnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZ1RhZ1N5bWJvbCk7CiAgICAgcHJvcGVydHlOYW1lcy5hZGQoc3RhdGUucHJvcGVydHlOYW1l
cygpLmhhc0luc3RhbmNlU3ltYm9sKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgJKHJldmlzaW9uIDIyMTU1OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNzEgKzMwLDIxNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZpbmUg
V0VCQ09SRV9DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFj
cm8pXAorI2RlZmluZSBXRUJDT1JFX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJP
UEVSVFlfTkFNRShtYWNybykgXAorICAgIG1hY3JvKEFuaW1hdGlvbikgXAorICAgIG1hY3JvKEFu
aW1hdGlvbkVmZmVjdFJlYWRPbmx5KSBcCisgICAgbWFjcm8oQW5pbWF0aW9uVGltZWxpbmUpIFwK
KyAgICBtYWNybyhBcHBsZVBheVNlc3Npb24pIFwKKyAgICBtYWNybyhBdWRpbykgXAorICAgIG1h
Y3JvKENhY2hlKSBcCisgICAgbWFjcm8oQ2FjaGVTdG9yYWdlKSBcCisgICAgbWFjcm8oQ3JlZGVu
dGlhbCkgXAorICAgIG1hY3JvKENyZWRlbnRpYWxzQ29udGFpbmVyKSBcCisgICAgbWFjcm8oQ3Vz
dG9tRWxlbWVudFJlZ2lzdHJ5KSBcCisgICAgbWFjcm8oRGF0YVRyYW5zZmVySXRlbSkgXAorICAg
IG1hY3JvKERhdGFUcmFuc2Zlckl0ZW1MaXN0KSBcCisgICAgbWFjcm8oRG9jdW1lbnRUaW1lbGlu
ZSkgXAorICAgIG1hY3JvKEZlZGVyYXRlZENyZWRlbnRpYWwpIFwKKyAgICBtYWNybyhGaWxlU3lz
dGVtKSBcCisgICAgbWFjcm8oRmlsZVN5c3RlbURpcmVjdG9yeUVudHJ5KSBcCisgICAgbWFjcm8o
RmlsZVN5c3RlbURpcmVjdG9yeVJlYWRlcikgXAorICAgIG1hY3JvKEZpbGVTeXN0ZW1FbnRyeSkg
XAorICAgIG1hY3JvKEZpbGVTeXN0ZW1GaWxlRW50cnkpIFwKKyAgICBtYWNybyhHYW1lcGFkKSBc
CisgICAgbWFjcm8oR2FtZXBhZEJ1dHRvbikgXAorICAgIG1hY3JvKEdhbWVwYWRFdmVudCkgXAor
ICAgIG1hY3JvKEhUTUxBdWRpb0VsZW1lbnQpIFwKKyAgICBtYWNybyhIVE1MU2xvdEVsZW1lbnQp
IFwKKyAgICBtYWNybyhIZWFkZXJzKSBcCisgICAgbWFjcm8oSURCQ3Vyc29yKSBcCisgICAgbWFj
cm8oSURCQ3Vyc29yV2l0aFZhbHVlKSBcCisgICAgbWFjcm8oSURCRGF0YWJhc2UpIFwKKyAgICBt
YWNybyhJREJGYWN0b3J5KSBcCisgICAgbWFjcm8oSURCSW5kZXgpIFwKKyAgICBtYWNybyhJREJL
ZXlSYW5nZSkgXAorICAgIG1hY3JvKElEQk9iamVjdFN0b3JlKSBcCisgICAgbWFjcm8oSURCT3Bl
bkRCUmVxdWVzdCkgXAorICAgIG1hY3JvKElEQlJlcXVlc3QpIFwKKyAgICBtYWNybyhJREJUcmFu
c2FjdGlvbikgXAorICAgIG1hY3JvKElEQlZlcnNpb25DaGFuZ2VFdmVudCkgXAorICAgIG1hY3Jv
KElucHV0RXZlbnQpIFwKKyAgICBtYWNybyhJbnRlcnNlY3Rpb25PYnNlcnZlcikgXAorICAgIG1h
Y3JvKEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkpIFwKKyAgICBtYWNybyhLZXlmcmFtZUVmZmVj
dCkgXAorICAgIG1hY3JvKE1lZGlhRW5jcnlwdGVkRXZlbnQpIFwKKyAgICBtYWNybyhNZWRpYUtl
eU1lc3NhZ2VFdmVudCkgXAorICAgIG1hY3JvKE1lZGlhS2V5U2Vzc2lvbikgXAorICAgIG1hY3Jv
KE1lZGlhS2V5U3RhdHVzTWFwKSBcCisgICAgbWFjcm8oTWVkaWFLZXlTeXN0ZW1BY2Nlc3MpIFwK
KyAgICBtYWNybyhNZWRpYUtleXMpIFwKKyAgICBtYWNybyhNZWRpYVNvdXJjZSkgXAorICAgIG1h
Y3JvKE1lZGlhU3RyZWFtKSBcCisgICAgbWFjcm8oTWVkaWFTdHJlYW1FdmVudCkgXAorICAgIG1h
Y3JvKE1lZGlhU3RyZWFtVHJhY2spIFwKKyAgICBtYWNybyhNb2Rlcm5NZWRpYUNvbnRyb2xzKSBc
CisgICAgbWFjcm8oTmF2aWdhdG9yQ3JlZGVudGlhbHMpIFwKKyAgICBtYWNybyhOYXZpZ2F0b3JN
ZWRpYURldmljZXMpIFwKKyAgICBtYWNybyhOYXZpZ2F0b3JVc2VyTWVkaWEpIFwKKyAgICBtYWNy
byhQYXNzd29yZENyZWRlbnRpYWwpIFwKKyAgICBtYWNybyhQYXltZW50QWRkcmVzcykgXAorICAg
IG1hY3JvKFBheW1lbnRSZXF1ZXN0KSBcCisgICAgbWFjcm8oUGF5bWVudFJlcXVlc3RVcGRhdGVF
dmVudCkgXAorICAgIG1hY3JvKFBheW1lbnRSZXNwb25zZSkgXAorICAgIG1hY3JvKFBlcmZvcm1h
bmNlRW50cnkpIFwKKyAgICBtYWNybyhQZXJmb3JtYW5jZUVudHJ5TGlzdCkgXAorICAgIG1hY3Jv
KFBlcmZvcm1hbmNlTWFyaykgXAorICAgIG1hY3JvKFBlcmZvcm1hbmNlTWVhc3VyZSkgXAorICAg
IG1hY3JvKFBlcmZvcm1hbmNlT2JzZXJ2ZXIpIFwKKyAgICBtYWNybyhQZXJmb3JtYW5jZU9ic2Vy
dmVyRW50cnlMaXN0KSBcCisgICAgbWFjcm8oUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZykgXAor
ICAgIG1hY3JvKFJUQ0RUTUZTZW5kZXIpIFwKKyAgICBtYWNybyhSVENEVE1GVG9uZUNoYW5nZUV2
ZW50KSBcCisgICAgbWFjcm8oUlRDRGF0YUNoYW5uZWwpIFwKKyAgICBtYWNybyhSVENEYXRhQ2hh
bm5lbEV2ZW50KSBcCisgICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCisgICAgbWFjcm8oUlRD
SWNlVHJhbnNwb3J0KSBcCisgICAgbWFjcm8oUlRDUGVlckNvbm5lY3Rpb24pIFwKKyAgICBtYWNy
byhSVENSdHBSZWNlaXZlcikgXAorICAgIG1hY3JvKFJUQ1J0cFNlbmRlcikgXAorICAgIG1hY3Jv
KFJUQ1J0cFRyYW5zY2VpdmVyKSBcCisgICAgbWFjcm8oUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKSBc
CisgICAgbWFjcm8oUlRDU3RhdHNSZXBvcnQpIFwKKyAgICBtYWNybyhSVENUcmFja0V2ZW50KSBc
CisgICAgbWFjcm8oUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcikgXAorICAgIG1hY3JvKFJl
YWRhYmxlU3RyZWFtKSBcCisgICAgbWFjcm8oUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyKSBcCisg
ICAgbWFjcm8oUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCkgXAorICAgIG1hY3JvKFJlYWRhYmxl
U3RyZWFtRGVmYXVsdENvbnRyb2xsZXIpIFwKKyAgICBtYWNybyhSZWFkYWJsZVN0cmVhbURlZmF1
bHRSZWFkZXIpIFwKKyAgICBtYWNybyhSZXF1ZXN0KSBcCisgICAgbWFjcm8oUmVzcG9uc2UpIFwK
KyAgICBtYWNybyhTZXJ2aWNlV29ya2VyKSBcCisgICAgbWFjcm8oU2VydmljZVdvcmtlckNvbnRh
aW5lcikgXAorICAgIG1hY3JvKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSkgXAorICAgIG1hY3Jv
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24pIFwKKyAgICBtYWNybyhTaGFkb3dSb290KSBcCisg
ICAgbWFjcm8oU3RhdGljUmFuZ2UpIFwKKyAgICBtYWNybyhXZWJHTDJSZW5kZXJpbmdDb250ZXh0
KSBcCisgICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCkgXAorICAgIG1hY3JvKFdlYkdQ
VUJ1ZmZlcikgXAorICAgIG1hY3JvKFdlYkdQVUNvbW1hbmRCdWZmZXIpIFwKKyAgICBtYWNybyhX
ZWJHUFVDb21tYW5kUXVldWUpIFwKKyAgICBtYWNybyhXZWJHUFVDb21wdXRlQ29tbWFuZEVuY29k
ZXIpIFwKKyAgICBtYWNybyhXZWJHUFVDb21wdXRlUGlwZWxpbmVTdGF0ZSkgXAorICAgIG1hY3Jv
KFdlYkdQVURlcHRoU3RlbmNpbERlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJHUFVEZXB0aFN0
ZW5jaWxTdGF0ZSkgXAorICAgIG1hY3JvKFdlYkdQVURyYXdhYmxlKSBcCisgICAgbWFjcm8oV2Vi
R1BVRnVuY3Rpb24pIFwKKyAgICBtYWNybyhXZWJHUFVMaWJyYXJ5KSBcCisgICAgbWFjcm8oV2Vi
R1BVUmVuZGVyQ29tbWFuZEVuY29kZXIpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQXR0
YWNobWVudERlc2NyaXB0b3IpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQYXNzQ29sb3JBdHRh
Y2htZW50RGVzY3JpcHRvcikgXAorICAgIG1hY3JvKFdlYkdQVVJlbmRlclBhc3NEZXB0aEF0dGFj
aG1lbnREZXNjcmlwdG9yKSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVyUGFzc0Rlc2NyaXB0b3Ip
IFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZUNvbG9yQXR0YWNobWVudERlc2NyaXB0
b3IpIFwKKyAgICBtYWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZURlc2NyaXB0b3IpIFwKKyAgICBt
YWNybyhXZWJHUFVSZW5kZXJQaXBlbGluZVN0YXRlKSBcCisgICAgbWFjcm8oV2ViR1BVUmVuZGVy
aW5nQ29udGV4dCkgXAorICAgIG1hY3JvKFdlYkdQVVNpemUpIFwKKyAgICBtYWNybyhXZWJHUFVU
ZXh0dXJlKSBcCisgICAgbWFjcm8oV2ViR1BVVGV4dHVyZURlc2NyaXB0b3IpIFwKKyAgICBtYWNy
byhXZWJLaXRNZWRpYUtleUVycm9yKSBcCisgICAgbWFjcm8oV2ViS2l0TWVkaWFLZXlNZXNzYWdl
RXZlbnQpIFwKKyAgICBtYWNybyhXZWJLaXRNZWRpYUtleU5lZWRlZEV2ZW50KSBcCisgICAgbWFj
cm8oV2ViS2l0TWVkaWFLZXlTZXNzaW9uKSBcCisgICAgbWFjcm8oV2ViS2l0TWVkaWFLZXlzKSBc
CisgICAgbWFjcm8oV2ViU29ja2V0KSBcCisgICAgbWFjcm8oV3JpdGFibGVTdHJlYW0pIFwKKyAg
ICBtYWNybyhYTUxIdHRwUmVxdWVzdCkgXAogICAgIG1hY3JvKGFkZFRyYWNrKSBcCiAgICAgbWFj
cm8oYXBwZW5kRnJvbUpTKSBcCiAgICAgbWFjcm8oYXNzb2NpYXRlZFJlYWRhYmxlQnl0ZVN0cmVh
bUNvbnRyb2xsZXIpIFwKICAgICBtYWNybyhhdXRvQWxsb2NhdGVDaHVua1NpemUpIFwKICAgICBt
YWNybyhiYWNraW5nTWFwKSBcCisgICAgbWFjcm8oYmx1cikgXAogICAgIG1hY3JvKGJvZHkpIFwK
ICAgICBtYWNybyhieW9iUmVxdWVzdCkgXAorICAgIG1hY3JvKGNhY2hlcykgXAogICAgIG1hY3Jv
KGNhbmNlbCkgXAogICAgIG1hY3JvKGNsb25lQXJyYXlCdWZmZXIpIFwKICAgICBtYWNybyhjbG9u
ZUZvckpTKSBcCisgICAgbWFjcm8oY2xvc2UpIFwKICAgICBtYWNybyhjbG9zZVJlcXVlc3RlZCkg
XAorICAgIG1hY3JvKGNsb3NlZCkgXAogICAgIG1hY3JvKGNsb3NlZFByb21pc2VDYXBhYmlsaXR5
KSBcCisgICAgbWFjcm8oY29sbGVjdE1hdGNoaW5nRWxlbWVudHNJbkZsYXRUcmVlKSBcCiAgICAg
bWFjcm8oY29uc3VtZSkgXAogICAgIG1hY3JvKGNvbnN1bWVDaHVuaykgXAogICAgIG1hY3JvKGNv
bnRyb2xsZWRSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3JvKGNvbnRyb2xsZXIpIFwKICAgICBt
YWNybyhjcmVhdGVSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKGN1c3RvbUVsZW1lbnRzKSBc
CiAgICAgbWFjcm8oZGlzdHVyYmVkKSBcCisgICAgbWFjcm8oZG9jdW1lbnQpIFwKICAgICBtYWNy
byhmYWlsdXJlS2luZCkgXAorICAgIG1hY3JvKGZldGNoKSBcCiAgICAgbWFjcm8oZmV0Y2hSZXF1
ZXN0KSBcCiAgICAgbWFjcm8oZmlsbEZyb21KUykgXAogICAgIG1hY3JvKGZpbmlzaENvbnN1bWlu
Z1N0cmVhbSkgXAotICAgIG1hY3JvKGdldFVzZXJNZWRpYSkgXAorICAgIG1hY3JvKGZvY3VzKSBc
CisgICAgbWFjcm8oZnJhbWVzKSBcCiAgICAgbWFjcm8oZ2V0UmVtb3RlU3RyZWFtcykgXAogICAg
IG1hY3JvKGdldFNlbmRlcnMpIFwKICAgICBtYWNybyhnZXRUcmFja3MpIFwKKyAgICBtYWNybyhn
ZXRVc2VyTWVkaWEpIFwKKyAgICBtYWNybyhoZWFkZXIpIFwKKyAgICBtYWNybyhpbmRleGVkREIp
IFwKICAgICBtYWNybyhpbml0aWFsaXplV2l0aCkgXAogICAgIG1hY3JvKGlzRGlzdHVyYmVkKSBc
CiAgICAgbWFjcm8oaXNMb2FkaW5nKSBcCisgICAgbWFjcm8oaXNTZWN1cmVDb250ZXh0KSBcCiAg
ICAgbWFjcm8obG9jYWxTdHJlYW1zKSBcCi0gICAgbWFjcm8obWFrZVRoaXNUeXBlRXJyb3IpIFwK
KyAgICBtYWNybyhsb2NhdGlvbikgXAogICAgIG1hY3JvKG1ha2VHZXR0ZXJUeXBlRXJyb3IpIFwK
KyAgICBtYWNybyhtYWtlVGhpc1R5cGVFcnJvcikgXAorICAgIG1hY3JvKG1hdGNoaW5nRWxlbWVu
dEluRmxhdFRyZWUpIFwKICAgICBtYWNybyhtZWRpYVN0cmVhbVRyYWNrQ29uc3RyYWludHMpIFwK
KyAgICBtYWNybyhvcGVuZXIpIFwKICAgICBtYWNybyhvcGVyYXRpb25zKSBcCiAgICAgbWFjcm8o
b3duZXJSZWFkYWJsZVN0cmVhbSkgXAorICAgIG1hY3JvKHBhcmVudCkgXAogICAgIG1hY3JvKHBl
bmRpbmdQdWxsSW50b3MpIFwKKyAgICBtYWNybyhwb3N0TWVzc2FnZSkgXAogICAgIG1hY3JvKHBy
aXZhdGVHZXRTdGF0cykgXAogICAgIG1hY3JvKHB1bGwpIFwKLSAgICBtYWNybyhwdWxsaW5nKSBc
CiAgICAgbWFjcm8ocHVsbEFnYWluKSBcCisgICAgbWFjcm8ocHVsbGluZykgXAogICAgIG1hY3Jv
KHF1ZXVlKSBcCiAgICAgbWFjcm8ocXVldWVkQWRkSWNlQ2FuZGlkYXRlKSBcCiAgICAgbWFjcm8o
cXVldWVkQ3JlYXRlQW5zd2VyKSBcCiAgICAgbWFjcm8ocXVldWVkQ3JlYXRlT2ZmZXIpIFwKICAg
ICBtYWNybyhxdWV1ZWRTZXRMb2NhbERlc2NyaXB0aW9uKSBcCiAgICAgbWFjcm8ocXVldWVkU2V0
UmVtb3RlRGVzY3JpcHRpb24pIFwKLSAgICBtYWNybyhyZWFkZXIpIFwKICAgICBtYWNybyhyZWFk
SW50b1JlcXVlc3RzKSBcCiAgICAgbWFjcm8ocmVhZFJlcXVlc3RzKSBcCiAgICAgbWFjcm8ocmVh
ZGFibGVCeXRlU3RyZWFtQVBJRW5hYmxlZCkgXAogICAgIG1hY3JvKHJlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcikgXAorICAgIG1hY3JvKHJlYWRlcikgXAogICAgIG1hY3JvKHJlYWR5UHJvbWlzZUNh
cGFiaWxpdHkpIFwKICAgICBtYWNybyhyZW1vdmVUcmFjaykgXAorICAgIG1hY3JvKHJlc3BvbnNl
KSBcCiAgICAgbWFjcm8ocmVzcG9uc2VDYWNoZUlzVmFsaWQpIFwKICAgICBtYWNybyhyZXRyaWV2
ZVJlc3BvbnNlKSBcCi0gICAgbWFjcm8ocmVzcG9uc2UpIFwKKyAgICBtYWNybyhzZWxmKSBcCiAg
ICAgbWFjcm8oc2V0Qm9keSkgXAogICAgIG1hY3JvKHNldEJvZHlBc1JlYWRhYmxlU3RyZWFtKSBc
CiAgICAgbWFjcm8oc2V0Qm9keUZyb21JbnB1dFJlcXVlc3QpIFwKICAgICBtYWNybyhzZXRTdGF0
dXMpIFwKLSAgICBtYWNybyhzdGF0ZSkgXAorICAgIG1hY3JvKHNob3dNb2RhbERpYWxvZykgXAog
ICAgIG1hY3JvKHN0YXJ0Q29uc3VtaW5nU3RyZWFtKSBcCiAgICAgbWFjcm8oc3RhcnRlZCkgXAog
ICAgIG1hY3JvKHN0YXJ0ZWRQcm9taXNlKSBcCisgICAgbWFjcm8oc3RhdGUpIFwKICAgICBtYWNy
byhzdG9yZWRFcnJvcikgXAogICAgIG1hY3JvKHN0cmF0ZWd5KSBcCiAgICAgbWFjcm8oc3RyYXRl
Z3lIV00pIFwKQEAgLTEwNiwyNyArMjUxLDI2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhzdHJlYW1Xcml0YWJsZSkgXAogICAgIG1hY3JvKHN0cnVjdHVyZWRDbG9uZUFycmF5QnVm
ZmVyKSBcCiAgICAgbWFjcm8oc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KSBcCisgICAg
bWFjcm8odG9wKSBcCiAgICAgbWFjcm8odG90YWxRdWV1ZWRCeXRlcykgXAogICAgIG1hY3JvKHVu
ZGVybHlpbmdCeXRlU291cmNlKSBcCiAgICAgbWFjcm8odW5kZXJseWluZ1NpbmspIFwKICAgICBt
YWNybyh1bmRlcmx5aW5nU291cmNlKSBcCiAgICAgbWFjcm8odmlldykgXAogICAgIG1hY3JvKHdl
YlJUQ0xlZ2FjeUFQSUVuYWJsZWQpIFwKLSAgICBtYWNybyh3cml0aW5nKSBcCi0gICAgbWFjcm8o
SGVhZGVycykgXAotICAgIG1hY3JvKE1lZGlhU3RyZWFtKSBcCi0gICAgbWFjcm8oTWVkaWFTdHJl
YW1UcmFjaykgXAotICAgIG1hY3JvKFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIpIFwKLSAg
ICBtYWNybyhSZWFkYWJsZVN0cmVhbSkgXAotICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtQllPQlJl
YWRlcikgXAotICAgIG1hY3JvKFJlYWRhYmxlU3RyZWFtQllPQlJlcXVlc3QpIFwKLSAgICBtYWNy
byhSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKSBcCi0gICAgbWFjcm8oUmVhZGFibGVT
dHJlYW1EZWZhdWx0UmVhZGVyKSBcCi0gICAgbWFjcm8oUmVxdWVzdCkgXAotICAgIG1hY3JvKFJl
c3BvbnNlKSBcCi0gICAgbWFjcm8oUlRDSWNlQ2FuZGlkYXRlKSBcCi0gICAgbWFjcm8oUlRDU2Vz
c2lvbkRlc2NyaXB0aW9uKSBcCi0gICAgbWFjcm8oWE1MSHR0cFJlcXVlc3QpCisgICAgbWFjcm8o
d2Via2l0KSBcCisgICAgbWFjcm8od2Via2l0QXVkaW9Db250ZXh0KSBcCisgICAgbWFjcm8od2Vi
a2l0SURCQ3Vyc29yKSBcCisgICAgbWFjcm8od2Via2l0SURCRGF0YWJhc2UpIFwKKyAgICBtYWNy
byh3ZWJraXRJREJGYWN0b3J5KSBcCisgICAgbWFjcm8od2Via2l0SURCSW5kZXgpIFwKKyAgICBt
YWNybyh3ZWJraXRJREJLZXlSYW5nZSkgXAorICAgIG1hY3JvKHdlYmtpdElEQk9iamVjdFN0b3Jl
KSBcCisgICAgbWFjcm8od2Via2l0SURCUmVxdWVzdCkgXAorICAgIG1hY3JvKHdlYmtpdElEQlRy
YW5zYWN0aW9uKSBcCisgICAgbWFjcm8od2Via2l0SW5kZXhlZERCKSBcCisgICAgbWFjcm8od2lu
ZG93KSBcCisgICAgbWFjcm8od3JpdGluZykKIAogY2xhc3MgV2ViQ29yZUJ1aWx0aW5OYW1lcyB7
CiBwdWJsaWM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE2
OTUsNiArMTY5NSw3IEBAIHN1YiBOZWVkc1J1bnRpbWVDaGVjawogCiAgICAgcmV0dXJuICRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfQogICAgICAgICB8fCAk
Y29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEZvcldvcmxkfQorICAgICAgICB8
fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30KICAgICAg
ICAgfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NlY3VyZUNvbnRleHR9OwogfQog
CkBAIC0xNzA1LDExICsxNzA2LDExIEBAIHN1YiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UK
IAogICAgIHJldHVybiAxIGlmIElzR2xvYmFsT3JQcmltYXJ5R2xvYmFsSW50ZXJmYWNlKCRpbnRl
cmZhY2UpOwogCi0gICAgIyBGSVhNRTogVGhlIGJpbmRpbmdzIGdlbmVyYXRvciBkb2VzIG5vdCBz
dXBwb3J0IHB1dHRpbmcgcnVudGltZS1lbmFibGVkIG9wZXJhdGlvbnMgb24gdGhlIGluc3RhbmNl
IHlldCAoZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cykuCi0gICAgcmV0dXJuIDAgaWYgTmVlZHNS
dW50aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJhdGlvbik7Ci0KICAgICAjIFtVbmZvcmdlYWJs
ZV0gb3BlcmF0aW9ucyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLiBodHRwczovL2hleWNhbS5n
aXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZQotICAgIHJldHVybiAxIGlmIElzVW5mb3JnZWFi
bGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CisgICAgaWYgKElzVW5mb3JnZWFibGUoJGludGVy
ZmFjZSwgJG9wZXJhdGlvbikpIHsKKyAgICAgICAgYXNzZXJ0KCJUaGUgYmluZGluZ3MgZ2VuZXJh
dG9yIGRvZXMgbm90IHN1cHBvcnQgcHV0dGluZyBydW50aW1lLWVuYWJsZWQgb3BlcmF0aW9ucyBv
biB0aGUgaW5zdGFuY2UgeWV0IChleGNlcHQgZm9yIGdsb2JhbCBvYmplY3RzKTpbIiAuICRpbnRl
cmZhY2UtPnR5cGUtPm5hbWUgLiAiOjoiIC4gJG9wZXJhdGlvbi0+bmFtZSAuICJdIikgaWYgTmVl
ZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CisgICAgICAgIHJldHVybiAx
OworICAgIH0KIAogICAgIHJldHVybiAwOwogfQpAQCAtMjk5MCw3ICsyOTkxLDcgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAKIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKIHsKLSAgICBt
eSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlzSW5zdGFuY2UsICRoYXNoS2V5cywgJGhhc2hTcGVj
aWFscywgJGhhc2hWYWx1ZTEsICRoYXNoVmFsdWUyLCAkY29uZGl0aW9uYWxzLCAkcmVhZFdyaXRl
Q29uZGl0aW9uYWxzLCAkcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCAkcnVudGltZUVuYWJsZWRB
dHRyaWJ1dGVzLCAkc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucywgJHNldHRpbmdzRW5hYmxlZEF0
dHJpYnV0ZXMpID0gQF87CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpc0luc3RhbmNl
LCAkaGFzaEtleXMsICRoYXNoU3BlY2lhbHMsICRoYXNoVmFsdWUxLCAkaGFzaFZhbHVlMiwgJGNv
bmRpdGlvbmFscywgJHJlYWRXcml0ZUNvbmRpdGlvbmFscywgJHJ1bnRpbWVFbmFibGVkT3BlcmF0
aW9ucywgJHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcykgPSBAXzsKIAogICAgICMgRklYTUU6IFRo
ZXNlIHNob3VsZCBiZSBmdW5jdGlvbnMgb24gJGludGVyZmFjZS4KICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CkBAIC0zMDUzLDEwICszMDU0LDYgQEAgc3Vi
IEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hl
Y2soJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgIHB1c2goQCRydW50aW1l
RW5hYmxlZEF0dHJpYnV0ZXMsICRhdHRyaWJ1dGUpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7Ci0g
ICAgICAgICAgICBwdXNoKEAkc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSk7
Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBteSBAb3BlcmF0aW9ucyA9IEB7JGludGVyZmFjZS0+
b3BlcmF0aW9uc307CkBAIC0zMDk4LDEwICszMDk1LDYgQEAgc3ViIEdlbmVyYXRlUHJvcGVydGll
c0hhc2hUYWJsZQogICAgICAgICBpZiAoTmVlZHNSdW50aW1lQ2hlY2soJGludGVyZmFjZSwgJG9w
ZXJhdGlvbikpIHsKICAgICAgICAgICAgIHB1c2goQCRydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMs
ICRvcGVyYXRpb24pOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7Ci0gICAgICAgICAgICBwdXNoKEAk
c2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucywgJG9wZXJhdGlvbik7Ci0gICAgICAgIH0KICAgICB9
CiAKICAgICByZXR1cm4gJHByb3BlcnR5Q291bnQ7CkBAIC0zNjYwLDYgKzM2NTMsMjAgQEAgc3Vi
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaQogICAgICAgICBwdXNoKEBjb25q
dW5jdHMsICJ3b3JsZEZvckRPTU9iamVjdCh0aGlzKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkRm9yV29ybGR9KSAuICIoKSIpOwogICAgIH0K
IAorICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGlu
Z30pIHsKKyAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEVuYWJsZWRCeVNl
dHRpbmcuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRp
bmd9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKKworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
RG9jdW1lbnQuaCIpOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIpOwor
CisgICAgICAgIGFzc2VydCgiRW5hYmxlZEJ5U2V0dGluZyBjYW4gb25seSBiZSB1c2VkIGJ5IGlu
dGVyZmFjZXMgb25seSBleHBvc2VkIHRvIHRoZSBXaW5kb3ciKSBpZiAkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSAmJiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntFeHBvc2VkfSBuZSAiV2luZG93IjsKKworICAgICAgICBteSBAZmxhZ3MgPSBzcGxpdCgv
Ji8sICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSk7Cisg
ICAgICAgIGZvcmVhY2ggbXkgJGZsYWcgKEBmbGFncykgeworICAgICAgICAgICAgcHVzaChAY29u
anVuY3RzLCAiZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4g
VG9NZXRob2ROYW1lKCRmbGFnKSAuICJFbmFibGVkKCkiKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0p
IHsKICAgICAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEVuYWJsZWRBdFJ1bnRp
bWUuIikgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9
IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKIApAQCAtMzk1MCwxMSArMzk1Nyw5IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgbXkgJGhhc2hOYW1lID0gJGNsYXNzTmFtZSAuICJUYWJs
ZSI7CiAgICAgbXkgQHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9ucyA9ICgpOwogICAgIG15IEBydW50
aW1lRW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKLSAgICBteSBAc2V0dGluZ3NFbmFibGVkT3BlcmF0
aW9ucyA9ICgpOwotICAgIG15IEBzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzID0gKCk7CiAKICAg
ICAjIEdlbmVyYXRlIGhhc2ggdGFibGUgZm9yIHByb3BlcnRpZXMgb24gdGhlIGluc3RhbmNlLgot
ICAgIG15ICRudW1JbnN0YW5jZVByb3BlcnRpZXMgPSBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFi
bGUoJG9iamVjdCwgJGludGVyZmFjZSwgMSwgXEBoYXNoS2V5cywgXEBoYXNoU3BlY2lhbHMsIFxA
aGFzaFZhbHVlMSwgXEBoYXNoVmFsdWUyLCBcJWNvbmRpdGlvbmFscywgXCVyZWFkV3JpdGVDb25k
aXRpb25hbHMsIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBcQHJ1bnRpbWVFbmFibGVkQXR0
cmlidXRlcywgXEBzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zLCBcQHNldHRpbmdzRW5hYmxlZEF0
dHJpYnV0ZXMpOworICAgIG15ICRudW1JbnN0YW5jZVByb3BlcnRpZXMgPSBHZW5lcmF0ZVByb3Bl
cnRpZXNIYXNoVGFibGUoJG9iamVjdCwgJGludGVyZmFjZSwgMSwgXEBoYXNoS2V5cywgXEBoYXNo
U3BlY2lhbHMsIFxAaGFzaFZhbHVlMSwgXEBoYXNoVmFsdWUyLCBcJWNvbmRpdGlvbmFscywgXCVy
ZWFkV3JpdGVDb25kaXRpb25hbHMsIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBcQHJ1bnRp
bWVFbmFibGVkQXR0cmlidXRlcyk7CiAgICAgJG9iamVjdC0+R2VuZXJhdGVIYXNoVGFibGUoJGNs
YXNzTmFtZSwgJGhhc2hOYW1lLCAkbnVtSW5zdGFuY2VQcm9wZXJ0aWVzLCBcQGhhc2hLZXlzLCBc
QGhhc2hTcGVjaWFscywgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1ZTIsIFwlY29uZGl0aW9uYWxz
LCBcJXJlYWRXcml0ZUNvbmRpdGlvbmFscywgMCkgaWYgJG51bUluc3RhbmNlUHJvcGVydGllcyA+
IDA7CiAKICAgICAjIC0gQWRkIGFsbCBpbnRlcmZhY2Ugb2JqZWN0IChha2EgY29uc3RydWN0b3Ip
IHByb3BlcnRpZXMgKGNvbnN0YW50cywgc3RhdGljIGF0dHJpYnV0ZXMsIHN0YXRpYyBvcGVyYXRp
b25zKS4KQEAgLTQwNzAsMTYgKzQwNzUsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAlcmVhZFdyaXRlQ29uZGl0aW9uYWxzID0gKCk7CiAgICAgQHJ1bnRpbWVFbmFibGVkT3Bl
cmF0aW9ucyA9ICgpOwogICAgIEBydW50aW1lRW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKLSAgICBA
c2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucyA9ICgpOwotICAgIEBzZXR0aW5nc0VuYWJsZWRBdHRy
aWJ1dGVzID0gKCk7CiAKICAgICAjIEdlbmVyYXRlIGhhc2ggdGFibGUgZm9yIHByb3BlcnRpZXMg
b24gdGhlIHByb3RvdHlwZS4KICAgICBteSAkbnVtUHJvdG90eXBlUHJvcGVydGllcyA9IEdlbmVy
YXRlUHJvcGVydGllc0hhc2hUYWJsZSgkb2JqZWN0LCAkaW50ZXJmYWNlLCAwLAogICAgICAgICBc
QGhhc2hLZXlzLCBcQGhhc2hTcGVjaWFscywKICAgICAgICAgXEBoYXNoVmFsdWUxLCBcQGhhc2hW
YWx1ZTIsCiAgICAgICAgIFwlY29uZGl0aW9uYWxzLCBcJXJlYWRXcml0ZUNvbmRpdGlvbmFscywK
LSAgICAgICAgXEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMsIFxAcnVudGltZUVuYWJsZWRBdHRy
aWJ1dGVzLAotICAgICAgICBcQHNldHRpbmdzRW5hYmxlZE9wZXJhdGlvbnMsIFxAc2V0dGluZ3NF
bmFibGVkQXR0cmlidXRlcyk7CisgICAgICAgIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBc
QHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcyk7CiAKICAgICBteSAkaGFzaFNpemUgPSAkbnVtUHJv
dG90eXBlUHJvcGVydGllczsKIApAQCAtNDEyOCwzMSArNDEzMCw2IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgQHNldHRpbmdz
RW5hYmxlZFByb3BlcnRpZXMgPSBAc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9uczsKLSAgICAgICAg
cHVzaChAc2V0dGluZ3NFbmFibGVkUHJvcGVydGllcywgQHNldHRpbmdzRW5hYmxlZEF0dHJpYnV0
ZXMpOwotICAgICAgICBpZiAoc2NhbGFyKEBzZXR0aW5nc0VuYWJsZWRQcm9wZXJ0aWVzKSkgewot
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkRvY3VtZW50LmgiKTsKLSAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiBjb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVCghY29udGV4dCB8fCBjb250ZXh0LT5p
c0RvY3VtZW50KCkpO1xuIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvcmVhY2ggbXkg
JG9wZXJhdGlvbk9yQXR0cmlidXRlIChAc2V0dGluZ3NFbmFibGVkUHJvcGVydGllcykgewotICAg
ICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb25PckF0dHJpYnV0ZSk7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKLQotICAgICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlv
biA9IFRvTWV0aG9kTmFtZSgkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0VuYWJsZWRCeVNldHRpbmd9KSAuICJFbmFibGVkIjsKLSAgICAgICAgICAgICAgICBteSAk
bmFtZSA9ICRvcGVyYXRpb25PckF0dHJpYnV0ZS0+bmFtZTsKLQotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY29udGV4dCB8fCAhZG93bmNhc3Q8RG9jdW1lbnQ+
KCpjb250ZXh0KS5zZXR0aW5ncygpLiR7ZW5hYmxlRnVuY3Rpb259KCkpIHtcbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBz
Y29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIp
OwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU09iamVjdDo6
ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVy
dHlOYW1lKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1c
biIpOwotCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAg
IGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgewogICAg
ICAgICAgICAgbmV4dCB1bmxlc3MgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1By
aXZhdGVJZGVudGlmaWVyfSk7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIik7CkBAIC00MjUxLDE3ICs0MjI4LDE3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIG5leHQgdW5sZXNzIE5lZWRzUnVudGltZUNoZWNrKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICBuZXh0IHVubGVzcyBBdHRyaWJ1dGVTaG91bGRC
ZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGF0dHJpYnV0ZSk7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKICAgICAgICAgbXkgJHJ1bnRpbWVFbmFi
bGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3Ry
aW5nKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9
ICRhdHRyaWJ1dGUtPm5hbWU7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgk
e3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICBteSAkZ2V0
dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAi
bnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRhdHRyaWJ1dGUpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgYXV0byog
Y3VzdG9tR2V0dGVyU2V0dGVyID0gQ3VzdG9tR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sICRnZXR0
ZXIsICRzZXR0ZXIpO1xuIik7CiAgICAgICAgIG15ICRqc2NBdHRyaWJ1dGVzID0gR2V0SlNDQXR0
cmlidXRlc0ZvckF0dHJpYnV0ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT4kYXR0cmlidXRlTmFtZSwgY3VzdG9tR2V0dGVyU2V0dGVyLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKCRqc2NBdHRyaWJ1dGVzKSk7XG4iKTsKLSAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgfVxuIik7CisKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlm
ICgke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pXG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0aWNf
Y2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS4iIC4g
JGF0dHJpYnV0ZU5hbWUgLiAiUHVibGljTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0
ZSh2bSwgJGdldHRlciwgJHNldHRlciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzY0F0dHJp
YnV0ZXMpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIH0KIApAQCAtNDI4NiwxNyArNDI2MywxNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBuZXh0IHVubGVzcyBPcGVyYXRpb25TaG91
bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIG5leHQgaWYg
JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4
fSA+IDE7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3It
PkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgi
KTsKICAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRl
UnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwog
ICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJG9wZXJhdGlvbi0+bmFtZTsKICAgICAgICAgbXkg
JGltcGxlbWVudGF0aW9uRnVuY3Rpb24gPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1
bmN0aW9uTGVuZ3RoKCRvcGVyYXRpb24pOwogICAgICAgICBteSAkanNBdHRyaWJ1dGVzID0gQ29t
cHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
fSlcbiIpOwogCi0gICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAidm0ucHJvcGVydHlOYW1lcy0+
JGZ1bmN0aW9uTmFtZSI7Ci0gICAgICAgICRwcm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlv
bk5hbWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UHJpdmF0ZUlkZW50aWZpZXJ9OworICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkb3BlcmF0aW9uKTsKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSlcbiIpOworICAgICAgICBteSAkcHJv
cGVydHlOYW1lID0gInN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSkt
PmJ1aWx0aW5OYW1lcygpLiIgLiAkZnVuY3Rpb25OYW1lIC4gKCRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSA/ICJQcml2YXRlTmFtZSgpIiA6ICJQdWJs
aWNOYW1lKCkiKTsKICAgICAgICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRp
b24pKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcHV0RGlyZWN0
QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCAkcHJvcGVydHlOYW1lLCAkaW1wbGVtZW50YXRpb25G
dW5jdGlvbih2bSksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzQXR0cmlidXRlcykpO1xuIik7
CiAgICAgICAgIH0gZWxzZSB7CkBAIC00NjkwLDI0ICs0NjY3LDcgQEAgc3ViIEdlbmVyYXRlQXR0
cmlidXRlR2V0dGVyQm9keURlZmluaXRpbwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIp
OwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtc
biIpOwotICAgIAotICAgICMgR2xvYmFsIGNvbnN0cnVjdG9ycyBjYW4gYmUgZGlzYWJsZWQgYXQg
cnVudGltZS4KLSAgICAjIEZJWE1FOiBSZXR1cm5pbmcgdW5kZWZpbmVkIGlzIG5vdCB0aGUgc2Ft
ZSBhcyBkaWFzYWJsaW5nLiBUaGVzZSBwcm9wZXJ0aWVzIHNob3VsZCBiZSByZW1vdmVkCi0gICAg
IyBmcm9tIHRoZSBvYmplY3QgaW5zdGVhZC4KLSAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29u
c3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpKSB7Ci0gICAgICAgIGlmICgkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewotICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkZyYW1lLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIlNldHRpbmdzLmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pIC4gIkVuYWJsZWQi
OwotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghdGhp
c09iamVjdC53cmFwcGVkKCkuZnJhbWUoKSkpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKLSAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlRnVuY3Rpb24oKSlcbiIpOwot
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTtcbiIpOwotICAgICAgICB9Ci0gICAgfQotICAgIAorCiAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmCiAgICAgICAgICEkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmCiAgICAgICAg
ICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPbkdl
dHRlcn0pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
RW5hYmxlZEJ5U2V0dGluZy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RFbmFibGVkQnlTZXR0aW5nLmlkbAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEVuYWJsZWRCeVNldHRp
bmcuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitpbnRl
cmZhY2UgVGVzdEVuYWJsZWRCeVNldHRpbmcgeworICAgIFtFbmFibGVkQnlTZXR0aW5nPVRlc3RT
ZXR0aW5nXSBhdHRyaWJ1dGUgVGVzdFN1Yk9iakNvbnN0cnVjdG9yIFRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nOworCisgICAgLy8gW0VuYWJsZWRCeVNldHRpbmddIGF0dHJpYnV0ZXMgYW5kIG9w
ZXJhdGlvbnMuCisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEJ5U2V0dGlu
Zz1UZXN0U2V0dGluZ10gYXR0cmlidXRlIERPTVN0cmluZyBlbmFibGVkQnlTZXR0aW5nQXR0cmli
dXRlOworICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRCeVNldHRpbmc9VGVz
dFNldHRpbmddIHZvaWQgZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbihET01TdHJpbmcgdGVzdFBh
cmFtKTsKK307CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMjE1NTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4
LDYgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdwogICAgIHN0YXRp
YyByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyAgICAgc3RhdGljUmVhZE9ubHlMb25nQXR0cjsKICAg
ICBzdGF0aWMgYXR0cmlidXRlIERPTVN0cmluZyAgICAgICAgIHN0YXRpY1N0cmluZ0F0dHI7CiAg
ICAgc3RhdGljIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXN0U3ViT2JqQ29uc3RydWN0b3IgVGVzdFN1
Yk9iajsKLSAgICBbRW5hYmxlZEJ5U2V0dGluZz1UZXN0U2V0dGluZ10gYXR0cmlidXRlIFRlc3RT
dWJPYmpDb25zdHJ1Y3RvciBUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZzsKICAgICBhdHRyaWJ1
dGUgVGVzdEVudW1UeXBlIGVudW1BdHRyOwogICAgIGF0dHJpYnV0ZSBieXRlIGJ5dGVBdHRyOwog
ICAgIGF0dHJpYnV0ZSBvY3RldCBvY3RldEF0dHI7CkBAIC0xMTMsMTMgKzExMiw4IEBAIGVudW0g
VGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3cKICAgICBbQ29uZGl0aW9uYWw9VEVT
VF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2b2lkIGVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb24obG9uZyB0ZXN0UGFyYW0pOwogCiAgICAgW0VuYWJsZWRGb3JXb3JsZD1z
b21lV29ybGQsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQobG9uZyB0ZXN0UGFyYW0pOwotCiAg
ICAgW0VuYWJsZWRGb3JXb3JsZD1zb21lV29ybGRdIHZvaWQgd29ybGRTcGVjaWZpY01ldGhvZChs
b25nIHRlc3RQYXJhbSk7CiAKLSAgICAvLyBbRW5hYmxlZEJ5U2V0dGluZ10gYXR0cmlidXRlcyBh
bmQgb3BlcmF0aW9ucy4KLSAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQnlT
ZXR0aW5nPVRlc3RTZXR0aW5nXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuYWJsZWRCeVNldHRpbmdB
dHRyaWJ1dGU7Ci0gICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEJ5U2V0dGlu
Zz1UZXN0U2V0dGluZ10gdm9pZCBlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKERPTVN0cmluZyB0
ZXN0UGFyYW0pOwotCiAgICAgLy8gW1NlY3VyZUNvbnRleHRdIGF0dHJpYnV0ZXMgYW5kIG9wZXJh
dGlvbnM7IHdpbGwgbm90IGJlIGV4cG9zZWQgdG8gYSBub24tc2VjdXJlIGNvbnRleHQuCiAgICAg
Ly8gRnJvbSA8aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmFwcHNlYy1zZWN1cmUtY29udGV4dHMv
I2ludGVncmF0aW9uLWlkbD4gKEVkaXRvcidzIERyYWZ0LCAxNyBOb3ZlbWJlciAyMDE2KQogICAg
IFtTZWN1cmVDb250ZXh0XSBQcm9taXNlPGRvdWJsZT4gY2FsY3VsYXRlU2VjcmV0UmVzdWx0KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVk
QnlTZXR0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1NSBAQAorLyoKKyAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZy5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJKU0RP
TUF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9N
Q29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKKyNpbmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKKyNpbmNsdWRlICJTZXR0
aW5ncy5oIgorI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKKyNpbmNsdWRlIDxydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyNp
bmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjZW5kaWYKKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBGdW5jdGlvbnMKKworI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlv
bihKU0M6OkV4ZWNTdGF0ZSopOworI2VuZGlmCisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpT
VGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTsKK2Jvb2wgc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTsKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
K2Jvb2wgc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0VuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKKyNlbmRpZgorCitjbGFzcyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlIDogcHVi
bGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpT
Qzo6SlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1By
b3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZ1Byb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9
CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDog
SlNDOjpKU05vbkZpbmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYpOworfTsKKwordXNpbmcgSlNUZXN0RW5hYmxl
ZEJ5U2V0dGluZ0NvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGU8
SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz47CisKK3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBVTlVTRURf
UEFSQU0odm0pOworICAgIHJldHVybiBnbG9iYWxPYmplY3QuZnVuY3Rpb25Qcm90b3R5cGUoKTsK
K30KKwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVy
YWwoIlRlc3RFbmFibGVkQnlTZXR0aW5nIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RW5hYmxlZEJ5U2V0
dGluZyIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKSB9OworCisvKiBIYXNoIHRhYmxl
IGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEVu
YWJsZWRCeVNldHRpbmdQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1
Y3RvciIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rv
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcikgfSB9LAorI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCisgICAgeyAiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIsIEN1c3RvbUFj
Y2Vzc29yIHwgRE9NQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFi
bGVkQnlTZXR0aW5nQXR0cmlidXRlKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0
eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0VuYWJsZWRCeVNl
dHRpbmdBdHRyaWJ1dGUpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAw
LCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgeyAiZW5hYmxl
ZEJ5U2V0dGluZ09wZXJhdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0RW5hYmxlZEJ5U2V0dGluZ1By
b3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiksIChpbnRwdHJfdCkgKDEp
IH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRp
ZgorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6
OnNfaW5mbyA9IHsgIlRlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkQnlT
ZXR0aW5nUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
OjppbmZvKCksIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRo
aXMpOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKCFkb3duY2FzdDxEb2N1bWVu
dD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpLCBz
dHJsZW4oImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKSk7CisgICAgICAgIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3Jl
Q29uZmlndXJhYmxlKTsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGds
b2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7CisgICAgfQorI2VuZGlm
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoIWRvd25jYXN0PERvY3VtZW50Pihq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAgICAgICAg
YXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiksIHN0cmxl
bigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVByb3Bl
cnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25m
aWd1cmFibGUpOworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsKKyAgICB9CisjZW5kaWYKK30K
KworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnNfaW5mbyA9IHsgIlRl
c3RFbmFibGVkQnlTZXR0aW5nIiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKSB9OworCitKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nOjpKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEVuYWJsZWRCeVNldHRp
bmc+JiYgaW1wbCkKKyAgICA6IEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK3ZvaWQgSlNUZXN0
RW5hYmxlZEJ5U2V0dGluZzo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworCisg
ICAgaWYgKGRvd25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkudGVzdFNl
dHRpbmdFbmFibGVkKCkpCisgICAgICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZtLCBzdGF0
aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5U
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ1B1YmxpY05hbWUoKSwgQ3VzdG9tR2V0dGVyU2V0dGVy
OjpjcmVhdGUodm0sIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0
dGluZ0NvbnN0cnVjdG9yLCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJs
ZWRCeVNldHRpbmdDb25zdHJ1Y3RvciksIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoRG9udEVudW0p
KTsKK30KKworSlNPYmplY3QqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmNyZWF0ZVByb3RvdHlw
ZShWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJu
IEpTVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVj
dCwgSlNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Byb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCAm
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpKTsKK30KKworSlNP
YmplY3QqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnByb3RvdHlwZShWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nPih2bSwgZ2xvYmFsT2JqZWN0KTsKK30KKworSlNWYWx1ZSBK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKK30KKwordm9pZCBKU1Rlc3RFbmFibGVk
QnlTZXR0aW5nOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQoreworICAgIEpTVGVzdEVuYWJs
ZWRCeVNldHRpbmcqIHRoaXNPYmplY3QgPSBzdGF0aWNfY2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0
aW5nKj4oY2VsbCk7CisgICAgdGhpc09iamVjdC0+SlNUZXN0RW5hYmxlZEJ5U2V0dGluZzo6fkpT
VGVzdEVuYWJsZWRCeVNldHRpbmcoKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZyogSURMQXR0cmlidXRlPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpjYXN0
KEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KHN0YXRlLnZtKCks
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKK30KKwordGVtcGxhdGU8PiBpbmxpbmUgSlNU
ZXN0RW5hYmxlZEJ5U2V0dGluZyogSURMT3BlcmF0aW9uPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+
OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdEVuYWJsZWRCeVNldHRpbmcqPihzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUoKSk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
K3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIXByb3RvdHlwZSkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OmdldENvbnN0cnVjdG9yKHN0YXRl
LT52bSgpLCBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCgpKSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0
RW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworICAgIGF1dG8qIHByb3RvdHlwZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEVu
YWJsZWRCeVNldHRpbmdQcm90b3R5cGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworICAgIGlmIChVTkxJS0VMWSghcHJvdG90eXBlKSkgeworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAg
ICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgorICAgIHJldHVybiBwcm90b3R5
cGUtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1
Y3RvciwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5n
Q29uc3RydWN0b3JHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RW5hYmxlZEJ5U2V0dGlu
ZyYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICByZXR1cm4gSlNU
ZXN0U3ViT2JqOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS52bSgpLCB0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0RW5hYmxlZEJ5U2V0dGluZ1Rlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RFbmFibGVkQnlTZXR0aW5nPjo6Z2V0PGpzVGVzdEVuYWJsZWRCeVNldHRpbmdU
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yR2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdD
b25zdHJ1Y3RvclNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5n
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorewor
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwor
ICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgorICAgIHJldHVybiB0aGlz
T2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0
ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nIiksIHN0cmxlbigiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKSksIHZhbHVl
KTsKK30KKworYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpzZXQ8c2V0SlNUZXN0RW5hYmxlZEJ5U2V0
dGluZ1Rlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JTZXR0ZXI+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwor
fQorCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZUdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5lbmFi
bGVkQnlTZXR0aW5nQXR0cmlidXRlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQoreworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZz46Omdl
dDxqc1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZUdldHRlciwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCB0aGlzVmFsdWUsICJlbmFi
bGVkQnlTZXR0aW5nQXR0cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5h
YmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFbmFi
bGVkQnlTZXR0aW5nJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgaW1wbC5zZXRF
bmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBzZXRKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRW5hYmxlZEJ5U2V0
dGluZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpzZXQ8c2V0SlNUZXN0RW5hYmxlZEJ5U2V0dGluZ0Vu
YWJsZWRCeVNldHRpbmdBdHRyaWJ1dGVTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIik7Cit9CisKKyNlbmRpZgorCisjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFbmFibGVkQnlTZXR0aW5nUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3Bl
cmF0aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RFbmFibGVkQnlTZXR0aW5nPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90
RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZl
cnQ8SURMRE9NU3RyaW5nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAg
ICBpbXBsLmVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEVuYWJsZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlv
bkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdEVuYWJsZWRCeVNldHRpbmc+OjpjYWxsPGpzVGVzdEVuYWJs
ZWRCeVNldHRpbmdQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb25Cb2R5
Pigqc3RhdGUsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIik7Cit9CisKKyNlbmRpZgorCiti
b29sIEpTVGVzdEVuYWJsZWRCeVNldHRpbmdPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBVTlVTRURfUEFSQU0oaGFuZGxlKTsKKyAgICBVTlVTRURfUEFSQU0o
dmlzaXRvcik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqIGNvbnRleHQpCit7CisgICAgYXV0byoganNUZXN0RW5hYmxlZEJ5U2V0dGluZyA9IHN0YXRp
Y19jYXN0PEpTVGVzdEVuYWJsZWRCeVNldHRpbmcqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSk7
CisgICAgYXV0byYgd29ybGQgPSAqc3RhdGljX2Nhc3Q8RE9NV3JhcHBlcldvcmxkKj4oY29udGV4
dCk7CisgICAgdW5jYWNoZVdyYXBwZXIod29ybGQsICZqc1Rlc3RFbmFibGVkQnlTZXR0aW5nLT53
cmFwcGVkKCksIGpzVGVzdEVuYWJsZWRCeVNldHRpbmcpOworfQorCisjaWYgRU5BQkxFKEJJTkRJ
TkdfSU5URUdSSVRZKQorI2lmIFBMQVRGT1JNKFdJTikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxl
OiA0NDgzKQorZXh0ZXJuICJDIiB7IGV4dGVybiB2b2lkICgqY29uc3QgX19pZGVudGlmaWVyKCI/
P183VGVzdEVuYWJsZWRCeVNldHRpbmdAV2ViQ29yZUBANkJAIilbXSkoKTsgfQorI2Vsc2UKK2V4
dGVybiAiQyIgeyBleHRlcm4gdm9pZCogX1pUVk43V2ViQ29yZTIwVGVzdEVuYWJsZWRCeVNldHRp
bmdFW107IH0KKyNlbmRpZgorI2VuZGlmCisKK0pTQzo6SlNWYWx1ZSB0b0pTTmV3bHlDcmVhdGVk
KEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RFbmFibGVkQnlTZXR0aW5nPiYmIGltcGwpCit7CisKKyNpZiBFTkFCTEUoQklORElOR19JTlRF
R1JJVFkpCisgICAgdm9pZCogYWN0dWFsVlRhYmxlUG9pbnRlciA9ICoocmVpbnRlcnByZXRfY2Fz
dDx2b2lkKio+KGltcGwucHRyKCkpKTsKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCogZXhw
ZWN0ZWRWVGFibGVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oX19pZGVudGlmaWVy
KCI/P183VGVzdEVuYWJsZWRCeVNldHRpbmdAV2ViQ29yZUBANkJAIikpOworI2Vsc2UKKyAgICB2
b2lkKiBleHBlY3RlZFZUYWJsZVBvaW50ZXIgPSAmX1pUVk43V2ViQ29yZTIwVGVzdEVuYWJsZWRC
eVNldHRpbmdFWzJdOworI2VuZGlmCisKKyAgICAvLyBJZiB0aGlzIGZhaWxzIFRlc3RFbmFibGVk
QnlTZXR0aW5nIGRvZXMgbm90IGhhdmUgYSB2dGFibGUsIHNvIHlvdSBuZWVkIHRvIGFkZCB0aGUK
KyAgICAvLyBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlIGF0dHJpYnV0ZSB0byB0aGUgaW50ZXJm
YWNlIGRlZmluaXRpb24KKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9seW1vcnBoaWM8VGVz
dEVuYWJsZWRCeVNldHRpbmc+Ojp2YWx1ZSwgIlRlc3RFbmFibGVkQnlTZXR0aW5nIGlzIG5vdCBw
b2x5bW9ycGhpYyIpOworCisgICAgLy8gSWYgeW91IGhpdCB0aGlzIGFzc2VydGlvbiB5b3UgZWl0
aGVyIGhhdmUgYSB1c2UgYWZ0ZXIgZnJlZSBidWcsIG9yCisgICAgLy8gVGVzdEVuYWJsZWRCeVNl
dHRpbmcgaGFzIHN1YmNsYXNzZXMuIElmIFRlc3RFbmFibGVkQnlTZXR0aW5nIGhhcyBzdWJjbGFz
c2VzIHRoYXQgZ2V0IHBhc3NlZAorICAgIC8vIHRvIHRvSlMoKSB3ZSBjdXJyZW50bHkgcmVxdWly
ZSBUZXN0RW5hYmxlZEJ5U2V0dGluZyB5b3UgdG8gb3B0IG91dCBvZiBiaW5kaW5nIGhhcmRlbmlu
ZworICAgIC8vIGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRv
IHRoZSBpbnRlcmZhY2UgSURMIGRlZmluaXRpb24KKyAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxW
VGFibGVQb2ludGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CisjZW5kaWYKKyAgICByZXR1
cm4gY3JlYXRlV3JhcHBlcjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4oZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGltcGwpKTsKK30KKworSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZXN0RW5hYmxlZEJ5U2V0dGluZyYg
aW1wbCkKK3sKKyAgICByZXR1cm4gd3JhcChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKK30K
KworVGVzdEVuYWJsZWRCeVNldHRpbmcqIEpTVGVzdEVuYWJsZWRCeVNldHRpbmc6OnRvV3JhcHBl
ZChKU0M6OlZNJiB2bSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQoreworICAgIGlmIChhdXRvKiB3cmFw
cGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0RW5hYmxlZEJ5U2V0dGluZyo+KHZtLCB2YWx1
ZSkpCisgICAgICAgIHJldHVybiAmd3JhcHBlci0+d3JhcHBlZCgpOworICAgIHJldHVybiBudWxs
cHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEVuYWJsZWRCeVNldHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg3IEBACisvKgor
ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4K
KyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBs
LiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNET01XcmFw
cGVyLmgiCisjaW5jbHVkZSAiVGVzdEVuYWJsZWRCeVNldHRpbmcuaCIKKyNpbmNsdWRlIDx3dGYv
TmV2ZXJEZXN0cm95ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nIDogcHVibGljIEpTRE9NV3JhcHBlcjxUZXN0RW5hYmxlZEJ5U2V0dGlu
Zz4geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU0RPTVdyYXBwZXI8VGVzdEVuYWJsZWRC
eVNldHRpbmc+OworICAgIHN0YXRpYyBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nKiBjcmVhdGUoSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RFbmFibGVkQnlTZXR0aW5nPiYmIGltcGwpCisgICAgeworICAgICAgICBKU1Rlc3RF
bmFibGVkQnlTZXR0aW5nKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEVuYWJsZWRCeVNldHRpbmc+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RW5h
YmxlZEJ5U2V0dGluZyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpOwor
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CisgICAgICAg
IHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVBy
b3RvdHlwZShKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKKyAgICBzdGF0aWMgSlNDOjpK
U09iamVjdCogcHJvdG90eXBlKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOworICAgIHN0
YXRpYyBUZXN0RW5hYmxlZEJ5U2V0dGluZyogdG9XcmFwcGVkKEpTQzo6Vk0mLCBKU0M6OkpTVmFs
dWUpOworICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6
SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVj
dCopOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IEpTQzo6SGFzU3RhdGljUHJvcGVydHlUYWJsZSB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworcHJv
dGVjdGVkOgorICAgIEpTVGVzdEVuYWJsZWRCeVNldHRpbmcoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4mJik7CisKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsKK307CisKK2NsYXNzIEpTVGVzdEVuYWJsZWRCeVNl
dHRpbmdPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAg
dmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6
VW5rbm93bj4sIHZvaWQqIGNvbnRleHQsIEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCogY29udGV4dCk7
Cit9OworCitpbmxpbmUgSlNDOjpXZWFrSGFuZGxlT3duZXIqIHdyYXBwZXJPd25lcihET01XcmFw
cGVyV29ybGQmLCBUZXN0RW5hYmxlZEJ5U2V0dGluZyopCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPEpTVGVzdEVuYWJsZWRCeVNldHRpbmdPd25lcj4gb3duZXI7CisgICAgcmV0dXJuICZv
d25lci5nZXQoKTsKK30KKworaW5saW5lIHZvaWQqIHdyYXBwZXJLZXkoVGVzdEVuYWJsZWRCeVNl
dHRpbmcqIHdyYXBwYWJsZU9iamVjdCkKK3sKKyAgICByZXR1cm4gd3JhcHBhYmxlT2JqZWN0Owor
fQorCitKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0
KiwgVGVzdEVuYWJsZWRCeVNldHRpbmcmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlc3RF
bmFibGVkQnlTZXR0aW5nKiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KUyhzdGF0ZSwgZ2xvYmFs
T2JqZWN0LCAqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9CitKU0M6OkpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RFbmFi
bGVkQnlTZXR0aW5nPiYmKTsKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJl
ZlB0cjxUZXN0RW5hYmxlZEJ5U2V0dGluZz4mJiBpbXBsKSB7IHJldHVybiBpbXBsID8gdG9KU05l
d2x5Q3JlYXRlZChzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBpbXBsLnJlbGVhc2VOb25OdWxsKCkpIDog
SlNDOjpqc051bGwoKTsgfQorCit0ZW1wbGF0ZTw+IHN0cnVjdCBKU0RPTVdyYXBwZXJDb252ZXJ0
ZXJUcmFpdHM8VGVzdEVuYWJsZWRCeVNldHRpbmc+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUg
PSBUZXN0RW5hYmxlZEJ5U2V0dGluZyo7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFs
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjIxNTU5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MywxMCArMTYzLDggQEAgdm9pZCBKU1Rlc3RHbG9iYWxP
YmplY3Q6OmZpbmlzaENyZWF0aW9uKAogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7
CiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7Ci0gICAgICAgIGF1
dG8qIGN1c3RvbUdldHRlclNldHRlciA9IEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBq
c1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9i
YWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKTsKLSAgICAgICAgcHV0RGlyZWN0Q3Vz
dG9tQWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFtZXMtPmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGUsIGN1c3RvbUdldHRlclNldHRlciwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShDdXN0b21BY2Nl
c3NvcikpOwotICAgIH0KKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0Q3VzdG9tQWNj
ZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1
aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVQdWJsaWNOYW1lKCksIEN1c3Rv
bUdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50
aW1lQXR0cmlidXRlLCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmli
dXRlKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShDdXN0b21BY2Nlc3NvcikpOwogI2VuZGlmCiAg
ICAgcHV0RGlyZWN0Q3VzdG9tQWNjZXNzb3Iodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRh
Kj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1
dGVQcml2YXRlTmFtZSgpLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xv
YmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0ZSwgbnVsbHB0ciksIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUoRG9udERlbGV0ZSB8IFJlYWRPbmx5KSk7CiAjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKQEAgLTE3NCwyOSArMTcyLDI5IEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpmaW5p
c2hDcmVhdGlvbigKICNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVk
KCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB2bS5wcm9wZXJ0
eU5hbWVzLT5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiwgTm9JbnRyaW5zaWMsIGF0
dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3RO
YXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblB1Ymxp
Y05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb24sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6
RnVuY3Rpb24pKTsKICNlbmRpZgogICAgIGlmICh3b3JsZEZvckRPTU9iamVjdCh0aGlzKS5zcGVj
aWZpY1dvcmxkKCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB2
bS5wcm9wZXJ0eU5hbWVzLT5lbmFibGVkSW5TcGVjaWZpY1dvcmxkLCAxLCBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZCwgTm9JbnRyaW5zaWMs
IGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2
bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFB1Ymxp
Y05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNw
ZWNpZmljV29ybGQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVu
Y3Rpb24pKTsKICAgICBpZiAoKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNwZWNpZmljV29ybGQo
KSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJl
RW5hYmxlZCgpKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZt
LnByb3BlcnR5TmFtZXMtPmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVF
bmFibGVkLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQsIE5vSW50cmluc2ljLCBhdHRyaWJ1
dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZl
YXR1cmVFbmFibGVkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQsIE5v
SW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKICAgICBp
ZiAoKHdvcmxkRm9yRE9NT2JqZWN0KHRoaXMpLnNwZWNpZmljV29ybGQoKSAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpICYmIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmUxRW5hYmxl
ZCgpKSkKLSAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHZtLnByb3Bl
cnR5TmFtZXMtPmVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxl
ZCwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmlj
V29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNG
b3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5j
dGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRh
KS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZXNFbmFibGVkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkLCBOb0lu
dHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7CiAjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKICAgICAgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPmJ1aWx0aW5OYW1lcygpLnRlc3RQcml2YXRlRnVuY3Rpb25Qcml2YXRlTmFtZSgpLCAw
LCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbiwg
Tm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKLSAgICAgICAgcHV0
RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT50ZXN0SlNC
dWlsdGluRnVuY3Rpb24sIHRlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluRnVuY3Rpb25Db2Rl
R2VuZXJhdG9yKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkJ1aWx0aW4pKTsKKyAg
ICAgICAgcHV0RGlyZWN0QnVpbHRpbkZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZN
Q2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS50ZXN0SlNCdWlsdGlu
RnVuY3Rpb25QdWJsaWNOYW1lKCksIHRlc3RHbG9iYWxPYmplY3RUZXN0SlNCdWlsdGluRnVuY3Rp
b25Db2RlR2VuZXJhdG9yKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkJ1aWx0aW4p
KTsKICNlbmRpZgogICAgIGlmIChqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpCi0gICAg
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
YWxjdWxhdGVTZWNyZXRSZXN1bHQsIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25DYWxjdWxhdGVTZWNyZXRSZXN1bHQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0
dXJlKEpTQzo6RnVuY3Rpb24pKTsKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0s
IHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0
aW5OYW1lcygpLmNhbGN1bGF0ZVNlY3JldFJlc3VsdFB1YmxpY05hbWUoKSwgMCwganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdCwgTm9JbnRyaW5z
aWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwogICAgIGlmIChqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkpCi0gICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXRTZWNyZXRCb29sZWFuLCAwLCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uR2V0U2VjcmV0Qm9vbGVhbiwgTm9JbnRyaW5z
aWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOworICAgICAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEq
Pih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZ2V0U2VjcmV0Qm9vbGVhblB1YmxpY05h
bWUoKSwgMCwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkdldFNlY3JldEJvb2xl
YW4sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmICgoanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJl
Q29udGV4dCgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVz
dEZlYXR1cmVFbmFibGVkKCkpKQotICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwg
dGhpcywgdm0ucHJvcGVydHlOYW1lcy0+dGVzdEZlYXR1cmVHZXRTZWNyZXRCb29sZWFuLCAwLCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdEZlYXR1cmVHZXRTZWNyZXRCb29s
ZWFuLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShKU0M6OkZ1bmN0aW9uKSk7
CisgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxK
U1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS50ZXN0RmVhdHVy
ZUdldFNlY3JldEJvb2xlYW5QdWJsaWNOYW1lKCksIDAsIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25UZXN0RmVhdHVyZUdldFNlY3JldEJvb2xlYW4sIE5vSW50cmluc2ljLCBhdHRy
aWJ1dGVzRm9yU3RydWN0dXJlKEpTQzo6RnVuY3Rpb24pKTsKICNlbmRpZgogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T2JqLmNwcAkocmV2aXNpb24gMjIxNTU5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDYg
QEAKICNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTQmxvYi5oIgogI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRl
LmgiCkBAIC03OSw3ICs3OCw2IEBACiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxidWlsdGlucy9C
dWlsdGluTmFtZXMuaD4KQEAgLTk5Nyw5ICs5OTUsNiBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0CiAjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVu
UnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmlj
TWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLUpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVu
YWJsZWRCeVNldHRpbmdPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKLSNlbmRpZgogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2Fs
Y3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFu
KEpTQzo6RXhlY1N0YXRlKik7CiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKQEAgLTExNzYsOCAr
MTE3MSw2IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3IKIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9v
bCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotYm9v
bCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RPYmpF
bnVtQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTEy
NjUsMTAgKzEyNTgsNiBAQCBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIo
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CiBib29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1KU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakVu
YWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci1ib29sIHNldEpTVGVzdE9iakVuYWJsZWRCeVNldHRp
bmdBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKLSNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpUeXBl
ZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTE0
MTMsMzAgKzE0MDIsMjggQEAgdXNpbmcgSlNUZXN0T2JqQ29uc3RydWN0b3IgPSBKU0RPTUNvbnN0
cgogCiAvKiBIYXNoIHRhYmxlICovCiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJ
bmRleCBKU1Rlc3RPYmpUYWJsZUluZGV4WzE3XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1Rlc3RPYmpUYWJsZUluZGV4WzE2XSA9IHsKICAgICB7IC0xLCAtMSB9
LAogICAgIHsgLTEsIC0xIH0sCi0gICAgeyA1LCAtMSB9LAorICAgIHsgNCwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKLSAgICB7IDQsIC0x
IH0sCisgICAgeyAzLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCisgICAgeyAwLCAtMSB9LAogICAg
IHsgMSwgLTEgfSwKICAgICB7IDIsIC0xIH0sCi0gICAgeyAwLCAxNiB9LAogICAgIHsgLTEsIC0x
IH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAg
ICAgeyAtMSwgLTEgfSwKLSAgICB7IDMsIC0xIH0sCiB9OwogCiAKIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZhbHVlc1tdID0KIHsKLSAgICB7ICJUZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZyIsIERvbnRFbnVtLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKSB9IH0sCiAgICAgeyAidW5mb3JnZWFibGVBdHRyIiwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01BdHRyaWJ1dGUsIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4o
anNUZXN0T2JqVW5mb3JnZWFibGVBdHRyKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9w
ZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
ICAgIHsgImNvbmRpdGlvbmFsQXR0cjQiLCBEb250RW51bSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25k
aXRpb25hbEF0dHI0Q29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3Bl
cnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3Ry
dWN0b3IpIH0gfSwKQEAgLTE0NTYsNyArMTQ0Myw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RPYmpUYWIKICAgICB7ICJ1bmZvcmdlYWJsZU1ldGhvZCIsIERvbnREZWxldGUg
fCBSZWFkT25seSB8IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2Vh
YmxlTWV0aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hU
YWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgNiwgMTUsIHRydWUsIEpTVGVzdE9iajo6aW5mbygpLCBK
U1Rlc3RPYmpUYWJsZVZhbHVlcywgSlNUZXN0T2JqVGFibGVJbmRleCB9Oworc3RhdGljIGNvbnN0
IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgNSwgMTUsIHRydWUsIEpTVGVzdE9iajo6aW5m
bygpLCBKU1Rlc3RPYmpUYWJsZVZhbHVlcywgSlNUZXN0T2JqVGFibGVJbmRleCB9OwogLyogSGFz
aCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVl
IEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CkBAIC0xNjA1LDExICsxNTkyLDYg
QEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogI2Vsc2UKICAgICB7
IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAgfSB9LAogI2VuZGlmCi0jaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKLSAgICB7ICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIiwgQ3VzdG9tQWNjZXNz
b3IgfCBET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQ
cm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJp
YnV0ZSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1
bmM+KHNldEpTVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUpIH0gfSwKLSNlbHNlCi0g
ICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKLSNlbmRpZgogICAgIHsgInR5cGVk
QXJyYXlBdHRyIiwgQ3VzdG9tQWNjZXNzb3IgfCBET01BdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqVHlwZWRBcnJheUF0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xv
dDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0cikgfSB9LAogICAgIHsg
ImF0dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb24iLCBDdXN0b21BY2Nlc3NvciB8IERPTUF0dHJp
YnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uKSwgKGlu
dHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNU
ZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbikgfSB9LAogICAgIHsgImF0dHJpYnV0
ZVdpdGhTZXR0ZXJFeGNlcHRpb24iLCBDdXN0b21BY2Nlc3NvciB8IERPTUF0dHJpYnV0ZSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uKSwgKGludHB0cl90KSBz
dGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqQXR0
cmlidXRlV2l0aFNldHRlckV4Y2VwdGlvbikgfSB9LApAQCAtMTcwMiwxMSArMTY4NCw2IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8KICNlbmRpZgogICAgIHsgImVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkIiwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgIndvcmxkU3Bl
Y2lmaWNNZXRob2QiLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRT
cGVjaWZpY01ldGhvZCksIChpbnRwdHJfdCkgKDEpIH0gfSwKLSNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQotICAgIHsgImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiksIChpbnRwdHJf
dCkgKDEpIH0gfSwKLSNlbHNlCi0gICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwK
LSNlbmRpZgogICAgIHsgImNhbGN1bGF0ZVNlY3JldFJlc3VsdCIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQpLCAoaW50cHRyX3QpICgw
KSB9IH0sCiAgICAgeyAiZ2V0U2VjcmV0Qm9vbGVhbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25HZXRTZWNyZXRCb29sZWFuKSwgKGludHB0cl90KSAoMCkgfSB9LAogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCkBAIC0xOTYzLDIyICsxOTQwLDYgQEAgdm9pZCBKU1Rlc3RP
YmpQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKAogICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7CiAgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOwogICAgIH0KLSAgICBhdXRvKiBjb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgQVNTRVJUKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzRG9j
dW1lbnQoKSk7Ci0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICBpZiAoIWNvbnRleHQgfHwg
IWRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCkuc2V0dGluZ3MoKS50ZXN0U2V0dGluZ0VuYWJs
ZWQoKSkgewotICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJp
bmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oImVuYWJsZWRCeVNldHRpbmdP
cGVyYXRpb24iKSwgc3RybGVuKCJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIikpOwotICAgICAg
ICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7Ci0gICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9w
ZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOwot
ICAgIH0KLSNlbmRpZgotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi0gICAgaWYgKCFjb250ZXh0
IHx8ICFkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLnNldHRpbmdzKCkudGVzdFNldHRpbmdF
bmFibGVkKCkpIHsKLSAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQnlTZXR0
aW5nQXR0cmlidXRlIiksIHN0cmxlbigiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpKTsKLSAg
ICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJv
cGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOwotICAgICAgICBKU09iamVjdDo6ZGVsZXRl
UHJvcGVydHkodGhpcywgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1l
KTsKLSAgICB9Ci0jZW5kaWYKICAgICBwdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLnByaXZhdGVNZXRob2RQcml2
YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJp
bmcoKSwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kKSwgUmVhZE9ubHkg
fCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0
YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5wdWJsaWNBbmRQcml2YXRlTWV0aG9k
UHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwg
U3RyaW5nKCksIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhv
ZCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvdHlwZSgpLT5n
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1ByaXZh
dGVOYW1lKCkpLCBEb250RW51bSk7CkBAIC0yMjUyLDM2ICsyMjEzLDYgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0UwogICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0T2JqPjo6Z2V0U3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iakdldHRlcj4o
KnN0YXRlLCB0aGlzVmFsdWUsICJUZXN0U3ViT2JqIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKLSAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1l
KCkpKQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBTZXR0aW5ncyYgc2V0dGlu
Z3MgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5mcmFtZSgpLT5zZXR0aW5ncygpOwotICAgIGlmICgh
c2V0dGluZ3MudGVzdFNldHRpbmdFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwotICAgIHJldHVybiBKU1Rlc3RTdWJPYmo6OmdldENvbnN0cnVjdG9yKHN0YXRlLnZtKCks
IHRoaXNPYmplY3QuZ2xvYmFsT2JqZWN0KCkpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlT
ZXR0aW5nQ29uc3RydWN0b3JHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiVGVzdFN1Yk9iakVu
YWJsZWRCeVNldHRpbmciKTsKLX0KLQotc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialRl
c3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JTZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQotewotICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwotICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yLgotICAg
IHJldHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZzdGF0ZS52bSgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIlRlc3RT
dWJPYmpFbmFibGVkQnlTZXR0aW5nIiksIHN0cmxlbigiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRp
bmciKSksIHZhbHVlKTsKLX0KLQotYm9vbCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5
U2V0dGluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQotewotICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3JTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJU
ZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwotfQotCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqRW51bUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTM1NjgsNDIgKzM0OTksNiBAQCBib29sIHNldEpTVGVzdE9iakVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1CiAKICNlbmRpZgogCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKLXsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7Ci0gICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKLSAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0g
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4oc3RhdGUsIGltcGwuZW5hYmxl
ZEJ5U2V0dGluZ0F0dHJpYnV0ZSgpKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1FbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQotewotICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakVuYWJsZWRCeVNldHRpbmdB
dHRyaWJ1dGVHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCAiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpOwotfQotCi0jZW5kaWYKLQot
I2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
RW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCi17
Ci0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKLSAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
Ci0gICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpbXBsLnNldEVuYWJsZWRCeVNl
dHRpbmdBdHRyaWJ1dGUoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIHNldEpTVGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCi17Ci0gICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNU
ZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGUiKTsKLX0KLQotI2VuZGlm
Ci0KIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTE5MywyNyArNTA4
OCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHIKICAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Xb3JsZFNwZWNpZmljTWV0aG9kQm9keT4oKnN0YXRlLCAid29ybGRTcGVjaWZpY01ldGhvZCIp
OwogfQogCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVy
YXRpb25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKLXsKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwotICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKLSAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKHN0YXRlKSk7Ci0gICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETERPTVN0cmlu
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaW1wbC5lbmFibGVk
QnlTZXR0aW5nT3BlcmF0aW9uKFdURk1vdmUodGVzdFBhcmFtKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24o
RXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9u
Qm9keT4oKnN0YXRlLCAiZW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbiIpOwotfQotCi0jZW5kaWYK
LQogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>