<?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>207985</bug_id>
          
          <creation_ts>2020-02-19 19:42:05 -0800</creation_ts>
          <short_desc>[WebAuthn] Replace DeviceIdentity.framework</short_desc>
          <delta_ts>2021-05-10 13:02:01 -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>WebKit Misc.</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>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jiewen Tan">jiewen_tan</reporter>
          <assigned_to name="Jiewen Tan">jiewen_tan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>e.barg0089</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1621037</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 19:42:05 -0800</bug_when>
    <thetext>Adopt Apple attestation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621038</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 19:42:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/59369223&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621063</commentid>
    <comment_count>2</comment_count>
      <attachid>391254</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 21:01:51 -0800</bug_when>
    <thetext>Created attachment 391254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621123</commentid>
    <comment_count>3</comment_count>
      <attachid>391254</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 23:24:39 -0800</bug_when>
    <thetext>Comment on attachment 391254
Patch

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

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:312
&gt; +        WTFLogAlways(&quot;Couldn&apos;t attest: %@&quot;, error);

Should actually be LOG_ERROR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621276</commentid>
    <comment_count>4</comment_count>
      <attachid>391254</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-20 10:18:07 -0800</bug_when>
    <thetext>Comment on attachment 391254
Patch

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

r=me

&gt; Source/WebKit/ChangeLog:10
&gt; +        Invocations of the new framework is hidden in WKA. Please refer to the radar for detailed information.

&quot;The new experimental authentication logic is handled by WebKtAdditions. Please refer to the radar for detailed information.&quot;

&gt; Source/WebKit/ChangeLog:13
&gt; +        1) changes the way how user consent is obtained such that biometrics will not be prompted twice.

changes how user consent is obtained to avoid multiple prompts for biometric input.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:174
&gt;          &quot;allow &quot; + creationOptions.rp.id + &quot; to create a public key credential for &quot; + creationOptions.user.name,

Should this be &quot;makeString(&quot;allow &quot;_s, creationOptions.rp.id, &quot; to create a public key credential for&quot;_s, creationOptions.user.name)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621355</commentid>
    <comment_count>5</comment_count>
      <attachid>391254</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-20 12:23:13 -0800</bug_when>
    <thetext>Comment on attachment 391254
Patch

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

Thanks Brent for r+ the patch.

&gt;&gt; Source/WebKit/ChangeLog:10
&gt;&gt; +        Invocations of the new framework is hidden in WKA. Please refer to the radar for detailed information.
&gt; 
&gt; &quot;The new experimental authentication logic is handled by WebKtAdditions. Please refer to the radar for detailed information.&quot;

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:13
&gt;&gt; +        1) changes the way how user consent is obtained such that biometrics will not be prompted twice.
&gt; 
&gt; changes how user consent is obtained to avoid multiple prompts for biometric input.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:174
&gt;&gt;          &quot;allow &quot; + creationOptions.rp.id + &quot; to create a public key credential for &quot; + creationOptions.user.name,
&gt; 
&gt; Should this be &quot;makeString(&quot;allow &quot;_s, creationOptions.rp.id, &quot; to create a public key credential for&quot;_s, creationOptions.user.name)

Yes.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:312
&gt;&gt; +        WTFLogAlways(&quot;Couldn&apos;t attest: %@&quot;, error);
&gt; 
&gt; Should actually be LOG_ERROR.

Fixed.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalConnection.h:38
&gt; +namespace WebCore {

Not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621369</commentid>
    <comment_count>6</comment_count>
      <attachid>391321</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-20 13:00:06 -0800</bug_when>
    <thetext>Created attachment 391321
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621413</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-20 14:05:22 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 391321:

editing/spelling/spellcheck-async-remove-frame.html bug 158401 (authors: morrita@google.com, rniwa@webkit.org, and tony@chromium.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621414</commentid>
    <comment_count>8</comment_count>
      <attachid>391321</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-20 14:06:04 -0800</bug_when>
    <thetext>Comment on attachment 391321
Patch for landing

Clearing flags on attachment: 391321

Committed r257085: &lt;https://trac.webkit.org/changeset/257085&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391254</attachid>
            <date>2020-02-19 21:01:51 -0800</date>
            <delta_ts>2020-02-20 10:18:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207985-20200219210150.patch</filename>
            <type>text/plain</type>
            <size>55763</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYxNzQ2NzEwYjFiZDAzYzcwZTgxZjdk
ZTRlYjM3NjI1NzlkMmMzNDQuLjA2NGM0YmQ4ZGJiYzRiOGFkZTcwYmZiZmFlODI5YjhmODcxZjM4
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTkgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFJlcGxhY2UgRGV2aWNlSWRlbnRp
dHkuZnJhbWV3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc5ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzY5MjIzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtSGF2
ZS5oOgorCiAyMDIwLTAyLTE4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIE1vdmUgZnJvbSAibGF5ZXIgZmx1c2giIHRlcm1pbm9sb2d5IHRvICJyZW5k
ZXJpbmcgdXBkYXRlIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyY2MwNjJmYTM4MmViYTc1MTllNDRmNjRmOTRmMjMw
ZWMyNzEzMjM0Li42ODIxMGFmZTYwYjg5ZGMzZjk1ZWUwZmZhNmY2MjFjMTZmNzM2ZDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIwLTAyLTE5ICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBSZXBsYWNlIERldmljZUlkZW50aXR5
LmZyYW1ld29yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjA3OTg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM2OTIyMz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2Vz
IHRoZSBEZXZpY2VJZGVudGl0eS5mcmFtZXdvcmsgd2l0aCBhIG5ldyBmcmFtZXdvcmsgdGhhdCBi
ZXR0ZXIgc3VpdHMgb3VyIG5lZWRzLgorICAgICAgICBJbnZvY2F0aW9ucyBvZiB0aGUgbmV3IGZy
YW1ld29yayBpcyBoaWRkZW4gaW4gV0tBLiBQbGVhc2UgcmVmZXIgdG8gdGhlIHJhZGFyIGZvciBk
ZXRhaWxlZCBpbmZvcm1hdGlvbi4KKworICAgICAgICBCZXNpZGVzIHRoZSByZXBsYWNlbWVudCwg
dGhpcyBwYXRjaCBhbHNvOgorICAgICAgICAxKSBjaGFuZ2VzIHRoZSB3YXkgaG93IHVzZXIgY29u
c2VudCBpcyBvYnRhaW5lZCBzdWNoIHRoYXQgYmlvbWV0cmljcyB3aWxsIG5vdCBiZSBwcm9tcHRl
ZCB0d2ljZS4KKyAgICAgICAgMikgcmVtb3ZlcyBrZXljaGFpbiB3b3JrYXJvdW5kcyBmb3IgRGV2
aWNlSWRlbnRpdHkgZ2l2ZW4gdGhlIGNyZWRlbnRpYWwgcHJpdmF0ZSBrZXkgaXMgbm93IHVuZGVy
IG91ciBwb3NzZXNzaW9uLgorICAgICAgICAzKSByZW1vdmVzIGV2ZXJ5dGhpbmcgdGhhdCBpcyBy
ZWxhdGVkIHRvIERldmljZUlkZW50aXR5LgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IHRlc3Rz
IHdpdGhpbiBleGlzdGluZyB0ZXN0IGZpbGVzLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
V2ViS2l0LnhjY29uZmlnOgorICAgICAgICAqIFBsYXRmb3JtL3NwaS9Db2NvYS9EZXZpY2VJZGVu
dGl0eVNQSS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlv
bi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6dG9OU0RhdGEpOgorICAgICAgICAoV2ViS2l0
OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKToKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2Vu
dGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGlj
YXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9y
Ojpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW06
CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZh
dGVLZXkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbENvbm5lY3Rpb246OmdldEF0dGVz
dGF0aW9uIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViS2l0OjpMb2NhbFNlcnZpY2U6OmlzQXZh
aWxhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TG9jYWxDb25uZWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xvY2Fs
Q29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbiBjb25zdCk6CisgICAg
ICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDItMTggIEFu
dHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gRG9uJ3Qg
ZmlyZSB0aW1lcnMgd2hlbiB0aGVyZSBpcyBhIHBlbmRpbmcgcmVuZGVyaW5nIHVwZGF0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUhhdmUuaAppbmRleCAyYzE4NzFiZTI5NGVkM2Y4OTBjZDI3ZmQ4ZjI3YzEzNjViZGQw
OGVjLi5kZDhhOGExYjgyNjAyNmFkZDZlYjMxY2E2MDkwODhjM2NlNGE4MWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhhdmUuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybUhhdmUuaApAQCAtNTU3LDEwICs1NTcsNiBAQAogI2RlZmluZSBIQVZFX0RFU0lHTl9TWVNU
RU1fVUlfRk9OVFMgMQogI2VuZGlmCiAKLSNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19Y
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTQwMCkgfHwgKFBMQVRGT1JNKElPUykgJiYgIVBM
QVRGT1JNKElPU19TSU1VTEFUT1IpKQotI2RlZmluZSBIQVZFX0RFVklDRV9JREVOVElUWSAxCi0j
ZW5kaWYKLQogI2lmIChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxNjAwKSB8fCAoUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgX19JUEhPTkVfT1Nf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTQwMDAwKQogI2RlZmluZSBIQVZFX0NPT0tJRV9DSEFO
R0VfTElTVEVORVJfQVBJIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Db25m
aWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25z
L1dlYktpdC54Y2NvbmZpZwppbmRleCA1Y2ZlMmU4MjhiZDJiNDMzMTYwZjg2NTQwYWU3ZTQ4ODI3
NDllMzA5Li5kYjAwZDU2OGJjMTc1MDI4ZTcwMzU0ZTg1YzA4MzdkMjBiZTJjMjMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZworKysgYi9T
b3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZpZwpAQCAtNjAsOSArNjAs
NiBAQCBXS19DT1JFX1BSRURJQ1RJT05fTERGTEFHU19ZRVMgPSAkKFdLX01BQ09TX1dFQUtfRlJB
TUVXT1JLKSBDb3JlUHJlZGljdGlvbjsKIFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUyA9ICQoV0tf
Q09SRV9TRVJWSUNFU19MREZMQUdTXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfQ09SRV9TRVJW
SUNFU19MREZMQUdTX21hY29zeCA9IC1mcmFtZXdvcmsgQ29yZVNlcnZpY2VzOwogCi1XS19ERVZJ
Q0VfSURFTlRJVFlfTERGTEFHUyA9ICQoV0tfREVWSUNFX0lERU5USVRZX0xERkxBR1NfJChXS19I
QVZFX0RFVklDRV9JREVOVElUWSkpOwotV0tfREVWSUNFX0lERU5USVRZX0xERkxBR1NfWUVTID0g
LWZyYW1ld29yayBEZXZpY2VJZGVudGl0eTsKLQogV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFH
UyA9ICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHU18kKFdLX0NPQ09BX1RPVUNIKSk7CiBX
S19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTX2NvY29hdG91Y2ggPSAtZnJhbWV3b3JrIEdyYXBo
aWNzU2VydmljZXM7CiAKQEAgLTEyMyw3ICsxMjAsNyBAQCBXS19BVVRIS0lUX0xERkxBR1NfSU9T
X1NJTkNFXzEzID0gLWZyYW1ld29yayBBdXRoS2l0OwogV0tfQVVUSEtJVF9MREZMQUdTX21hY29z
eCA9ICQoV0tfQVVUSEtJVF9MREZMQUdTJChXS19NQUNPU18xMDE1KSk7CiBXS19BVVRIS0lUX0xE
RkxBR1NfTUFDT1NfU0lOQ0VfMTAxNSA9IC1mcmFtZXdvcmsgQXV0aEtpdDsKIAotRlJBTUVXT1JL
X0FORF9MSUJSQVJZX0xERkxBR1MgPSAtbG9iamMgLWZyYW1ld29yayBDRk5ldHdvcmsgLWZyYW1l
d29yayBDb3JlQXVkaW8gLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVH
cmFwaGljcyAtZnJhbWV3b3JrIENvcmVUZXh0IC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3
b3JrIEltYWdlSU8gLWZyYW1ld29yayBJT0tpdCAtZnJhbWV3b3JrIElPU3VyZmFjZSAtZnJhbWV3
b3JrIFdlYktpdExlZ2FjeSAtbG5ldHdvcmsgJChXS19BQ0NFU1NJQklMSVRZX0xERkxBR1MpICQo
V0tfQVBQS0lUX0xERkxBR1MpICQoV0tfQVNTRVJUSU9OX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tf
QVVUSEtJVF9MREZMQUdTKSAkKFdLX0NBUkJPTl9MREZMQUdTKSAkKFdLX0NPUkVfUFJFRElDVElP
Tl9MREZMQUdTKSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19ERVZJQ0VfSURFTlRJ
VFlfTERGTEFHUykgJChXS19HUkFQSElDU19TRVJWSUNFU19MREZMQUdTKSAkKFdLX0xJQlNBTkRC
T1hfTERGTEFHUykgJChXS19MSUJXRUJSVENfTERGTEFHUykgJChXS19NT0JJTEVfQ09SRV9TRVJW
SUNFU19MREZMQUdTKSAkKFdLX01PQklMRV9HRVNUQUxUX0xERkxBR1MpICQoV0tfT1BFTkdMX0xE
RkxBR1MpICQoV0tfUERGS0lUX0xERkxBR1MpICQoV0tfU0FGRV9CUk9XU0lOR19MREZMQUdTKSAk
KFdLX1NFQ1VSSVRZX0lOVEVSRkFDRV9MREZMQUdTKSAkKFdLX1VJS0lUX0xERkxBR1MpICQoV0tf
VVJMX0ZPUk1BVFRJTkdfTERGTEFHUykgJChXS19XRUJJTlNQRUNUT1JVSV9MREZMQUdTKTsKK0ZS
QU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpjIC1mcmFtZXdvcmsgQ0ZOZXR3b3Jr
IC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29y
ayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3JrIEZvdW5kYXRpb24g
LWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29yayBJT1N1cmZhY2Ug
LWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrICQoV0tfQUNDRVNTSUJJTElUWV9MREZM
QUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VSVElPTl9TRVJWSUNFU19MREZMQUdT
KSAkKFdLX0FVVEhLSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykgJChXS19DT1JFX1BS
RURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfR1JBUEhJ
Q1NfU0VSVklDRVNfTERGTEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VC
UlRDX0xERkxBR1MpICQoV0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJ
TEVfR0VTVEFMVF9MREZMQUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZM
QUdTKSAkKFdLX1NBRkVfQlJPV1NJTkdfTERGTEFHUykgJChXS19TRUNVUklUWV9JTlRFUkZBQ0Vf
TERGTEFHUykgJChXS19VSUtJVF9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1Mp
ICQoV0tfV0VCSU5TUEVDVE9SVUlfTERGTEFHUyk7CiAKIC8vIFByZXZlbnQgQysrIHN0YW5kYXJk
IGxpYnJhcnkgYmFzaWNfc3RyaW5nc3RyZWFtLCBvcGVyYXRvciBuZXcsIGRlbGV0ZSBhbmQgdGhl
aXIgcmVsYXRlZCBleGNlcHRpb24gdHlwZXMgZnJvbSBiZWluZyBleHBvcnRlZCBhcyB3ZWFrIHN5
bWJvbHMuCiBVTkVYUE9SVEVEX1NZTUJPTF9MREZMQUdTID0gLVdsLC11bmV4cG9ydGVkX3N5bWJv
bCAtV2wsX19aVElTdDliYWRfYWxsb2MgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVElT
dDlleGNlcHRpb24gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDliYWRfYWxsb2Mg
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aVFNTdDlleGNlcHRpb24gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aZGxQdlNfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53
bVB2IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWm53bSAtV2wsLXVuZXhwb3J0ZWRfc3lt
Ym9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVD
MkVPUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZO
N1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMxRU9TNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFYVNFRG4g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTktTdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNv
cmUxMlBvbGljeUFjdGlvbkVFRWNsRVMyXyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUU0c3dhcEVSUzRfIC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUx
MlBvbGljeUFjdGlvbkVFRUMxRVJLUzRfIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5T
dDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUMyRVJLUzRfIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBv
bGljeUFjdGlvbkVFRUQxRXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThm
dW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0aW9uRUVFRDJFdiAtV2wsLXVuZXhwb3J0ZWRf
c3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25F
RUVhU0VSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVk5TdDNfXzExN2JhZF9m
dW5jdGlvbl9jYWxsRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJh
c2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVF
MF9OU18xM2Jhc2ljX2lzdHJlYW1JY1MyX0VFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9f
WlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlh
bGxvY2F0b3JJY0VFRUUwX05TXzE0YmFzaWNfaW9zdHJlYW1JY1MyX0VFIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJf
dHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUxNl9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VF
IC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRUTlN0M19fMTE4YmFzaWNfc3RyaW5nc3Ry
ZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18xMTViYXNpY19zdHJpbmdidWZJY05TXzExY2hhcl90
cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxf
X1pUVk5TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185
YWxsb2NhdG9ySWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRDTlN0M19fMTE4
YmFzaWNfc3RyaW5nc3RyZWFtSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VF
RUU4X05TXzEzYmFzaWNfb3N0cmVhbUljUzJfRUU7CkBAIC0xNjEsMTEgKzE1OCw2IEBAIFdLX0ZS
QU1FV09SS19IRUFERVJfUE9TVFBST0NFU1NJTkdfRElTQUJMRURfSU9TX0JFRk9SRV8xMzAwID0g
WUVTOwogV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLX0xERkxBR1MgPSAkKFdLX1JFTE9DQVRBQkxF
X0ZSQU1FV09SS19MREZMQUdTXyQoV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JLUylfJChXS19QTEFU
Rk9STV9OQU1FKSk7CiBXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHU19ZRVNfbWFjb3N4
ID0gLVdsLC1ub3RfZm9yX2R5bGRfc2hhcmVkX2NhY2hlOwogCi1XS19IQVZFX0RFVklDRV9JREVO
VElUWSA9ICQoV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFlfJChXS19QTEFURk9STV9OQU1FKSk7Ci1X
S19IQVZFX0RFVklDRV9JREVOVElUWV9pcGhvbmVvcyA9IFlFUzsKLVdLX0hBVkVfREVWSUNFX0lE
RU5USVRZX21hY29zeCA9ICQoV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFkkKFdLX01BQ09TXzEwMTQp
KTsKLVdLX0hBVkVfREVWSUNFX0lERU5USVRZX01BQ09TX1NJTkNFXzEwMTQgPSBZRVM7Ci0KIFdL
X0hBVkVfVVJMX0ZPUk1BVFRJTkcgPSAkKFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkdfJChXS19QTEFU
Rk9STV9OQU1FKSk7CiBXS19IQVZFX1VSTF9GT1JNQVRUSU5HX2lwaG9uZW9zID0gJChXS19IQVZF
X1VSTF9GT1JNQVRUSU5HJChXS19JT1NfMTIpKTsKIFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkdfbWFj
Y2F0YWx5c3QgPSAkKFdLX0hBVkVfVVJMX0ZPUk1BVFRJTkckKFdLX0lPU18xMikpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEku
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29hL0RldmljZUlkZW50aXR5U1BJLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NzdlNDA5NzIxYmVhMzY3ODExMTQ1Y2Nj
YWJmYjYwNmQ1Mzk4YjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEku
aAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2lmIEVOQUJMRShXRUJfQVVUSE4pCi0KLSNpZiBIQVZFKERFVklDRV9JREVOVElUWSkK
LQotI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0KLWV4dGVybiAiQyIgewotI2ltcG9ydCA8
RGV2aWNlSWRlbnRpdHkvRGV2aWNlSWRlbnRpdHkuaD4KLX0KLQotI2Vsc2UKLQotdHlwZWRlZiB2
b2lkICheTUFCQUFDb21wbGV0aW9uQmxvY2spKF9OdWxsYWJsZSBTZWNLZXlSZWYgcmVmZXJlbmNl
S2V5LCBOU0FycmF5ICogX051bGxhYmxlIGNlcnRpZmljYXRlcywgTlNFcnJvciAqIF9OdWxsYWJs
ZSBlcnJvcik7Ci0KLWV4dGVybiBOU1N0cmluZyAqIF9Ob25udWxsIGNvbnN0IGtNQU9wdGlvbnNC
QUFBY2Nlc3NDb250cm9sczsKLWV4dGVybiBOU1N0cmluZyAqIF9Ob25udWxsIGNvbnN0IGtNQU9w
dGlvbnNCQUFJZ25vcmVFeGlzdGluZ0tleWNoYWluSXRlbXM7Ci1leHRlcm4gTlNTdHJpbmcgKiBf
Tm9ubnVsbCBjb25zdCBrTUFPcHRpb25zQkFBS2V5Y2hhaW5BY2Nlc3NHcm91cDsKLWV4dGVybiBO
U1N0cmluZyAqIF9Ob25udWxsIGNvbnN0IGtNQU9wdGlvbnNCQUFLZXljaGFpbkxhYmVsOwotZXh0
ZXJuIE5TU3RyaW5nICogX05vbm51bGwgY29uc3Qga01BT3B0aW9uc0JBQU5vbmNlOwotZXh0ZXJu
IE5TU3RyaW5nICogX05vbm51bGwgY29uc3Qga01BT3B0aW9uc0JBQU9JRE5vbmNlOwotZXh0ZXJu
IE5TU3RyaW5nICogX05vbm51bGwgY29uc3Qga01BT3B0aW9uc0JBQU9JRFNUb0luY2x1ZGU7Ci1l
eHRlcm4gTlNTdHJpbmcgKiBfTm9ubnVsbCBjb25zdCBrTUFPcHRpb25zQkFBU0NSVEF0dGVzdGF0
aW9uOwotZXh0ZXJuIE5TU3RyaW5nICogX05vbm51bGwgY29uc3Qga01BT3B0aW9uc0JBQVZhbGlk
aXR5OwotCi1leHRlcm4gIkMiCi12b2lkIERldmljZUlkZW50aXR5SXNzdWVDbGllbnRDZXJ0aWZp
Y2F0ZVdpdGhDb21wbGV0aW9uKGRpc3BhdGNoX3F1ZXVlX3QgX051bGxhYmxlLCBOU0RpY3Rpb25h
cnkgKiBfTnVsbGFibGUgb3B0aW9ucywgTUFCQUFDb21wbGV0aW9uQmxvY2sgX05vbm51bGwpOwot
Ci0jZW5kaWYgLy8gVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLQotI2VuZGlmIC8vIEhBVkUoREVW
SUNFX0lERU5USVRZKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0
aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKaW5kZXggOTQ2ODMzNTU1ZGJhOGIwNWY2ZjgyMjU3
ZGZkYTIzNzhmMDRhNWQ5OC4uZGVkOThmMmQ3NmFjNGRlOTUxYTU4OTQwYjM2ZDJiNmU3NGFmNDRj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKQEAgLTU2LDggKzU2
LDggQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBMb2NhbEF1dGhlbnRpY2F0b3IoVW5pcXVlUmVm
PExvY2FsQ29ubmVjdGlvbj4mJik7CiAKICAgICB2b2lkIG1ha2VDcmVkZW50aWFsKCkgZmluYWw7
Ci0gICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKExvY2Fs
Q29ubmVjdGlvbjo6VXNlckNvbnNlbnQpOwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmLCBOU0FycmF5ICpjZXJ0aWZpY2F0ZXMsIE5TRXJyb3Ig
Kik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29uc2VudGVkKFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQsIExBQ29udGV4
dCAqKTsKKyAgICB2b2lkIGNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tl
eVJlZiwgVmVjdG9yPHVpbnQ4X3Q+JiYgY3JlZGVudGlhbElkLCBWZWN0b3I8dWludDhfdD4mJiBh
dXRoRGF0YSwgTlNBcnJheSAqY2VydGlmaWNhdGVzLCBOU0Vycm9yICopOwogCiAgICAgdm9pZCBn
ZXRBc3NlcnRpb24oKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJV
c2VyQ29uc2VudGVkKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQsIExBQ29udGV4dCAqLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNyZWRlbnRpYWxJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1c2VyaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpp
bmRleCA4NWUwYWZiMTkxMjI0Zjg5ODhkYTQ1MGQwNWM2ZWY5OWNjY2NiOGE3Li41ZmI3ZDEyYmMw
Y2EwMDkxOWZlOGZkNTlkMjE4ZGQyYmQzMzFiNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCkBAIC04MCw2ICs4MCwxMiBAQCBzdGF0aWMgaW5saW5lIFZlY3Rv
cjx1aW50OF90PiB0b1ZlY3RvcihOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorc3RhdGljIGlubGluZSBSZXRhaW5QdHI8TlNEYXRhPiB0b05TRGF0YShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGRhdGEpCit7CisgICAgLy8gRklYTUUoMTgzNTM0KTogQ29uc2lkZXIgdXNpbmcg
aW5pdFdpdGhCeXRlc05vQ29weS4KKyAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5zaXplKCldKTsKK30KKwogfSAv
LyBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbAogCiBMb2NhbEF1dGhlbnRpY2F0b3I6OkxvY2Fs
QXV0aGVudGljYXRvcihVbmlxdWVSZWY8TG9jYWxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCkBA
IC05OSwxNCArMTA1LDkgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KCkKICAgICAvLyBTa2lwIFN0ZXAgOSBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHll
dC4KICAgICAvLyBTdGVwIDggaXMgaW1wbGljaXRseSBjYXB0dXJlZCBieSBhbGwgVW5rbm93bkVy
cm9yIGV4Y2VwdGlvbiByZWNlaXZlUmVzcG9uZHMuCiAgICAgLy8gU3RlcCAyLgotICAgIGJvb2wg
Y2FuRnVsbGZpbGxQdWJLZXlDcmVkUGFyYW1zID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBwdWJL
ZXlDcmVkUGFyYW0gOiBjcmVhdGlvbk9wdGlvbnMucHViS2V5Q3JlZFBhcmFtcykgewotICAgICAg
ICBpZiAocHViS2V5Q3JlZFBhcmFtLnR5cGUgPT0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1
YmxpY0tleSAmJiBwdWJLZXlDcmVkUGFyYW0uYWxnID09IENPU0U6OkVTMjU2KSB7Ci0gICAgICAg
ICAgICBjYW5GdWxsZmlsbFB1YktleUNyZWRQYXJhbXMgPSB0cnVlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFjYW5GdWxsZmlsbFB1YktleUNyZWRQYXJh
bXMpIHsKKyAgICBpZiAobm90Rm91bmQgPT0gY3JlYXRpb25PcHRpb25zLnB1YktleUNyZWRQYXJh
bXMuZmluZE1hdGNoaW5nKFtdIChhdXRvJiBwdWJLZXlDcmVkUGFyYW0pIHsKKyAgICAgICAgcmV0
dXJuIHB1YktleUNyZWRQYXJhbS50eXBlID09IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJs
aWNLZXkgJiYgcHViS2V5Q3JlZFBhcmFtLmFsZyA9PSBDT1NFOjpFUzI1NjsKKyAgICB9KSkgewog
ICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90U3VwcG9ydGVkRXJyb3Is
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiJfcyB9KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTEzNiw2ICsxMzcsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6bWFrZUNyZWRlbnRpYWwoKQogICAgICAgICB9CiAgICAgICAgIGF1dG8gcmV0YWluQXR0cmli
dXRlc0FycmF5ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYpOwogCisgICAgICAgIC8vIEZJ
WE1FKHJkYXI6Ly9wcm9ibGVtLzM1OTAwNTkzKTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50
IGFuZCB0aGVuIHJldHVybiBkaWZmZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQu
CiAgICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilh
dHRyaWJ1dGVzQXJyYXlSZWYpIHsKICAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQg
PSBuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAgICAgICAgICAg
ICBpZiAoZXhjbHVkZUNyZWRlbnRpYWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhcio+KG5zQ3JlZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVu
Z3RoKSkpIHsKQEAgLTE0OCwyMCArMTUwLDM2IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpt
YWtlQ3JlZGVudGlhbCgpCiAgICAgLy8gU3RlcCA2LgogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9i
bGVtLzM1OTAwNTkzKTogVXBkYXRlIHRvIGEgZm9ybWFsIFVJLgogICAgIC8vIEdldCB1c2VyIGNv
bnNlbnQuCi0gICAgYXV0byBjYWxsYmFjayA9IFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0oTG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50KSB7CisgICAgUmV0YWluUHRy
PFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2w7CisgICAgeworICAgICAgICBDRkVy
cm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKKyAgICAgICAgYWNjZXNzQ29udHJvbCA9IGFkb3B0
Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhGbGFncyhOVUxMLCBrU2VjQXR0ckFjY2Vzc2li
bGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25seSwga1NlY0FjY2Vzc0NvbnRyb2xQcml2YXRl
S2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVzZXJQcmVzZW5jZSwgJmVycm9yUmVmKSk7Cisg
ICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKKyAgICAgICAgaWYg
KGVycm9yUmVmKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGNyZWF0ZSBhY2Nl
c3MgY29udHJvbDogJUAiLCAoTlNFcnJvciAqKWVycm9yUmVmKTsKKyAgICAgICAgICAgIHJlY2Vp
dmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxk
bid0IGNyZWF0ZSBhY2Nlc3MgY29udHJvbDogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYp
LmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYgPSBh
Y2Nlc3NDb250cm9sLmdldCgpOworICAgIGF1dG8gY2FsbGJhY2sgPSBbYWNjZXNzQ29udHJvbCA9
IFdURk1vdmUoYWNjZXNzQ29udHJvbCksIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAo
TG9jYWxDb25uZWN0aW9uOjpVc2VyQ29uc2VudCBjb25zZW50LCBMQUNvbnRleHQgKmNvbnRleHQp
IHsKICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB3ZWFrVGhpcy0+Y29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChjb25zZW50KTsKKyAgICAgICAgd2Vha1Ro
aXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoYWNjZXNzQ29udHJv
bC5nZXQoKSwgY29uc2VudCwgY29udGV4dCk7CiAgICAgfTsKICAgICBtX2Nvbm5lY3Rpb24tPmdl
dFVzZXJDb25zZW50KAogICAgICAgICAiYWxsb3cgIiArIGNyZWF0aW9uT3B0aW9ucy5ycC5pZCAr
ICIgdG8gY3JlYXRlIGEgcHVibGljIGtleSBjcmVkZW50aWFsIGZvciAiICsgY3JlYXRpb25PcHRp
b25zLnVzZXIubmFtZSwKKyAgICAgICAgYWNjZXNzQ29udHJvbFJlZiwKICAgICAgICAgV1RGTW92
ZShjYWxsYmFjaykpOwogfQogCi12b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtl
Q3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50
IGNvbnNlbnQpCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYs
IExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0
KQogeworICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKKwog
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwogICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRlZDsKICAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBX
VEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgp
Lm9wdGlvbnMpOwpAQCAtMTcxLDEzICsxODksMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6
OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW8K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJWE1FKDE4MzUzMyk6IEEgc2luZ2xl
IGtTZWNDbGFzc0tleSBpdGVtIGNvdWxkbid0IHN0b3JlIGFsbCBtZXRhIGRhdGEuIFRoZSBmb2xs
b3dpbmcgc2NoZW1hIGlzIGEgdGVudGF0aXZlIHNvbHV0aW9uCisgICAgLy8gdG8gYWNjb21tb2Rh
dGUgdGhlIG1vc3QgaW1wb3J0YW50IG1ldGEgZGF0YSwgaS5lLiBSUCBJRCwgQ3JlZGVudGlhbCBJ
RCwgYW5kIHVzZXJoYW5kbGUuCisgICAgLy8ga1NlY0F0dHJMYWJlbDogUlAgSUQKKyAgICAvLyBr
U2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IENyZWRlbnRpYWwgSUQgKGF1dG8tZ2VuIGJ5IEtleWNo
YWluKQorICAgIC8vIGtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHVzZXJoYW5kbGUKKyAgICAvLyBO
b3RlZCwgdGhlIHZhbGUgb2Yga1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsIGlzIGF1dG9tYXRpY2Fs
bHkgZ2VuZXJhdGVkIGJ5IHRoZSBLZXljaGFpbiwgd2hpY2ggaXMgYSBTSEEtMSBoYXNoIG9mCisg
ICAgLy8gdGhlIHB1YmxpYyBrZXkuIFdlIGJvcnJvdyBpdCBkaXJlY3RseSBmb3Igbm93IHRvIHdv
cmthcm91bmQgdGhlIHN0YXRlZCBsaW1pdGF0aW9ucy4KKyAgICBjb25zdCBhdXRvJiBzZWNBdHRy
TGFiZWwgPSBjcmVhdGlvbk9wdGlvbnMucnAuaWQ7CisgICAgYXV0byBzZWNBdHRyQXBwbGljYXRp
b25UYWcgPSB0b05TRGF0YShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CisKICAgICAv
LyBTdGVwIDcuNS4KLSAgICAvLyBVc2VyaGFuZGxlIGlzIHN0b3JlZCBpbiBrU2VjQXR0ckFwcGxp
Y2F0aW9uVGFnIGF0dHJpYnV0ZS4KICAgICAvLyBGYWlsdXJlcyBhZnRlciB0aGlzIHBvaW50IGNv
dWxkIGJsb2NrIHVzZXJzJyBhY2NvdW50cyBmb3JldmVyLiBTaG91bGQgd2UgZm9sbG93IHRoZSBz
cGVjPwogICAgIE5TRGljdGlvbmFyeSogZGVsZXRlUXVlcnkgPSBAewogICAgICAgICAoaWQpa1Nl
Y0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAotICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogY3Jl
YXRpb25PcHRpb25zLnJwLmlkLAotICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzog
W05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEo
KSBsZW5ndGg6Y3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0b3Iuc2l6ZSgpXSwKKyAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IHNlY0F0dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBw
bGljYXRpb25UYWc6IHNlY0F0dHJBcHBsaWNhdGlvblRhZy5nZXQoKSwKICNpZiBIQVZFKERBVEFf
UFJPVEVDVElPTl9LRVlDSEFJTikKICAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktl
eWNoYWluOiBAWUVTCiAjZWxzZQpAQCAtMTkxLDUzICsyMTgsMjEgQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoTG9jYWxD
b25uZWN0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFN0ZXAgNy4xLCAxMy4g
QXBwbGUgQXR0ZXN0YXRpb24KLSAgICBhdXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdl
YWtQdHIoKnRoaXMpXShTZWNLZXlSZWYgX051bGxhYmxlIHByaXZhdGVLZXksIE5TQXJyYXkgKiBf
TnVsbGFibGUgY2VydGlmaWNhdGVzLCBOU0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAg
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50
aWFsQWZ0ZXJBdHRlc3RlZChwcml2YXRlS2V5LCBjZXJ0aWZpY2F0ZXMsIGVycm9yKTsKLSAgICB9
OwotICAgIG1fY29ubmVjdGlvbi0+Z2V0QXR0ZXN0YXRpb24oY3JlYXRpb25PcHRpb25zLnJwLmlk
LCBjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lLCByZXF1ZXN0RGF0YSgpLmhhc2gsIFdURk1vdmUo
Y2FsbGJhY2spKTsKLX0KLQotdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2V5LCBOU0FycmF5ICpjZXJ0
aWZpY2F0ZXMsIE5TRXJyb3IgKmVycm9yKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1
dGhlbnRpY2F0b3JJbnRlcm5hbDsKLQotICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpVc2Vy
Q29uc2VudGVkKTsKLSAgICBtX3N0YXRlID0gU3RhdGU6OkF0dGVzdGVkOwotICAgIGF1dG8mIGNy
ZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZG4ndCBhdHRlc3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICByZWNlaXZl
UmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBhdHRlc3Q6ICIsIFN0cmluZyhlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAg
IC8vIFN0ZXAgNy4xLTcuNC4KKyAgICAvLyBUaGUgYWJvdmUtdG8tY3JlYXRlIHByaXZhdGUga2V5
IHdpbGwgYmUgaW5zZXJ0ZWQgaW50byBrZXljaGFpbiB3aGlsZSB1c2luZyBTRVAuCisgICAgYXV0
byBwcml2YXRlS2V5ID0gbV9jb25uZWN0aW9uLT5jcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShj
b250ZXh0LCBhY2Nlc3NDb250cm9sUmVmLCBzZWNBdHRyTGFiZWwsIHNlY0F0dHJBcHBsaWNhdGlv
blRhZy5nZXQoKSk7CisgICAgaWYgKCFwcml2YXRlS2V5KSB7CisgICAgICAgIHJlY2VpdmVSZXNw
b25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0
ZSBrZXkuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIC8vIEF0dGVzdGF0aW9u
IENlcnRpZmljYXRlIGFuZCBBdHRlc3RhdGlvbiBJc3N1aW5nIENBCi0gICAgQVNTRVJUKGNlcnRp
ZmljYXRlcyAmJiAoW2NlcnRpZmljYXRlcyBjb3VudF0gPT0gMikpOwogCi0gICAgLy8gU3RlcCA3
LjItNy40LgotICAgIC8vIEZJWE1FKDE4MzUzMyk6IEEgc2luZ2xlIGtTZWNDbGFzc0tleSBpdGVt
IGNvdWxkbid0IHN0b3JlIGFsbCBtZXRhIGRhdGEuIFRoZSBmb2xsb3dpbmcgc2NoZW1hIGlzIGEg
dGVudGF0aXZlIHNvbHV0aW9uCi0gICAgLy8gdG8gYWNjb21tb2RhdGUgdGhlIG1vc3QgaW1wb3J0
YW50IG1ldGEgZGF0YSwgaS5lLiBSUCBJRCwgQ3JlZGVudGlhbCBJRCwgYW5kIHVzZXJoYW5kbGUu
Ci0gICAgLy8ga1NlY0F0dHJMYWJlbDogUlAgSUQKLSAgICAvLyBrU2VjQXR0ckFwcGxpY2F0aW9u
TGFiZWw6IENyZWRlbnRpYWwgSUQgKGF1dG8tZ2VuIGJ5IEtleWNoYWluKQotICAgIC8vIGtTZWNB
dHRyQXBwbGljYXRpb25UYWc6IHVzZXJoYW5kbGUKLSAgICAvLyBOb3RlZCwgdGhlIGN1cnJlbnQg
RGV2aWNlSWRlbnRpdHkuRnJhbWV3b3JrIHdvdWxkIG9ubHkgYWxsb3cgdXMgdG8gcGFzcyB0aGUg
a1NlY0F0dHJMYWJlbCBhcyB0aGUgaW5pdGFsIGF0dHJpYnV0ZQotICAgIC8vIGZvciB0aGUgS2V5
Y2hhaW4gaXRlbS4gU2luY2UgdGhhdCdzIHRoZSBvbmx5IGNsdWUgd2UgaGF2ZSB0byBsb2NhdGUg
dGhlIHVuaXF1ZSBpdGVtLCB3ZSB1c2UgdGhlIHBhdHRlcm4gdXNlcm5hbWVAcnAuaWQKLSAgICAv
LyBhcyB0aGUgaW5pdGlhbCB2YWx1ZS4KLSAgICAvLyBBbHNvIG5vdGVkLCB0aGUgdmFsZSBvZiBr
U2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhl
IEtleWNoYWluLCB3aGljaCBpcyBhIFNIQS0xIGhhc2ggb2YKLSAgICAvLyB0aGUgcHVibGljIGtl
eS4gV2UgYm9ycm93IGl0IGRpcmVjdGx5IGZvciBub3cgdG8gd29ya2Fyb3VuZCB0aGUgc3RhdGVk
IGxpbWl0YXRpb25zLgotICAgIC8vIFVwZGF0ZSB0aGUgS2V5Y2hhaW4gaXRlbSB0byB0aGUgYWJv
dmUgc2NoZW1hLgotICAgIC8vIEZJWE1FKDE4MzUzMyk6IERldmljZUlkZW50aXR5LkZyYW1ld29y
ayB3b3VsZCBpbnNlcnQgY2VydGlmaWNhdGVzIGludG8gS2V5Y2hhaW4gYXMgd2VsbC4gV2Ugc2hv
dWxkIHVwZGF0ZSB0aG9zZSBhcyB3ZWxsLgogICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFs
SWQ7CiAgICAgewotICAgICAgICAvLyAtcmstdWNydCBpcyBhZGRlZCBieSBEZXZpY2VJZGVudGl0
eS5GcmFtZXdvcmsuCi0gICAgICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcoY3JlYXRpb25P
cHRpb25zLnVzZXIubmFtZSwgIkAiLCBjcmVhdGlvbk9wdGlvbnMucnAuaWQsICItcmstdWNydCIp
OwogICAgICAgICBOU0RpY3Rpb25hcnkgKmNyZWRlbnRpYWxJZFF1ZXJ5ID0gQHsKICAgICAgICAg
ICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCiAgICAgICAgICAgICAoaWQpa1Nl
Y0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAotICAgICAgICAgICAg
KGlkKWtTZWNBdHRyTGFiZWw6IGxhYmVsLAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6
IHNlY0F0dHJMYWJlbCwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBz
ZWNBdHRyQXBwbGljYXRpb25UYWcuZ2V0KCksCiAgICAgICAgICAgICAoaWQpa1NlY1JldHVybkF0
dHJpYnV0ZXM6IEBZRVMsCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAg
ICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKQEAgLTI1Niwy
NyArMjUxLDYgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRp
YWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiBwcml2YXRlS2UKIAogICAgICAgICBOU0RpY3Rpb25h
cnkgKm5zQXR0cmlidXRlcyA9IChOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzUmVmOwogICAgICAg
ICBjcmVkZW50aWFsSWQgPSB0b1ZlY3Rvcihuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25MYWJlbF0pOwotCi0gICAgICAgIE5TRGljdGlvbmFyeSAqdXBkYXRlUXVlcnkgPSBAewot
ICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAg
IChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAg
ICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBuc0F0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF0sCi0jaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hB
SU4pCi0gICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMK
LSNlbHNlCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwotI2VuZGlmCi0g
ICAgICAgIH07Ci0gICAgICAgIE5TRGljdGlvbmFyeSAqdXBkYXRlUGFyYW1zID0gQHsKLSAgICAg
ICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBjcmVhdGlvbk9wdGlvbnMucnAuaWQsCi0gICAgICAg
ICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNy
ZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEoKSBsZW5ndGg6Y3JlYXRpb25PcHRpb25z
LnVzZXIuaWRWZWN0b3Iuc2l6ZSgpXSwKLSAgICAgICAgfTsKLSAgICAgICAgc3RhdHVzID0gU2Vj
SXRlbVVwZGF0ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXVwZGF0ZVF1ZXJ5LCAoX19icmlk
Z2UgQ0ZEaWN0aW9uYXJ5UmVmKXVwZGF0ZVBhcmFtcyk7Ci0gICAgICAgIGlmIChzdGF0dXMpIHsK
LSAgICAgICAgICAgIExPR19FUlJPUigiQ291bGRuJ3QgdXBkYXRlIHRoZSBLZXljaGFpbiBpdGVt
OiAlZCIsIHN0YXR1cyk7Ci0gICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRh
IHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCB1cGRhdGUgdGhlIEtleWNoYWlu
IGl0ZW06ICIsIHN0YXR1cykgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAg
ICB9CiAKICAgICAvLyBTdGVwIDEwLgpAQCAtMjg5LDcgKzI2Myw3IEBAIHZvaWQgTG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYg
cHJpdmF0ZUtlCiAgICAgewogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwdWJsaWNLZXlE
YXRhUmVmOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHB1YmxpY0tleSA9IGFkb3B0Q0Yo
U2VjS2V5Q29weVB1YmxpY0tleShwcml2YXRlS2V5KSk7CisgICAgICAgICAgICBhdXRvIHB1Ymxp
Y0tleSA9IGFkb3B0Q0YoU2VjS2V5Q29weVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSk7CiAg
ICAgICAgICAgICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKICAgICAgICAgICAgIHB1
YmxpY0tleURhdGFSZWYgPSBhZG9wdENGKFNlY0tleUNvcHlFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KHB1YmxpY0tleS5nZXQoKSwgJmVycm9yUmVmKSk7CiAgICAgICAgICAgICBhdXRvIHJldGFpbkVy
cm9yID0gYWRvcHRDRihlcnJvclJlZik7CkBAIC0zMTQsMzIgKzI4OCw0NiBAQCB2b2lkIExvY2Fs
QXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5
UmVmIHByaXZhdGVLZQogICAgIC8vIFN0ZXAgMTIuCiAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxk
QXV0aERhdGEoY3JlYXRpb25PcHRpb25zLnJwLmlkLCBtYWtlQ3JlZGVudGlhbEZsYWdzLCBjb3Vu
dGVyLCBhdHRlc3RlZENyZWRlbnRpYWxEYXRhKTsKIAorICAgIC8vIFN0ZXAgMTMuIEFwcGxlIEF0
dGVzdGF0aW9uCisgICAgYXV0byAqcHJpdmF0ZUtleVJlZiA9IHByaXZhdGVLZXkuZ2V0KCk7Cisg
ICAgYXV0byBuc0F1dGhEYXRhID0gdG9OU0RhdGEoYXV0aERhdGEpOworICAgIGF1dG8gY2FsbGJh
Y2sgPSBbcHJpdmF0ZUtleSA9IFdURk1vdmUocHJpdmF0ZUtleSksIGNyZWRlbnRpYWxJZCA9IFdU
Rk1vdmUoY3JlZGVudGlhbElkKSwgYXV0aERhdGEgPSBXVEZNb3ZlKGF1dGhEYXRhKSwgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChOU0FycmF5ICogX051bGxhYmxlIGNlcnRpZmljYXRl
cywgTlNFcnJvciAqIF9OdWxsYWJsZSBlcnJvcikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRl
c3RlZChwcml2YXRlS2V5LmdldCgpLCBXVEZNb3ZlKGNyZWRlbnRpYWxJZCksIFdURk1vdmUoYXV0
aERhdGEpLCBjZXJ0aWZpY2F0ZXMsIGVycm9yKTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+
Z2V0QXR0ZXN0YXRpb24ocHJpdmF0ZUtleVJlZiwgbnNBdXRoRGF0YS5nZXQoKSwgdG9OU0RhdGEo
cmVxdWVzdERhdGEoKS5oYXNoKS5nZXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQo
U2VjS2V5UmVmIHByaXZhdGVLZXksIFZlY3Rvcjx1aW50OF90PiYmIGNyZWRlbnRpYWxJZCwgVmVj
dG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIE5TQXJyYXkgKmNlcnRpZmljYXRlcywgTlNFcnJvciAq
ZXJyb3IpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFs
OworCisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlVzZXJDb25zZW50ZWQpOworICAgIG1f
c3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7CisgICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RG
OjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5v
cHRpb25zKTsKKworICAgIGlmIChlcnJvcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxk
bid0IGF0dGVzdDogJUAiLCBlcnJvcik7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlv
bkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGF0dGVzdDogIiwgU3Ry
aW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgLy8gQXR0ZXN0YXRpb24gQ2VydGlmaWNhdGUgYW5kIEF0dGVzdGF0aW9uIElzc3Vp
bmcgQ0EKKyAgICBBU1NFUlQoY2VydGlmaWNhdGVzICYmIChbY2VydGlmaWNhdGVzIGNvdW50XSA9
PSAyKSk7CisKICAgICAvLyBTdGVwIDEzLiBBcHBsZSBBdHRlc3RhdGlvbiBDb250JwogICAgIC8v
IEFzc2VtYmxlIHRoZSBhdHRlc3RhdGlvbiBvYmplY3Q6CiAgICAgLy8gaHR0cHM6Ly93d3cudzMu
b3JnL1RSL3dlYmF1dGhuLyNhdHRlc3RhdGlvbi1vYmplY3QKICAgICBjYm9yOjpDQk9SVmFsdWU6
Ok1hcFZhbHVlIGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwOwogICAgIHsKLSAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICAgICAgewotICAgICAgICAgICAgQ0ZFcnJvclJlZiBl
cnJvclJlZiA9IG51bGxwdHI7Ci0gICAgICAgICAgICAvLyBGSVhNRSgxODM2NTIpOiBSZWR1Y2Ug
cHJvbXB0IGZvciBiaW9tZXRyaWNzCi0gICAgICAgICAgICBhdXRvIHNpZ25hdHVyZVJlZiA9IGFk
b3B0Q0YoU2VjS2V5Q3JlYXRlU2lnbmF0dXJlKHByaXZhdGVLZXksIGtTZWNLZXlBbGdvcml0aG1F
Q0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hBMjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0Rh
dGEgZGF0YVdpdGhCeXRlczphdXRoRGF0YS5kYXRhKCkgbGVuZ3RoOmF1dGhEYXRhLnNpemUoKV0s
ICZlcnJvclJlZikpOwotICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJy
b3JSZWYpOwotICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICAgICAgTE9H
X0VSUk9SKCJDb3VsZG4ndCBnZW5lcmF0ZSB0aGUgc2lnbmF0dXJlOiAlQCIsIChOU0Vycm9yKill
cnJvclJlZik7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVy
ZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkg
fSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2lnbmF0dXJlID0gdG9WZWN0b3IoKE5TRGF0YSAqKXNpZ25hdHVyZVJlZi5nZXQoKSk7Ci0gICAg
ICAgIH0KICAgICAgICAgYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJh
bGciKV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09TRTo6RVMyNTYpOwotICAgICAgICBhdHRlc3RhdGlv
blN0YXRlbWVudE1hcFtjYm9yOjpDQk9SVmFsdWUoInNpZyIpXSA9IGNib3I6OkNCT1JWYWx1ZShz
aWduYXR1cmUpOwogICAgICAgICBWZWN0b3I8Y2Jvcjo6Q0JPUlZhbHVlPiBjYm9yQXJyYXk7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgW2NlcnRpZmljYXRlcyBjb3VudF07IGkrKykK
ICAgICAgICAgICAgIGNib3JBcnJheS5hcHBlbmQoY2Jvcjo6Q0JPUlZhbHVlKHRvVmVjdG9yKChO
U0RhdGEgKilhZG9wdENGKFNlY0NlcnRpZmljYXRlQ29weURhdGEoKF9fYnJpZGdlIFNlY0NlcnRp
ZmljYXRlUmVmKWNlcnRpZmljYXRlc1tpXSkpLmdldCgpKSkpOwogICAgICAgICBhdHRlc3RhdGlv
blN0YXRlbWVudE1hcFtjYm9yOjpDQk9SVmFsdWUoIng1YyIpXSA9IGNib3I6OkNCT1JWYWx1ZShX
VEZNb3ZlKGNib3JBcnJheSkpOwogICAgIH0KLSAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0g
YnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwgIkFwcGxlIiwgV1RGTW92
ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7
CisgICAgYXV0byBhdHRlc3RhdGlvbk9iamVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RG
TW92ZShhdXRoRGF0YSksICJhcHBsZSIsIFdURk1vdmUoYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXAp
LCBjcmVhdGlvbk9wdGlvbnMuYXR0ZXN0YXRpb24pOwogCiAgICAgcmVjZWl2ZVJlc3BvbmQoQXV0
aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVz
dGF0aW9uT2JqZWN0KSk7CiB9CkBAIC0zNTYsNiArMzQ0LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRp
Y2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAgLy8gU2tpcCBTdGVwIDggYXMgZXh0ZW5zaW9ucyBh
cmUgbm90IHN1cHBvcnRlZCB5ZXQuCiAgICAgLy8gU3RlcCAxMiBpcyBpbXBsaWNpdGx5IGNhcHR1
cmVkIGJ5IGFsbCBVbmtub3duRXJyb3IgZXhjZXB0aW9uIGNhbGxiYWNrcy4KICAgICAvLyBTdGVw
IDMtNS4gVW5saWtlIHRoZSBzcGVjLCBpZiBhbiBhbGxvdyBsaXN0IGlzIHByb3ZpZGVkIGFuZCB0
aGVyZSBpcyBubyBpbnRlcnNlY3Rpb24gYmV0d2VlbiBleGlzdGluZyBvbmVzIGFuZCB0aGUgYWxs
b3cgbGlzdCwgd2UgYWx3YXlzIHJldHVybiBOb3RBbGxvd2VkRXJyb3IuCisgICAgLy8gRklYTUUo
cmRhcjovL3Byb2JsZW0vMzU5MDA1OTMpOiBOZWVkIHRvIGluZm9ybSB1c2Vycy4KICAgICBhdXRv
IGFsbG93Q3JlZGVudGlhbElkcyA9IHByb2R1Y2VIYXNoU2V0KHJlcXVlc3RPcHRpb25zLmFsbG93
Q3JlZGVudGlhbHMpOwogICAgIGlmICghcmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5p
c0VtcHR5KCkgJiYgYWxsb3dDcmVkZW50aWFsSWRzLmlzRW1wdHkoKSkgewogICAgICAgICByZWNl
aXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBj
cmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0
b3IuIl9zIH0pOwpAQCAtNDQ4LDcgKzQzNyw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpj
b250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246CiAg
ICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewogICAgICAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAo
aWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBs
aWNhdGlvbkxhYmVsOiBbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6Y3JlZGVudGlhbElkLmRhdGEoKSBs
ZW5ndGg6Y3JlZGVudGlhbElkLnNpemUoKV0sCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBs
aWNhdGlvbkxhYmVsOiB0b05TRGF0YShjcmVkZW50aWFsSWQpLmdldCgpLAogICAgICAgICAgICAg
KGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICAo
aWQpa1NlY1JldHVyblJlZjogQFlFUywKICNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJ
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKaW5kZXggY2Q3ODVjMmNkZGM0ZjEx
MGRjZTY4ZTNkYmRkZGZiNTI4NzNjMTMwNS4uN2YxZmRiMzcyYTZhNThkNTAyNjhlZDkwMGNlNjE3
M2M0M2I4M2MyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLmgKQEAgLTM1LDYg
KzM1LDEwIEBACiAKIE9CSkNfQ0xBU1MgTEFDb250ZXh0OwogCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIC8vIExvY2FsIGF1dGhlbnRpY2F0b3JzIG5vcm1hbGx5IGRvZXNuJ3Qg
bmVlZCB0byBlc3RhYmxpc2ggY29ubmVjdGlvbnMKQEAgLTUxLDcgKzU1LDcgQEAgcHVibGljOgog
ICAgICAgICBZZXMKICAgICB9OwogCi0gICAgdXNpbmcgQXR0ZXN0YXRpb25DYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2VjS2V5UmVmLCBOU0FycmF5ICosIE5TRXJyb3IgKik+Owor
ICAgIHVzaW5nIEF0dGVzdGF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5T
QXJyYXkgKiwgTlNFcnJvciAqKT47CiAgICAgdXNpbmcgVXNlckNvbnNlbnRDYWxsYmFjayA9IENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlckNvbnNlbnQpPjsKICAgICB1c2luZyBVc2VyQ29uc2Vu
dENvbnRleHRDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlckNvbnNlbnQsIExB
Q29udGV4dCAqKT47CiAKQEAgLTU5LDkgKzYzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxv
Y2FsQ29ubmVjdGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8vIE92ZXJyaWRlZCBieSBNb2NrTG9j
YWxDb25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBTdHJp
bmcmIHJlYXNvbiwgVXNlckNvbnNlbnRDYWxsYmFjayYmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0FjY2Vzc0NvbnRyb2xS
ZWYsIFVzZXJDb25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRBdHRlc3RhdGlvbihjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlcm5h
bWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQ
cml2YXRlS2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcm
IHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEs
IE5TRGF0YSAqaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsKICAgICB2aXJ0dWFs
IE5TRGljdGlvbmFyeSAqc2VsZWN0Q3JlZGVudGlhbChjb25zdCBOU0FycmF5ICopIGNvbnN0Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDkwYTVmN2IzYmIx
MWY0MGY5NTU1ODgyYzBiOGJmMmExMGEyZTkzOGYuLjhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0
YzMxM2I4YTBhZTAxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAg
LTI4LDMzICsyOCwxNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2ltcG9ydCAiRGV2
aWNlSWRlbnRpdHlTUEkuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2lt
cG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCisjaWYgVVNF
KEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9Mb2NhbENvbm5l
Y3Rpb25BZGRpdGlvbnMuaD4KKyNlbmRpZgorCiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9u
U29mdExpbmsuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgTG9jYWxDb25uZWN0aW9u
OjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgVXNlckNvbnNlbnRDYWxsYmFj
ayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAotewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0
TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgYXV0byByZXBseSA9IG1h
a2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgICAgICBVc2VyQ29uc2VudCBjb25zZW50ID0g
VXNlckNvbnNlbnQ6OlllczsKLSAgICAgICAgaWYgKCFzdWNjZXNzIHx8IGVycm9yKSB7Ci0gICAg
ICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJpb21ldHJpY3M6
ICVAIiwgZXJyb3IpOwotICAgICAgICAgICAgY29uc2VudCA9IFVzZXJDb25zZW50OjpObzsKLSAg
ICAgICAgfQotICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNvbnNlbnRdKCkgbXV0YWJsZSB7Ci0g
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50KTsKLSAgICAgICAgfSk7Ci0gICAg
fSk7Ci0gICAgW2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhl
bnRpY2F0aW9uV2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBs
eS5nZXQoKV07Ci19Ci0KIHZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25z
dCBTdHJpbmcmIHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBVc2Vy
Q29uc2VudENvbnRleHRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAg
IGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7
CkBAIC03Myw0MSArNTcsMzUgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50
KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGEKICAgICBbY29udGV4
dCBldmFsdWF0ZUFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29udHJvbCBvcGVyYXRpb246TEFBY2Nlc3ND
b250cm9sT3BlcmF0aW9uVXNlS2V5U2lnbiBsb2NhbGl6ZWRSZWFzb246cmVhc29uIHJlcGx5OnJl
cGx5LmdldCgpXTsKIH0KIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNv
bnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNv
bnN0CitSZXRhaW5QdHI8U2VjS2V5UmVmPiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRp
YWxQcml2YXRlS2V5KExBQ29udGV4dCAqY29udGV4dCwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nl
c3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRy
QXBwbGljYXRpb25UYWcpIGNvbnN0CiB7Ci0jaWYgSEFWRShERVZJQ0VfSURFTlRJVFkpCi0gICAg
Ly8gQXBwbGUgQXR0ZXN0YXRpb24KLSAgICBBU1NFUlQoaGFzaC5zaXplKCkgPD0gMzIpOwotCi0g
ICAgUmV0YWluUHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2xSZWY7Ci0gICAg
ewotICAgICAgICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKLSAgICAgICAgYWNjZXNz
Q29udHJvbFJlZiA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhGbGFncyhOVUxM
LCBrU2VjQXR0ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25seSwga1NlY0Fj
Y2Vzc0NvbnRyb2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVzZXJQcmVzZW5j
ZSwgJmVycm9yUmVmKSk7Ci0gICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9y
UmVmKTsKLSAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNv
dWxkbid0IGNyZWF0ZSBBQ0w6ICVAIiwgKE5TRXJyb3IgKillcnJvclJlZik7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihOVUxMLCBOVUxMLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46
QCJjb20uYXBwbGUuV2ViS2l0LldlYkF1dGhOIiBjb2RlOjEgdXNlckluZm86bmlsXSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMg
PSBAeworICAgICAgICAoaWQpa1NlY0F0dHJUb2tlbklEOiAoaWQpa1NlY0F0dHJUb2tlbklEU2Vj
dXJlRW5jbGF2ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5VHlwZTogKGlkKWtTZWNBdHRyS2V5
VHlwZUVDU0VDUHJpbWVSYW5kb20sCisgICAgICAgIChpZClrU2VjQXR0cktleVNpemVJbkJpdHM6
IEAyNTYsCisgICAgICAgIChpZClrU2VjUHJpdmF0ZUtleUF0dHJzOiBAeworICAgICAgICAgICAg
KGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNvbnRleHQ6IGNvbnRleHQsCisgICAgICAgICAgICAo
aWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sOiAoaWQpYWNjZXNzQ29udHJvbFJlZiwKKyAgICAgICAg
ICAgIChpZClrU2VjQXR0cklzUGVybWFuZW50OiBAWUVTLAorICAgICAgICAgICAgKGlkKWtTZWNB
dHRyQWNjZXNzR3JvdXA6IEAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiIsCisgICAgICAgICAg
ICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAorICAgICAgICAgICAgKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25UYWc6IHNlY0F0dHJBcHBsaWNhdGlvblRhZywKKyAgICAgICAgfX07Cisg
ICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgYXV0byBjcmVkZW50aWFsUHJp
dmF0ZUtleSA9IGFkb3B0Q0YoU2VjS2V5Q3JlYXRlUmFuZG9tS2V5KChfX2JyaWRnZSBDRkRpY3Rp
b25hcnlSZWYpYXR0cmlidXRlcywgJmVycm9yUmVmKSk7CisgICAgYXV0byByZXRhaW5FcnJvciA9
IGFkb3B0Q0YoZXJyb3JSZWYpOworICAgIGlmIChlcnJvclJlZikgeworICAgICAgICBMT0dfRVJS
T1IoIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleTogJUAiLCAoTlNFcnJvciAqKWVycm9yUmVm
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIHJldHVybiBjcmVkZW50aWFs
UHJpdmF0ZUtleTsKK30KIAotICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcodXNlcm5hbWUs
ICJAIiwgcnBJZCk7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKLSAgICAgICAga01B
T3B0aW9uc0JBQUtleWNoYWluTGFiZWw6IGxhYmVsLAotICAgICAgICAvLyBGSVhNRShyZGFyOi8v
cHJvYmxlbS8zODQ4OTEzNCk6IE5lZWQgYSBmb3JtYWwgbmFtZS4KLSAgICAgICAga01BT3B0aW9u
c0JBQUtleWNoYWluQWNjZXNzR3JvdXA6IEAiY29tLmFwcGxlLnNhZmFyaS5XZWJBdXRoTi5jcmVk
ZW50aWFscyIsCi0gICAgICAgIGtNQU9wdGlvbnNCQUFJZ25vcmVFeGlzdGluZ0tleWNoYWluSXRl
bXM6IEBZRVMsCi0gICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM4NDg5MTM0KTogRGV0
ZXJtaW5lIGEgcHJvcGVyIGxpZmVzcGFuLgotICAgICAgICBrTUFPcHRpb25zQkFBVmFsaWRpdHk6
IEAoMTQ0MCksIC8vIExhc3Qgb25lIGRheS4KLSAgICAgICAga01BT3B0aW9uc0JBQVNDUlRBdHRl
c3RhdGlvbjogQE5PLAotICAgICAgICBrTUFPcHRpb25zQkFBTm9uY2U6IFtOU0RhdGEgZGF0YVdp
dGhCeXRlczpoYXNoLmRhdGEoKSBsZW5ndGg6aGFzaC5zaXplKCldLAotICAgICAgICBrTUFPcHRp
b25zQkFBQWNjZXNzQ29udHJvbHM6IChpZClhY2Nlc3NDb250cm9sUmVmLmdldCgpLAotICAgICAg
ICBrTUFPcHRpb25zQkFBT0lEU1RvSW5jbHVkZTogQFtrTUFPcHRpb25zQkFBT0lETm9uY2VdCi0g
ICAgfTsKLQotICAgIC8vIEZJWE1FKDE4MzY1Mik6IFJlZHVjZSBwcm9tcHQgZm9yIGJpb21ldHJp
Y3MKLSAgICBEZXZpY2VJZGVudGl0eUlzc3VlQ2xpZW50Q2VydGlmaWNhdGVXaXRoQ29tcGxldGlv
bihkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBvcHRpb25zLCBtYWtlQmxvY2tQdHIoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpLmdldCgpKTsKLSNlbmRpZiAvLyBIQVZFKERFVklDRV9JREVO
VElUWSkKK3ZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYgcHJp
dmF0ZUtleSwgTlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxi
YWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisjaWYgZGVmaW5lZChMT0NBTENPTk5F
Q1RJT05fQURESVRJT05TKQorTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUworI2VuZGlmCiB9CiAK
IE5TRGljdGlvbmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5T
QXJyYXkgKmNyZWRlbnRpYWxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCmlu
ZGV4IDI2ZmM5MjUxNjkwZmY5Zjg2MTA2NWM3NjQ0OGM3NGQ5ODY4M2Q5ZTQuLjZiYzA4MjUyOTZk
OGFhZTIzYWI2NGRjZjA3MGYzMTNmMGY5OTRmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZp
Y2UubW0KQEAgLTMxLDYgKzMxLDEwIEBACiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0b3IuaCIK
ICNpbXBvcnQgIkxvY2FsQ29ubmVjdGlvbi5oIgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9Mb2NhbFNlcnZpY2VBZGRpdGlvbnMuaD4KKyNl
bmRpZgorCiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCIKIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC00MCw3ICs0NCw2IEBAIExvY2FsU2VydmljZTo6TG9jYWxTZXJ2aWNl
KE9ic2VydmVyJiBvYnNlcnZlcikKIHsKIH0KIAotLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNTEw
NDg1NDIpCiBib29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKQogewogICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CkBAIC00OSw2
ICs1MiwxMSBAQCBib29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKQogICAgICAgICBMT0df
RVJST1IoIkNvdWxkbid0IGZpbmQgbG9jYWwgYXV0aGVudGljYXRvcnM6ICVAIiwgZXJyb3IpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorCisjaWYgZGVmaW5lZChMT0NBTFNFUlZJQ0Vf
QURESVRJT05TKQorTE9DQUxTRVJWSUNFX0FERElUSU9OUworI2VuZGlmCisKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAppbmRleCAz
NTU5YjgwZWI5ODI4MGEwMWMxNTBhYzQyMmE0M2MyM2VjZDNhZDIzLi43MjAxNThhY2MyNTU5MWI3
MzBmY2U3MWNhZmVkYmUzNDMxOTZkZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENv
bm5lY3Rpb24uaApAQCAtMzcsOSArMzcsOSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTW9ja0xv
Y2FsQ29ubmVjdGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBTdHJp
bmcmIHJlYXNvbiwgVXNlckNvbnNlbnRDYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IGdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVm
LCBVc2VyQ29uc2VudENvbnRleHRDYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGdl
dEF0dGVzdGF0aW9uKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0
IGZpbmFsOworICAgIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRl
S2V5KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0
dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgZ2V0QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRhLCBOU0RhdGEg
Kmhhc2gsIEF0dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgTlNEaWN0aW9u
YXJ5ICpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkgKikgY29uc3QgZmluYWw7CiAKICAg
ICBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJh
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCBhNmZl
MjMwMDhmMmFlMWQzNDE3ODE4YTMyMGRlOGIxMzZmNzg1Yzg0Li45MTViNTk0OTlmZTdlY2QyN2Jm
ZjY5YjJmMDY3MGRiN2Q0Y2YzMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25u
ZWN0aW9uLm1tCkBAIC00MywxOSArNDMsNiBAQCBNb2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9j
YWxDb25uZWN0aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbgogewog
fQogCi12b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmlu
ZyYsIFVzZXJDb25zZW50Q2FsbGJhY2smJiBjYWxsYmFjaykgY29uc3QKLXsKLSAgICAvLyBNb2Nr
IGFzeW5jIG9wZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1
cmF0aW9uID0gbV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgp
IG11dGFibGUgewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0gICAgICAg
IGlmICghY29uZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKFVzZXJDb25zZW50OjpObyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FsbGJhY2soVXNlckNvbnNlbnQ6Olllcyk7Ci0gICAgfSk7Ci19
Ci0KIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5n
JiwgU2VjQWNjZXNzQ29udHJvbFJlZiwgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJiBjYWxs
YmFjaykgY29uc3QKIHsKICAgICAvLyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCkBAIC02OSw1NiAr
NTYsNTkgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBT
dHJpbmcmLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2UKICAgICB9KTsKIH0KIAotdm9pZCBNb2Nr
TG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0
IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgQXR0ZXN0YXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAorUmV0YWluUHRyPFNlY0tleVJlZj4gTW9ja0xv
Y2FsQ29ubmVjdGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNl
Y0FjY2Vzc0NvbnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNl
Y0F0dHJBcHBsaWNhdGlvblRhZykgY29uc3QKIHsKLSAgICAvLyBNb2NrIGFzeW5jIG9wZXJhdGlv
bnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1cmF0aW9uID0gbV9jb25m
aWd1cmF0aW9uLCBycElkLCB1c2VybmFtZSwgaGFzaCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbmZpZ3VyYXRpb24ubG9jYWwpOwot
ICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24ubG9jYWwtPmFjY2VwdEF0dGVzdGF0aW9uKSB7Ci0g
ICAgICAgICAgICBjYWxsYmFjayhOVUxMLCBOVUxMLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46
QCJXZWJBdXRoZW50aWNhdGlvbiIgY29kZTotMSB1c2VySW5mbzpAeyBOU0xvY2FsaXplZERlc2Ny
aXB0aW9uS2V5OiBAIlRoZSBvcGVyYXRpb24gY291bGRuJ3QgY29tcGxldGUuIiB9XSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgS2V5IGFuZCBhZGQg
aXQgdG8gS2V5Y2hhaW4uCi0gICAgICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7Ci0gICAg
ICAgICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmlt
ZVJhbmRvbSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJL
ZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJLZXlTaXplSW5CaXRzOiBA
MjU2LAotICAgICAgICB9OwotICAgICAgICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsK
LSAgICAgICAgYXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKAotICAgICAg
ICAgICAgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+cHJpdmF0ZUtleUJhc2U2
NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5n
ZXQoKSwKLSAgICAgICAgICAgIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucywKLSAg
ICAgICAgICAgICZlcnJvclJlZgotICAgICAgICApKTsKLSAgICAgICAgaWYgKGVycm9yUmVmKSB7
Ci0gICAgICAgICAgICBjYWxsYmFjayhOVUxMLCBOVUxMLCAoTlNFcnJvciAqKWVycm9yUmVmKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1vY2sgd2hhdCBE
ZXZpY2VJZGVudGl0eSB3b3VsZCBkby4KLSAgICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0cmlu
Zyh1c2VybmFtZSwgIkAiLCBycElkLCAiLXJrLXVjcnQiKTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5
KiBhZGRRdWVyeSA9IEB7Ci0gICAgICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5Lmdl
dCgpLAotICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAg
ICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiAoaWQpbGFiZWwsCi0gICAgICAgICAgICAoaWQpa1Nl
Y0F0dHJBY2Nlc3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywK
KyAgICBBU1NFUlQobV9jb25maWd1cmF0aW9uLmxvY2FsKTsKKworICAgIC8vIEdldCBLZXkgYW5k
IGFkZCBpdCB0byBLZXljaGFpbi4KKyAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAeworICAg
ICAgICAoaWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJh
bmRvbSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNz
UHJpdmF0ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5U2l6ZUluQml0czogQDI1NiwKKyAgICB9
OworICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRv
cHRDRihTZWNLZXlDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgKF9fYnJpZGdlIENGRGF0YVJlZilh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9jb25m
aWd1cmF0aW9uLmxvY2FsLT5wcml2YXRlS2V5QmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVj
b2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoX19icmlkZ2Ug
Q0ZEaWN0aW9uYXJ5UmVmKW9wdGlvbnMsCisgICAgICAgICZlcnJvclJlZgorICAgICkpOworICAg
IGlmIChlcnJvclJlZikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBOU0RpY3Rpb25h
cnkqIGFkZFF1ZXJ5ID0gQHsKKyAgICAgICAgKGlkKWtTZWNWYWx1ZVJlZjogKGlkKWtleS5nZXQo
KSwKKyAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKKyAgICAgICAgKGlk
KWtTZWNBdHRyTGFiZWw6IHNlY0F0dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25UYWc6IHNlY0F0dHJBcHBsaWNhdGlvblRhZywKKyAgICAgICAgKGlkKWtTZWNBdHRyQWNj
ZXNzaWJsZTogKGlkKWtTZWNBdHRyQWNjZXNzaWJsZUFmdGVyRmlyc3RVbmxvY2ssCiAjaWYgSEFW
RShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQ
cm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlv
bktleWNoYWluOiBAWUVTCiAjZWxzZQotICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6
IEBZRVMKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAg
ICB9OwotICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRp
Y3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwpOwotICAgICAgICBpZiAoc3RhdHVzKSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhOVUxMLCBOVUxMLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJX
ZWJBdXRoZW50aWNhdGlvbiIgY29kZTpzdGF0dXMgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNj
cmlwdGlvbktleTogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJDb3VsZG4ndCBhZGQgdGhl
IGtleSB0byB0aGUga2V5Y2hhaW4uICVkIiwgc3RhdHVzXSB9XSk7CisgICAgfTsKKyAgICBPU1N0
YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVl
cnksIE5VTEwpOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4n
dCBhZGQgdGhlIGtleSB0byB0aGUga2V5Y2hhaW4uICVkIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIGtleTsKK30KKwordm9pZCBNb2NrTG9j
YWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqLCBOU0RhdGEg
KiwgQXR0ZXN0YXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAoreworICAgIC8vIE1vY2sg
YXN5bmMgb3BlcmF0aW9ucy4KKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbmZpZ3Vy
YXRpb24gPSBtX2NvbmZpZ3VyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkg
bXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChjb25maWd1cmF0aW9uLmxvY2FsKTsKKyAgICAgICAg
aWYgKCFjb25maWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdHRlc3RhdGlvbikgeworICAgICAgICAg
ICAgY2FsbGJhY2soTlVMTCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiV2ViQXV0aGVudGlj
YXRpb24iIGNvZGU6LTEgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTogQCJU
aGUgb3BlcmF0aW9uIGNvdWxkbid0IGNvbXBsZXRlLiIgfV0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBhdHRlc3RhdGlvbkNlcnRpZmljYXRlID0gYWRv
cHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2JyaWRnZSBDRkRhdGFS
ZWYpYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNv
bmZpZ3VyYXRpb24ubG9jYWwtPnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCBvcHRpb25zOk5TRGF0YUJh
c2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSkpOwogICAgICAgICBh
dXRvIGF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmlj
YXRlQ3JlYXRlV2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6Y29uZmlndXJhdGlvbi5sb2Nh
bC0+aW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERl
Y29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSkpOwotCi0gICAgICAgIGNhbGxi
YWNrKGtleS5nZXQoKSwgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogKF9fYnJpZGdlIGlkKWF0
dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCksIChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbklzc3Vp
bmdDQUNlcnRpZmljYXRlLmdldCgpLCBuaWxdLCBOVUxMKTsKKyAgICAgICAgY2FsbGJhY2soW05T
QXJyYXkgYXJyYXlXaXRoT2JqZWN0czogKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9uQ2VydGlmaWNh
dGUuZ2V0KCksIChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdl
dCgpLCBuaWxdLCBOVUxMKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmMwMDBiZjcwMDdiYTY5YzRlNzE5NTZi
MjdlNGUwMzZhM2Q2MmFlMS4uNjc4ODg1MmMxNTRjODk1MmVmMzYzMWY0MTk0MGM0OTlhZDVkYWNk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMTIyLDcgKzExMjIsNiBAQAogCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9OwogCQk1N0RDRUQ3MDIxNDJF
RTY4MDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVj
ZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdEQ0VENkMyMTQyRUFGOTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTdEQ0VENzEyMTQyRUU2QzAwMTZCODQ3
IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZEMjE0MkVBRkEwMDE2
Qjg0NyAvKiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07
Ci0JCTU3RENFREFCMjE0QzYwMDkwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQSS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQUEyMTRCOUI0
MzAwMTZCODQ3IC8qIERldmljZUlkZW50aXR5U1BJLmggKi87IH07CiAJCTU3RENFREFDMjE0QzYw
MjcwMDE2Qjg0NyAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFREExMjE0OUMxRTIwMDE2Qjg0NyAvKiBMb2Nh
bEF1dGhlbnRpY2F0b3IuaCAqLzsgfTsKIAkJNTdEQ0VEQUQyMTRDNjAyQzAwMTZCODQ3IC8qIExv
Y2FsQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdEQ0VEQTcyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oICovOyB9
OwogCQk1N0RDRURBRTIxNEM2MDMzMDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ5QTIxNDhCMDgzMDAx
NkI4NDcgLyogTG9jYWxTZXJ2aWNlLmggKi87IH07CkBAIC0zODY2LDcgKzM4NjUsNiBAQAogCQk1
N0RDRURBNjIxNDlGOURBMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFREE3MjE0QTU2OEIwMDE2Qjg0NyAvKiBMb2NhbENv
bm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU3RENFREE4MjE0QTU2OEIwMDE2Qjg0NyAvKiBMb2NhbENvbm5l
Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbENvbm5lY3Rpb24ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBEZXZp
Y2VJZGVudGl0eVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VJZGVudGl0eVNQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9j
a0xvY2FsU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrTG9jYWxTZXJ2aWNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RENFREMyMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2Nr
TG9jYWxTZXJ2aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0xvY2FsU2VydmljZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3
IC8qIE1vY2tMb2NhbENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0xvY2FsQ29ubmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgxMSw3ICs2ODA5LDYgQEAK
IAkJCWNoaWxkcmVuID0gKAogCQkJCTFBNTcwNTEwMUJFNDEwRTUwMDg3NEFGMSAvKiBCbG9ja1NQ
SS5oICovLAogCQkJCTM3QzIxQ0FEMUU5OTRDMEMwMDI5RDVGOSAvKiBDb3JlUHJlZGljdGlvblNQ
SS5oICovLAotCQkJCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQ
SS5oICovLAogCQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIwQyAvKiBEZXZpY2VNYW5hZ2VtZW50
U1BJLmggKi8sCiAJCQkJNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5o
ICovLAogCQkJCTM3NTRENTQ0MUIzQTI5RkQwMDNBNEM3RiAvKiBOU0ludm9jYXRpb25TUEkuaCAq
LywKQEAgLTEwMjQyLDcgKzEwMjM5LDYgQEAKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUg
LyogRGF0YVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwMzZBRTkyM0E5NzA4NzAw
MDBCMDZBIC8qIERlYnVnZ2FibGVJbmZvRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJE
QTYxMEY0MzdEMTAwNThDMTVBIC8qIERlY29kZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3RENF
REFCMjE0QzYwMDkwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQSS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDcyOTdGOUYxQzE3QkJFQTAxNUYwNzM1IC8qIERldmljZUlkSGFzaFNhbHRTdG9yYWdl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDBDNTZGRDIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNl
TWFuYWdlbWVudFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFBREE4RjIyOThDMjEw
MDBFMzZCMEMgLyogRGV2aWNlTWFuYWdlbWVudFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NGFjMDAxNTRiMzM4N2ZhNWQxZTNiYWE4ODJiNTgzMGQ3NTg1MTBkMS4uYjhmOGYwOThjYWU3YzE1
YWRmNjRiOTgzYzljNzFmYWMyZjcyNDliMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAy
LTE5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBSZXBsYWNlIERldmljZUlkZW50aXR5LmZyYW1ld29yaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTg1CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81OTM2OTIyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0
bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisKIDIwMjAtMDItMTggIENocmlzIER1bWV6
ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbV0sxXSBGbGFreSBUZXN0OiBodHRwL3Rl
c3RzL2Nvb2tpZXMvZG9jdW1lbnQtY29va2llLWR1cmluZy1pZnJhbWUtcGFyc2luZy5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBmYmUxYTgyNTMxODA2ZmRjMGEwN2ZlMWRh
NTg5MzEyNDI1MjNjOWY5Li44NjM0ZjJjMjZkMjllY2ZhMTA1NTRlNDE4MzNkZDhiODZkMmI3OGEz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTMsNiArMyw3IEBAIFBBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMga2V5
IGNyZWRlbnRpYWwgcGFyCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVk
IGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCAK
IFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNl
bnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IHByaXZhdGUga2V5cyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhv
dXQgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBkZWxldGluZyBvbGQgY3JlZGVudGlhbCBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5o
dHRwcy5odG1sCmluZGV4IDI0YzVjZDhiN2JjNDA3NjJkN2MxMzRjZTkwOWVkZjVkZWEzMDkyNDgu
LjBmNjlkMGI5MTVhNzgyMmVlYWVlNGZmNWFmY2EyODM4YWRjNWU5M2QgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1s
CkBAIC0xMTgsNiArMTE4LDI2IEBACiAgICAgICAgICAgICB9OwogICAgICAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjog
dHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIik7CisgICAgICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IHByaXZhdGUga2V5
cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAgICAgICBwcm9taXNlX3Rl
c3QodCA9PiB7CisgICAgICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgICAg
IHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
Sm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgICAgICBkaXNw
bGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAg
ICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03
IH1dCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246
IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0
ZUtleUJhc2U2NCB9IH0pOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJV
bmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291
bGRuJ3QgYXR0ZXN0OiBUaGUgb3BlcmF0aW9uIGNvdWxkbid0IGNvbXBsZXRlLiIpOwogICAgICAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBhdHRlc3RhdGlv
biBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIApAQCAtMTQwLDcgKzE2MCw3IEBA
CiAgICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0
ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0
S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2
NCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
IlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJD
b3VsZG4ndCBhdHRlc3Q6IFRoZSBvcGVyYXRpb24gY291bGRuJ3QgY29tcGxldGUuIikudGhlbigo
KSA9PiB7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBjcmVh
dGUgcHJpdmF0ZSBrZXkuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgICAgICBhc3NlcnRfZmFsc2UodGVzdFJ1bm5l
ci5rZXlFeGlzdHNJbktleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KSk7CiAgICAg
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggMDg4ZTg2MzE4ZDFiZThhMDQ0NTdkNDExOGIz
ZDFhZjg4M2RjMDJjNy4uZjUzNzJiZWMzMjE5MzMyOTIwMWNmZTdmMGVmODk0MWI5MDhhZjQzYSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxv
Y2FsLmh0dHBzLmh0bWwKQEAgLTQxLDcgKzQxLDcgQEAKICAgICAgICAgICAgIGlmIChpc05vbmVB
dHRlc3RhdGlvbikKICAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2Jq
ZWN0LmZtdCwgIm5vbmUiKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIkFwcGxlIik7CisgICAgICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJhcHBsZSIpOwogICAgICAg
ICAgICAgLy8gQ2hlY2sgYXV0aERhdGEKICAgICAgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVj
b2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOwogICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1
ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMi
KTsKQEAgLTU4LDIzICs1OCw2IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRl
c3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Yy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWNbMF0sIEJhc2U2
NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCkpOwogICAgICAgICAg
ICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWNb
MV0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJh
c2U2NCkpOwotCi0gICAgICAgICAgICAgICAgLy8gQ2hlY2sgc2lnbmF0dXJlCi0gICAgICAgICAg
ICAgICAgbGV0IHB1YmxpY0tleURhdGEgPSBuZXcgVWludDhBcnJheSg2NSk7Ci0gICAgICAgICAg
ICAgICAgcHVibGljS2V5RGF0YVswXSA9IDB4MDQ7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5
RGF0YS5zZXQoYXV0aERhdGEucHVibGljS2V5WyctMiddLCAxKTsKLSAgICAgICAgICAgICAgICBw
dWJsaWNLZXlEYXRhLnNldChhdXRoRGF0YS5wdWJsaWNLZXlbJy0zJ10sIDMzKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIHB1YmxpY0tleURh
dGEsIHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogIkVDRFNBIiwKLSAgICAgICAgICAgICAg
ICAgICAgbmFtZWRDdXJ2ZTogIlAtMjU2IgotICAgICAgICAgICAgICAgIH0sIGZhbHNlLCBbJ3Zl
cmlmeSddKS50aGVuKHB1YmxpY0tleSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBj
cnlwdG8uc3VidGxlLnZlcmlmeSh7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiRUNE
U0EiLAotICAgICAgICAgICAgICAgICAgICAgICAgaGFzaDogIlNIQS0yNTYiCi0gICAgICAgICAg
ICAgICAgICAgIH0sIHB1YmxpY0tleSwgZXh0cmFjdFJhd1NpZ25hdHVyZShhdHRlc3RhdGlvbk9i
amVjdC5hdHRTdG10LnNpZyksIGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhEYXRhKS50aGVuKHZlcmlm
aWVkID0+IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHZlcmlmaWVkKTsK
LSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAo=
</data>
<flag name="review"
          id="406813"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391321</attachid>
            <date>2020-02-20 13:00:06 -0800</date>
            <delta_ts>2020-02-20 14:06:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207985-20200220130005.patch</filename>
            <type>text/plain</type>
            <size>55682</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRiODY1MTRkNjhmZWQ3MWEzNTA3MzAx
NTVkMTY5YTIxNzZjMGZiMmUuLjQwOWE2ZmRjNWZkZjhlMzE2M2NlYzlhYjVkZDM0YzEzMzMxODEw
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDItMTkgIEppZXdlbiBUYW4gIDxqaWV3ZW5f
dGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFJlcGxhY2UgRGV2aWNlSWRlbnRp
dHkuZnJhbWV3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDc5ODUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5MzY5MjIzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZl
Lmg6CisKIDIwMjAtMDItMTggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGFuIG9zX2xvZyBQcmludFN0cmVhbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5NjM5OWFm
YTJkNDVlOTA4YWUwNmEwMTM4ODY0Zjc5ZDkzZjYxMzE0Li45MDgyNjg4YTVhMTg0Yzg2ZThmOWI2
ZWI4MDdmMDIzNjk0ZDc4OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTAyLTE5
ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhu
XSBSZXBsYWNlIERldmljZUlkZW50aXR5LmZyYW1ld29yaworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81OTM2OTIyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIERldmljZUlkZW50aXR5LmZyYW1ld29yayB3aXRo
IGEgbmV3IGZyYW1ld29yayB0aGF0IGJldHRlciBzdWl0cyBvdXIgbmVlZHMuCisgICAgICAgIFRo
ZSBuZXcgZXhwZXJpbWVudGFsIGF1dGhlbnRpY2F0aW9uIGxvZ2ljIGlzIGhhbmRsZWQgYnkgV2Vi
S3RBZGRpdGlvbnMuIFBsZWFzZSByZWZlciB0byB0aGUgcmFkYXIKKyAgICAgICAgZm9yIGRldGFp
bGVkIGluZm9ybWF0aW9uLgorCisgICAgICAgIEJlc2lkZXMgdGhlIHJlcGxhY2VtZW50LCB0aGlz
IHBhdGNoIGFsc286CisgICAgICAgIDEpIGNoYW5nZXMgaG93IHVzZXIgY29uc2VudCBpcyBvYnRh
aW5lZCB0byBhdm9pZCBtdWx0aXBsZSBwcm9tcHRzIGZvciBiaW9tZXRyaWMgaW5wdXQuCisgICAg
ICAgIDIpIHJlbW92ZXMga2V5Y2hhaW4gd29ya2Fyb3VuZHMgZm9yIERldmljZUlkZW50aXR5IGdp
dmVuIHRoZSBjcmVkZW50aWFsIHByaXZhdGUga2V5IGlzIG5vdyB1bmRlciBvdXIgcG9zc2Vzc2lv
bi4KKyAgICAgICAgMykgcmVtb3ZlcyBldmVyeXRoaW5nIHRoYXQgaXMgcmVsYXRlZCB0byBEZXZp
Y2VJZGVudGl0eS4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyB0ZXN0cyB3aXRoaW4gZXhpc3Rp
bmcgdGVzdCBmaWxlcy4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL1dlYktpdC54Y2NvbmZp
ZzoKKyAgICAgICAgKiBQbGF0Zm9ybS9zcGkvQ29jb2EvRGV2aWNlSWRlbnRpdHlTUEkuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0Nv
Y29hL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9ySW50ZXJuYWw6OnRvTlNEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50
aWNhdG9yOjptYWtlQ3JlZGVudGlhbCk6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGlj
YXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZCk6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
QXR0ZXN0ZWQpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2Vy
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVHZXRB
c3NlcnRpb25BZnRlclVzZXJDb25zZW50ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2Vi
S2l0OjpMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5IGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6TG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbiBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2Vydmlj
ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTZXJ2aWNlOjppc0F2YWlsYWJsZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2Nh
bENvbm5lY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmNy
ZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja0xv
Y2FsQ29ubmVjdGlvbjo6Z2V0QXR0ZXN0YXRpb24gY29uc3QpOgorICAgICAgICAqIFdlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTAyLTE5ICBCcmlhbiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBBdXRvbWF0aW9uOiBBdXRvbWF0aW9uLnNldFdp
bmRvd0ZyYW1lT2ZCcm93c2luZ0NvbnRleHQgc2hvdWxkIGFjY2VwdCBuZWdhdGl2ZSB4IGFuZCB5
LW9yaWdpbiB2YWx1ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtSGF2ZS5o
IGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKaW5kZXggMmMxODcxYmUyOTRlZDNmODkw
Y2QyN2ZkOGYyN2MxMzY1YmRkMDhlYy4uZGQ4YThhMWI4MjYwMjZhZGQ2ZWIzMWNhNjA5MDg4YzNj
ZTRhODFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm1IYXZlLmgKQEAgLTU1NywxMCArNTU3LDYgQEAKICNkZWZp
bmUgSEFWRV9ERVNJR05fU1lTVEVNX1VJX0ZPTlRTIDEKICNlbmRpZgogCi0jaWYgKFBMQVRGT1JN
KE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE0MDApIHx8IChQ
TEFURk9STShJT1MpICYmICFQTEFURk9STShJT1NfU0lNVUxBVE9SKSkKLSNkZWZpbmUgSEFWRV9E
RVZJQ0VfSURFTlRJVFkgMQotI2VuZGlmCi0KICNpZiAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTYwMCkgfHwgKFBMQVRGT1JNKElPU19GQU1J
TFkpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkKICNkZWZp
bmUgSEFWRV9DT09LSUVfQ0hBTkdFX0xJU1RFTkVSX0FQSSAxCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0LnhjY29uZmlnIGIvU291cmNlL1dl
YktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNjb25maWcKaW5kZXggNWNmZTJlODI4YmQyYjQz
MzE2MGY4NjU0MGFlN2U0ODgyNzQ5ZTMwOS4uZGIwMGQ1NjhiYzE3NTAyOGU3MDM1NGU4NWMwODM3
ZDIwYmUyYzIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJL
aXQueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9XZWJLaXQueGNj
b25maWcKQEAgLTYwLDkgKzYwLDYgQEAgV0tfQ09SRV9QUkVESUNUSU9OX0xERkxBR1NfWUVTID0g
JChXS19NQUNPU19XRUFLX0ZSQU1FV09SSykgQ29yZVByZWRpY3Rpb247CiBXS19DT1JFX1NFUlZJ
Q0VTX0xERkxBR1MgPSAkKFdLX0NPUkVfU0VSVklDRVNfTERGTEFHU18kKFdLX1BMQVRGT1JNX05B
TUUpKTsKIFdLX0NPUkVfU0VSVklDRVNfTERGTEFHU19tYWNvc3ggPSAtZnJhbWV3b3JrIENvcmVT
ZXJ2aWNlczsKIAotV0tfREVWSUNFX0lERU5USVRZX0xERkxBR1MgPSAkKFdLX0RFVklDRV9JREVO
VElUWV9MREZMQUdTXyQoV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFkpKTsKLVdLX0RFVklDRV9JREVO
VElUWV9MREZMQUdTX1lFUyA9IC1mcmFtZXdvcmsgRGV2aWNlSWRlbnRpdHk7Ci0KIFdLX0dSQVBI
SUNTX1NFUlZJQ0VTX0xERkxBR1MgPSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxBR1NfJChX
S19DT0NPQV9UT1VDSCkpOwogV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERGTEFHU19jb2NvYXRvdWNo
ID0gLWZyYW1ld29yayBHcmFwaGljc1NlcnZpY2VzOwogCkBAIC0xMjMsNyArMTIwLDcgQEAgV0tf
QVVUSEtJVF9MREZMQUdTX0lPU19TSU5DRV8xMyA9IC1mcmFtZXdvcmsgQXV0aEtpdDsKIFdLX0FV
VEhLSVRfTERGTEFHU19tYWNvc3ggPSAkKFdLX0FVVEhLSVRfTERGTEFHUyQoV0tfTUFDT1NfMTAx
NSkpOwogV0tfQVVUSEtJVF9MREZMQUdTX01BQ09TX1NJTkNFXzEwMTUgPSAtZnJhbWV3b3JrIEF1
dGhLaXQ7CiAKLUZSQU1FV09SS19BTkRfTElCUkFSWV9MREZMQUdTID0gLWxvYmpjIC1mcmFtZXdv
cmsgQ0ZOZXR3b3JrIC1mcmFtZXdvcmsgQ29yZUF1ZGlvIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRp
b24gLWZyYW1ld29yayBDb3JlR3JhcGhpY3MgLWZyYW1ld29yayBDb3JlVGV4dCAtZnJhbWV3b3Jr
IEZvdW5kYXRpb24gLWZyYW1ld29yayBJbWFnZUlPIC1mcmFtZXdvcmsgSU9LaXQgLWZyYW1ld29y
ayBJT1N1cmZhY2UgLWZyYW1ld29yayBXZWJLaXRMZWdhY3kgLWxuZXR3b3JrICQoV0tfQUNDRVNT
SUJJTElUWV9MREZMQUdTKSAkKFdLX0FQUEtJVF9MREZMQUdTKSAkKFdLX0FTU0VSVElPTl9TRVJW
SUNFU19MREZMQUdTKSAkKFdLX0FVVEhLSVRfTERGTEFHUykgJChXS19DQVJCT05fTERGTEFHUykg
JChXS19DT1JFX1BSRURJQ1RJT05fTERGTEFHUykgJChXS19DT1JFX1NFUlZJQ0VTX0xERkxBR1Mp
ICQoV0tfREVWSUNFX0lERU5USVRZX0xERkxBR1MpICQoV0tfR1JBUEhJQ1NfU0VSVklDRVNfTERG
TEFHUykgJChXS19MSUJTQU5EQk9YX0xERkxBR1MpICQoV0tfTElCV0VCUlRDX0xERkxBR1MpICQo
V0tfTU9CSUxFX0NPUkVfU0VSVklDRVNfTERGTEFHUykgJChXS19NT0JJTEVfR0VTVEFMVF9MREZM
QUdTKSAkKFdLX09QRU5HTF9MREZMQUdTKSAkKFdLX1BERktJVF9MREZMQUdTKSAkKFdLX1NBRkVf
QlJPV1NJTkdfTERGTEFHUykgJChXS19TRUNVUklUWV9JTlRFUkZBQ0VfTERGTEFHUykgJChXS19V
SUtJVF9MREZMQUdTKSAkKFdLX1VSTF9GT1JNQVRUSU5HX0xERkxBR1MpICQoV0tfV0VCSU5TUEVD
VE9SVUlfTERGTEFHUyk7CitGUkFNRVdPUktfQU5EX0xJQlJBUllfTERGTEFHUyA9IC1sb2JqYyAt
ZnJhbWV3b3JrIENGTmV0d29yayAtZnJhbWV3b3JrIENvcmVBdWRpbyAtZnJhbWV3b3JrIENvcmVG
b3VuZGF0aW9uIC1mcmFtZXdvcmsgQ29yZUdyYXBoaWNzIC1mcmFtZXdvcmsgQ29yZVRleHQgLWZy
YW1ld29yayBGb3VuZGF0aW9uIC1mcmFtZXdvcmsgSW1hZ2VJTyAtZnJhbWV3b3JrIElPS2l0IC1m
cmFtZXdvcmsgSU9TdXJmYWNlIC1mcmFtZXdvcmsgV2ViS2l0TGVnYWN5IC1sbmV0d29yayAkKFdL
X0FDQ0VTU0lCSUxJVFlfTERGTEFHUykgJChXS19BUFBLSVRfTERGTEFHUykgJChXS19BU1NFUlRJ
T05fU0VSVklDRVNfTERGTEFHUykgJChXS19BVVRIS0lUX0xERkxBR1MpICQoV0tfQ0FSQk9OX0xE
RkxBR1MpICQoV0tfQ09SRV9QUkVESUNUSU9OX0xERkxBR1MpICQoV0tfQ09SRV9TRVJWSUNFU19M
REZMQUdTKSAkKFdLX0dSQVBISUNTX1NFUlZJQ0VTX0xERkxBR1MpICQoV0tfTElCU0FOREJPWF9M
REZMQUdTKSAkKFdLX0xJQldFQlJUQ19MREZMQUdTKSAkKFdLX01PQklMRV9DT1JFX1NFUlZJQ0VT
X0xERkxBR1MpICQoV0tfTU9CSUxFX0dFU1RBTFRfTERGTEFHUykgJChXS19PUEVOR0xfTERGTEFH
UykgJChXS19QREZLSVRfTERGTEFHUykgJChXS19TQUZFX0JST1dTSU5HX0xERkxBR1MpICQoV0tf
U0VDVVJJVFlfSU5URVJGQUNFX0xERkxBR1MpICQoV0tfVUlLSVRfTERGTEFHUykgJChXS19VUkxf
Rk9STUFUVElOR19MREZMQUdTKSAkKFdLX1dFQklOU1BFQ1RPUlVJX0xERkxBR1MpOwogCiAvLyBQ
cmV2ZW50IEMrKyBzdGFuZGFyZCBsaWJyYXJ5IGJhc2ljX3N0cmluZ3N0cmVhbSwgb3BlcmF0b3Ig
bmV3LCBkZWxldGUgYW5kIHRoZWlyIHJlbGF0ZWQgZXhjZXB0aW9uIHR5cGVzIGZyb20gYmVpbmcg
ZXhwb3J0ZWQgYXMgd2VhayBzeW1ib2xzLgogVU5FWFBPUlRFRF9TWU1CT0xfTERGTEFHUyA9IC1X
bCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRJU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRl
ZF9zeW1ib2wgLVdsLF9fWlRJU3Q5ZXhjZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVds
LF9fWlRTU3Q5YmFkX2FsbG9jIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRTU3Q5ZXhj
ZXB0aW9uIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWmRsUHZTXyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pud21QdiAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pud20g
LVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29y
ZTEyUG9saWN5QWN0aW9uRUVFQzJFT1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pO
U3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVPUzRfIC1XbCwt
dW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBv
bGljeUFjdGlvbkVFRWFTRURuIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWk5LU3QzX18x
OGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVjbEVTMl8gLVdsLC11bmV4cG9y
dGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2ViQ29yZTEyUG9saWN5QWN0
aW9uRUVFNHN3YXBFUlM0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1
bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVDMUVSS1M0XyAtV2wsLXVuZXhwb3J0
ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rp
b25FRUVDMkVSS1M0XyAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pOU3QzX18xOGZ1bmN0
aW9uSUZ2TjdXZWJDb3JlMTJQb2xpY3lBY3Rpb25FRUVEMUV2IC1XbCwtdW5leHBvcnRlZF9zeW1i
b2wgLVdsLF9fWk5TdDNfXzE4ZnVuY3Rpb25JRnZON1dlYkNvcmUxMlBvbGljeUFjdGlvbkVFRUQy
RXYgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2wsX19aTlN0M19fMThmdW5jdGlvbklGdk43V2Vi
Q29yZTEyUG9saWN5QWN0aW9uRUVFYVNFUktTNF8gLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAtV2ws
X19aVFZOU3QzX18xMTdiYWRfZnVuY3Rpb25fY2FsbEUgLVdsLC11bmV4cG9ydGVkX3N5bWJvbCAt
V2wsX19aVENOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VF
TlNfOWFsbG9jYXRvckljRUVFRTBfTlNfMTNiYXNpY19pc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhw
b3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFj
aGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMF9OU18xNGJhc2ljX2lvc3RyZWFtSWNT
Ml9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmlu
Z3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9ySWNFRUVFMTZfTlNfMTNi
YXNpY19vc3RyZWFtSWNTMl9FRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9sIC1XbCxfX1pUVE5TdDNf
XzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0ljRUVOU185YWxsb2NhdG9y
SWNFRUVFIC1XbCwtdW5leHBvcnRlZF9zeW1ib2wgLVdsLF9fWlRWTlN0M19fMTE1YmFzaWNfc3Ry
aW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUgLVdsLC11bmV4
cG9ydGVkX3N5bWJvbCAtV2wsX19aVFZOU3QzX18xMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzEx
Y2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRSAtV2wsLXVuZXhwb3J0ZWRfc3ltYm9s
IC1XbCxfX1pUQ05TdDNfXzExOGJhc2ljX3N0cmluZ3N0cmVhbUljTlNfMTFjaGFyX3RyYWl0c0lj
RUVOU185YWxsb2NhdG9ySWNFRUVFOF9OU18xM2Jhc2ljX29zdHJlYW1JY1MyX0VFOwpAQCAtMTYx
LDExICsxNTgsNiBAQCBXS19GUkFNRVdPUktfSEVBREVSX1BPU1RQUk9DRVNTSU5HX0RJU0FCTEVE
X0lPU19CRUZPUkVfMTMwMCA9IFlFUzsKIFdLX1JFTE9DQVRBQkxFX0ZSQU1FV09SS19MREZMQUdT
ID0gJChXS19SRUxPQ0FUQUJMRV9GUkFNRVdPUktfTERGTEFHU18kKFdLX1JFTE9DQVRBQkxFX0ZS
QU1FV09SS1MpXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfUkVMT0NBVEFCTEVfRlJBTUVXT1JL
X0xERkxBR1NfWUVTX21hY29zeCA9IC1XbCwtbm90X2Zvcl9keWxkX3NoYXJlZF9jYWNoZTsKIAot
V0tfSEFWRV9ERVZJQ0VfSURFTlRJVFkgPSAkKFdLX0hBVkVfREVWSUNFX0lERU5USVRZXyQoV0tf
UExBVEZPUk1fTkFNRSkpOwotV0tfSEFWRV9ERVZJQ0VfSURFTlRJVFlfaXBob25lb3MgPSBZRVM7
Ci1XS19IQVZFX0RFVklDRV9JREVOVElUWV9tYWNvc3ggPSAkKFdLX0hBVkVfREVWSUNFX0lERU5U
SVRZJChXS19NQUNPU18xMDE0KSk7Ci1XS19IQVZFX0RFVklDRV9JREVOVElUWV9NQUNPU19TSU5D
RV8xMDE0ID0gWUVTOwotCiBXS19IQVZFX1VSTF9GT1JNQVRUSU5HID0gJChXS19IQVZFX1VSTF9G
T1JNQVRUSU5HXyQoV0tfUExBVEZPUk1fTkFNRSkpOwogV0tfSEFWRV9VUkxfRk9STUFUVElOR19p
cGhvbmVvcyA9ICQoV0tfSEFWRV9VUkxfRk9STUFUVElORyQoV0tfSU9TXzEyKSk7CiBXS19IQVZF
X1VSTF9GT1JNQVRUSU5HX21hY2NhdGFseXN0ID0gJChXS19IQVZFX1VSTF9GT1JNQVRUSU5HJChX
S19JT1NfMTIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29h
L0RldmljZUlkZW50aXR5U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9Db2NvYS9E
ZXZpY2VJZGVudGl0eVNQSS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDc3ZTQw
OTcyMWJlYTM2NzgxMTE0NWNjY2FiZmI2MDZkNTM5OGIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL0NvY29h
L0RldmljZUlkZW50aXR5U1BJLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoV0VCX0FVVEhOKQotCi0jaWYgSEFW
RShERVZJQ0VfSURFTlRJVFkpCi0KLSNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotCi1leHRl
cm4gIkMiIHsKLSNpbXBvcnQgPERldmljZUlkZW50aXR5L0RldmljZUlkZW50aXR5Lmg+Ci19Ci0K
LSNlbHNlCi0KLXR5cGVkZWYgdm9pZCAoXk1BQkFBQ29tcGxldGlvbkJsb2NrKShfTnVsbGFibGUg
U2VjS2V5UmVmIHJlZmVyZW5jZUtleSwgTlNBcnJheSAqIF9OdWxsYWJsZSBjZXJ0aWZpY2F0ZXMs
IE5TRXJyb3IgKiBfTnVsbGFibGUgZXJyb3IpOwotCi1leHRlcm4gTlNTdHJpbmcgKiBfTm9ubnVs
bCBjb25zdCBrTUFPcHRpb25zQkFBQWNjZXNzQ29udHJvbHM7Ci1leHRlcm4gTlNTdHJpbmcgKiBf
Tm9ubnVsbCBjb25zdCBrTUFPcHRpb25zQkFBSWdub3JlRXhpc3RpbmdLZXljaGFpbkl0ZW1zOwot
ZXh0ZXJuIE5TU3RyaW5nICogX05vbm51bGwgY29uc3Qga01BT3B0aW9uc0JBQUtleWNoYWluQWNj
ZXNzR3JvdXA7Ci1leHRlcm4gTlNTdHJpbmcgKiBfTm9ubnVsbCBjb25zdCBrTUFPcHRpb25zQkFB
S2V5Y2hhaW5MYWJlbDsKLWV4dGVybiBOU1N0cmluZyAqIF9Ob25udWxsIGNvbnN0IGtNQU9wdGlv
bnNCQUFOb25jZTsKLWV4dGVybiBOU1N0cmluZyAqIF9Ob25udWxsIGNvbnN0IGtNQU9wdGlvbnNC
QUFPSUROb25jZTsKLWV4dGVybiBOU1N0cmluZyAqIF9Ob25udWxsIGNvbnN0IGtNQU9wdGlvbnNC
QUFPSURTVG9JbmNsdWRlOwotZXh0ZXJuIE5TU3RyaW5nICogX05vbm51bGwgY29uc3Qga01BT3B0
aW9uc0JBQVNDUlRBdHRlc3RhdGlvbjsKLWV4dGVybiBOU1N0cmluZyAqIF9Ob25udWxsIGNvbnN0
IGtNQU9wdGlvbnNCQUFWYWxpZGl0eTsKLQotZXh0ZXJuICJDIgotdm9pZCBEZXZpY2VJZGVudGl0
eUlzc3VlQ2xpZW50Q2VydGlmaWNhdGVXaXRoQ29tcGxldGlvbihkaXNwYXRjaF9xdWV1ZV90IF9O
dWxsYWJsZSwgTlNEaWN0aW9uYXJ5ICogX051bGxhYmxlIG9wdGlvbnMsIE1BQkFBQ29tcGxldGlv
bkJsb2NrIF9Ob25udWxsKTsKLQotI2VuZGlmIC8vIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0K
LSNlbmRpZiAvLyBIQVZFKERFVklDRV9JREVOVElUWSkKLQotI2VuZGlmIC8vIEVOQUJMRShXRUJf
QVVUSE4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNh
dGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCmluZGV4IDk0Njgz
MzU1NWRiYThiMDVmNmY4MjI1N2RmZGEyMzc4ZjA0YTVkOTguLmRlZDk4ZjJkNzZhYzRkZTk1MWE1
ODk0MGIzNmQyYjZlNzRhZjQ0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGlj
YXRvci5oCkBAIC01Niw4ICs1Niw4IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTG9jYWxBdXRo
ZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+JiYpOwogCiAgICAgdm9pZCBtYWtl
Q3JlZGVudGlhbCgpIGZpbmFsOwotICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVy
VXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50KTsKLSAgICB2b2lkIGNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJlZiwgTlNBcnJheSAqY2Vy
dGlmaWNhdGVzLCBOU0Vycm9yICopOworICAgIHZvaWQgY29udGludWVNYWtlQ3JlZGVudGlhbEFm
dGVyVXNlckNvbnNlbnRlZChTZWNBY2Nlc3NDb250cm9sUmVmLCBMb2NhbENvbm5lY3Rpb246OlVz
ZXJDb25zZW50LCBMQUNvbnRleHQgKik7CisgICAgdm9pZCBjb250aW51ZU1ha2VDcmVkZW50aWFs
QWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYsIFZlY3Rvcjx1aW50OF90PiYmIGNyZWRlbnRpYWxJZCwg
VmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEsIE5TQXJyYXkgKmNlcnRpZmljYXRlcywgTlNFcnJv
ciAqKTsKIAogICAgIHZvaWQgZ2V0QXNzZXJ0aW9uKCkgZmluYWw7CiAgICAgdm9pZCBjb250aW51
ZUdldEFzc2VydGlvbkFmdGVyVXNlckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25z
ZW50LCBMQUNvbnRleHQgKiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjcmVkZW50aWFsSWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgdXNlcmhhbmRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW0KaW5kZXggODVlMGFmYjE5MTIyNGY4OTg4ZGE0NTBkMDVjNmVmOTlj
Y2NjYjhhNy4uMjVkZDFjNmFlOTY4MWYwZWY3OGNkYjFmM2Q0YzQxYmE0ZTRiYjVkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtODAsNiArODAsMTIgQEAg
c3RhdGljIGlubGluZSBWZWN0b3I8dWludDhfdD4gdG9WZWN0b3IoTlNEYXRhICpkYXRhKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmV0YWluUHRyPE5TRGF0YT4gdG9O
U0RhdGEoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIC8vIEZJWE1FKDE4MzUz
NCk6IENvbnNpZGVyIHVzaW5nIGluaXRXaXRoQnl0ZXNOb0NvcHkuCisgICAgcmV0dXJuIGFkb3B0
TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6ZGF0YS5kYXRhKCkgbGVuZ3RoOmRhdGEu
c2l6ZSgpXSk7Cit9CisKIH0gLy8gTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWwKIAogTG9jYWxB
dXRoZW50aWNhdG9yOjpMb2NhbEF1dGhlbnRpY2F0b3IoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uKQpAQCAtOTksMTQgKzEwNSw5IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgLy8gU2tpcCBTdGVwIDkgYXMgZXh0ZW5zaW9ucyBh
cmUgbm90IHN1cHBvcnRlZCB5ZXQuCiAgICAgLy8gU3RlcCA4IGlzIGltcGxpY2l0bHkgY2FwdHVy
ZWQgYnkgYWxsIFVua25vd25FcnJvciBleGNlcHRpb24gcmVjZWl2ZVJlc3BvbmRzLgogICAgIC8v
IFN0ZXAgMi4KLSAgICBib29sIGNhbkZ1bGxmaWxsUHViS2V5Q3JlZFBhcmFtcyA9IGZhbHNlOwot
ICAgIGZvciAoYXV0byYgcHViS2V5Q3JlZFBhcmFtIDogY3JlYXRpb25PcHRpb25zLnB1YktleUNy
ZWRQYXJhbXMpIHsKLSAgICAgICAgaWYgKHB1YktleUNyZWRQYXJhbS50eXBlID09IFB1YmxpY0tl
eUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXkgJiYgcHViS2V5Q3JlZFBhcmFtLmFsZyA9PSBDT1NF
OjpFUzI1NikgewotICAgICAgICAgICAgY2FuRnVsbGZpbGxQdWJLZXlDcmVkUGFyYW1zID0gdHJ1
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICghY2FuRnVs
bGZpbGxQdWJLZXlDcmVkUGFyYW1zKSB7CisgICAgaWYgKG5vdEZvdW5kID09IGNyZWF0aW9uT3B0
aW9ucy5wdWJLZXlDcmVkUGFyYW1zLmZpbmRNYXRjaGluZyhbXSAoYXV0byYgcHViS2V5Q3JlZFBh
cmFtKSB7CisgICAgICAgIHJldHVybiBwdWJLZXlDcmVkUGFyYW0udHlwZSA9PSBQdWJsaWNLZXlD
cmVkZW50aWFsVHlwZTo6UHVibGljS2V5ICYmIHB1YktleUNyZWRQYXJhbS5hbGcgPT0gQ09TRTo6
RVMyNTY7CisgICAgfSkpIHsKICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7
IE5vdFN1cHBvcnRlZEVycm9yLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3Ig
ZG9lc24ndCBzdXBwb3J0IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVy
cy4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMzYsNiArMTM3LDcgQEAgdm9p
ZCBMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAgICAgfQogICAgICAg
ICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVm
KTsKIAorICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IE5lZWQgdG8g
b2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiByZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29y
ZGluZyB0byB0aGUgcmVzdWx0LgogICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqbnNBdHRyaWJ1
dGVzIGluIChOU0FycmF5ICopYXR0cmlidXRlc0FycmF5UmVmKSB7CiAgICAgICAgICAgICBOU0Rh
dGEgKm5zQ3JlZGVudGlhbElkID0gbnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9u
TGFiZWxdOwogICAgICAgICAgICAgaWYgKGV4Y2x1ZGVDcmVkZW50aWFsSWRzLmNvbnRhaW5zKFN0
cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuc0NyZWRlbnRpYWxJZC5ieXRlcyks
IG5zQ3JlZGVudGlhbElkLmxlbmd0aCkpKSB7CkBAIC0xNDgsMjAgKzE1MCwzNiBAQCB2b2lkIExv
Y2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwoKQogICAgIC8vIFN0ZXAgNi4KICAgICAv
LyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zNTkwMDU5Myk6IFVwZGF0ZSB0byBhIGZvcm1hbCBVSS4K
ICAgICAvLyBHZXQgdXNlciBjb25zZW50LgotICAgIGF1dG8gY2FsbGJhY2sgPSBbd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyldKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2Vu
dCkgeworICAgIFJldGFpblB0cjxTZWNBY2Nlc3NDb250cm9sUmVmPiBhY2Nlc3NDb250cm9sOwor
ICAgIHsKKyAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgICAgIGFj
Y2Vzc0NvbnRyb2wgPSBhZG9wdENGKFNlY0FjY2Vzc0NvbnRyb2xDcmVhdGVXaXRoRmxhZ3MoTlVM
TCwga1NlY0F0dHJBY2Nlc3NpYmxlV2hlblBhc3Njb2RlU2V0VGhpc0RldmljZU9ubHksIGtTZWNB
Y2Nlc3NDb250cm9sUHJpdmF0ZUtleVVzYWdlIHwga1NlY0FjY2Vzc0NvbnRyb2xVc2VyUHJlc2Vu
Y2UsICZlcnJvclJlZikpOworICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJv
clJlZik7CisgICAgICAgIGlmIChlcnJvclJlZikgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJD
b3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICVAIiwgKE5TRXJyb3IgKillcnJvclJlZik7
CisgICAgICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9y
LCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBjcmVhdGUgYWNjZXNzIGNvbnRyb2w6ICIsIFN0cmluZygo
KE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgU2VjQWNjZXNzQ29udHJvbFJlZiBh
Y2Nlc3NDb250cm9sUmVmID0gYWNjZXNzQ29udHJvbC5nZXQoKTsKKyAgICBhdXRvIGNhbGxiYWNr
ID0gW2FjY2Vzc0NvbnRyb2wgPSBXVEZNb3ZlKGFjY2Vzc0NvbnRyb2wpLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0gKExvY2FsQ29ubmVjdGlvbjo6VXNlckNvbnNlbnQgY29uc2VudCwg
TEFDb250ZXh0ICpjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
d2Vha1RoaXMtPmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoY29uc2Vu
dCk7CisgICAgICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyQ29u
c2VudGVkKGFjY2Vzc0NvbnRyb2wuZ2V0KCksIGNvbnNlbnQsIGNvbnRleHQpOwogICAgIH07CiAg
ICAgbV9jb25uZWN0aW9uLT5nZXRVc2VyQ29uc2VudCgKLSAgICAgICAgImFsbG93ICIgKyBjcmVh
dGlvbk9wdGlvbnMucnAuaWQgKyAiIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBm
b3IgIiArIGNyZWF0aW9uT3B0aW9ucy51c2VyLm5hbWUsCisgICAgICAgIG1ha2VTdHJpbmcoImFs
bG93ICJfcywgY3JlYXRpb25PcHRpb25zLnJwLmlkLCAiIHRvIGNyZWF0ZSBhIHB1YmxpYyBrZXkg
Y3JlZGVudGlhbCBmb3IgIl9zLCBjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lKSwKKyAgICAgICAg
YWNjZXNzQ29udHJvbFJlZiwKICAgICAgICAgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCi12b2lk
IExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNl
bnRlZChMb2NhbENvbm5lY3Rpb246OlVzZXJDb25zZW50IGNvbnNlbnQpCit2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlckNvbnNlbnRlZChTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2xSZWYsIExvY2FsQ29ubmVjdGlvbjo6VXNlckNv
bnNlbnQgY29uc2VudCwgTEFDb250ZXh0ICpjb250ZXh0KQogeworICAgIHVzaW5nIG5hbWVzcGFj
ZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKKwogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpSZXF1ZXN0UmVjZWl2ZWQpOwogICAgIG1fc3RhdGUgPSBTdGF0ZTo6VXNlckNvbnNlbnRl
ZDsKICAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOwpAQCAtMTcxLDEzICsx
ODksMjIgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxB
ZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAorICAgIC8vIEZJWE1FKDE4MzUzMyk6IEEgc2luZ2xlIGtTZWNDbGFzc0tleSBpdGVtIGNvdWxk
bid0IHN0b3JlIGFsbCBtZXRhIGRhdGEuIFRoZSBmb2xsb3dpbmcgc2NoZW1hIGlzIGEgdGVudGF0
aXZlIHNvbHV0aW9uCisgICAgLy8gdG8gYWNjb21tb2RhdGUgdGhlIG1vc3QgaW1wb3J0YW50IG1l
dGEgZGF0YSwgaS5lLiBSUCBJRCwgQ3JlZGVudGlhbCBJRCwgYW5kIHVzZXJoYW5kbGUuCisgICAg
Ly8ga1NlY0F0dHJMYWJlbDogUlAgSUQKKyAgICAvLyBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6
IENyZWRlbnRpYWwgSUQgKGF1dG8tZ2VuIGJ5IEtleWNoYWluKQorICAgIC8vIGtTZWNBdHRyQXBw
bGljYXRpb25UYWc6IHVzZXJoYW5kbGUKKyAgICAvLyBOb3RlZCwgdGhlIHZhbGUgb2Yga1NlY0F0
dHJBcHBsaWNhdGlvbkxhYmVsIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBLZXlj
aGFpbiwgd2hpY2ggaXMgYSBTSEEtMSBoYXNoIG9mCisgICAgLy8gdGhlIHB1YmxpYyBrZXkuIFdl
IGJvcnJvdyBpdCBkaXJlY3RseSBmb3Igbm93IHRvIHdvcmthcm91bmQgdGhlIHN0YXRlZCBsaW1p
dGF0aW9ucy4KKyAgICBjb25zdCBhdXRvJiBzZWNBdHRyTGFiZWwgPSBjcmVhdGlvbk9wdGlvbnMu
cnAuaWQ7CisgICAgYXV0byBzZWNBdHRyQXBwbGljYXRpb25UYWcgPSB0b05TRGF0YShjcmVhdGlv
bk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CisKICAgICAvLyBTdGVwIDcuNS4KLSAgICAvLyBVc2Vy
aGFuZGxlIGlzIHN0b3JlZCBpbiBrU2VjQXR0ckFwcGxpY2F0aW9uVGFnIGF0dHJpYnV0ZS4KICAg
ICAvLyBGYWlsdXJlcyBhZnRlciB0aGlzIHBvaW50IGNvdWxkIGJsb2NrIHVzZXJzJyBhY2NvdW50
cyBmb3JldmVyLiBTaG91bGQgd2UgZm9sbG93IHRoZSBzcGVjPwogICAgIE5TRGljdGlvbmFyeSog
ZGVsZXRlUXVlcnkgPSBAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5
LAotICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogY3JlYXRpb25PcHRpb25zLnJwLmlkLAotICAg
ICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNy
ZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEoKSBsZW5ndGg6Y3JlYXRpb25PcHRpb25z
LnVzZXIuaWRWZWN0b3Iuc2l6ZSgpXSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHNlY0F0
dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHNlY0F0dHJBcHBs
aWNhdGlvblRhZy5nZXQoKSwKICNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKICAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQpAQCAt
MTkxLDUzICsyMTgsMjEgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNy
ZWRlbnRpYWxBZnRlclVzZXJDb25zZW50ZWQoTG9jYWxDb25uZWN0aW8KICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIC8vIFN0ZXAgNy4xLCAxMy4gQXBwbGUgQXR0ZXN0YXRpb24KLSAgICBh
dXRvIGNhbGxiYWNrID0gW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShTZWNLZXlSZWYg
X051bGxhYmxlIHByaXZhdGVLZXksIE5TQXJyYXkgKiBfTnVsbGFibGUgY2VydGlmaWNhdGVzLCBO
U0Vycm9yICogX051bGxhYmxlIGVycm9yKSB7Ci0gICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHdlYWtUaGlzLT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChwcml2YXRl
S2V5LCBjZXJ0aWZpY2F0ZXMsIGVycm9yKTsKLSAgICB9OwotICAgIG1fY29ubmVjdGlvbi0+Z2V0
QXR0ZXN0YXRpb24oY3JlYXRpb25PcHRpb25zLnJwLmlkLCBjcmVhdGlvbk9wdGlvbnMudXNlci5u
YW1lLCByZXF1ZXN0RGF0YSgpLmhhc2gsIFdURk1vdmUoY2FsbGJhY2spKTsKLX0KLQotdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNl
Y0tleVJlZiBwcml2YXRlS2V5LCBOU0FycmF5ICpjZXJ0aWZpY2F0ZXMsIE5TRXJyb3IgKmVycm9y
KQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKLQot
ICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpVc2VyQ29uc2VudGVkKTsKLSAgICBtX3N0YXRl
ID0gU3RhdGU6OkF0dGVzdGVkOwotICAgIGF1dG8mIGNyZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9u
cyk7Ci0KLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBhdHRl
c3Q6ICVAIiwgZXJyb3IpOwotICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
VW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBhdHRlc3Q6ICIsIFN0cmluZyhlcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0pOworICAgIC8vIFN0ZXAgNy4xLTcuNC4KKyAgICAv
LyBUaGUgYWJvdmUtdG8tY3JlYXRlIHByaXZhdGUga2V5IHdpbGwgYmUgaW5zZXJ0ZWQgaW50byBr
ZXljaGFpbiB3aGlsZSB1c2luZyBTRVAuCisgICAgYXV0byBwcml2YXRlS2V5ID0gbV9jb25uZWN0
aW9uLT5jcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShjb250ZXh0LCBhY2Nlc3NDb250cm9sUmVm
LCBzZWNBdHRyTGFiZWwsIHNlY0F0dHJBcHBsaWNhdGlvblRhZy5nZXQoKSk7CisgICAgaWYgKCFw
cml2YXRlS2V5KSB7CisgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIl9zIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIC8vIEF0dGVzdGF0aW9uIENlcnRpZmljYXRlIGFuZCBBdHRlc3Rh
dGlvbiBJc3N1aW5nIENBCi0gICAgQVNTRVJUKGNlcnRpZmljYXRlcyAmJiAoW2NlcnRpZmljYXRl
cyBjb3VudF0gPT0gMikpOwogCi0gICAgLy8gU3RlcCA3LjItNy40LgotICAgIC8vIEZJWE1FKDE4
MzUzMyk6IEEgc2luZ2xlIGtTZWNDbGFzc0tleSBpdGVtIGNvdWxkbid0IHN0b3JlIGFsbCBtZXRh
IGRhdGEuIFRoZSBmb2xsb3dpbmcgc2NoZW1hIGlzIGEgdGVudGF0aXZlIHNvbHV0aW9uCi0gICAg
Ly8gdG8gYWNjb21tb2RhdGUgdGhlIG1vc3QgaW1wb3J0YW50IG1ldGEgZGF0YSwgaS5lLiBSUCBJ
RCwgQ3JlZGVudGlhbCBJRCwgYW5kIHVzZXJoYW5kbGUuCi0gICAgLy8ga1NlY0F0dHJMYWJlbDog
UlAgSUQKLSAgICAvLyBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IENyZWRlbnRpYWwgSUQgKGF1
dG8tZ2VuIGJ5IEtleWNoYWluKQotICAgIC8vIGtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHVzZXJo
YW5kbGUKLSAgICAvLyBOb3RlZCwgdGhlIGN1cnJlbnQgRGV2aWNlSWRlbnRpdHkuRnJhbWV3b3Jr
IHdvdWxkIG9ubHkgYWxsb3cgdXMgdG8gcGFzcyB0aGUga1NlY0F0dHJMYWJlbCBhcyB0aGUgaW5p
dGFsIGF0dHJpYnV0ZQotICAgIC8vIGZvciB0aGUgS2V5Y2hhaW4gaXRlbS4gU2luY2UgdGhhdCdz
IHRoZSBvbmx5IGNsdWUgd2UgaGF2ZSB0byBsb2NhdGUgdGhlIHVuaXF1ZSBpdGVtLCB3ZSB1c2Ug
dGhlIHBhdHRlcm4gdXNlcm5hbWVAcnAuaWQKLSAgICAvLyBhcyB0aGUgaW5pdGlhbCB2YWx1ZS4K
LSAgICAvLyBBbHNvIG5vdGVkLCB0aGUgdmFsZSBvZiBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIEtleWNoYWluLCB3aGljaCBpcyBhIFNI
QS0xIGhhc2ggb2YKLSAgICAvLyB0aGUgcHVibGljIGtleS4gV2UgYm9ycm93IGl0IGRpcmVjdGx5
IGZvciBub3cgdG8gd29ya2Fyb3VuZCB0aGUgc3RhdGVkIGxpbWl0YXRpb25zLgotICAgIC8vIFVw
ZGF0ZSB0aGUgS2V5Y2hhaW4gaXRlbSB0byB0aGUgYWJvdmUgc2NoZW1hLgotICAgIC8vIEZJWE1F
KDE4MzUzMyk6IERldmljZUlkZW50aXR5LkZyYW1ld29yayB3b3VsZCBpbnNlcnQgY2VydGlmaWNh
dGVzIGludG8gS2V5Y2hhaW4gYXMgd2VsbC4gV2Ugc2hvdWxkIHVwZGF0ZSB0aG9zZSBhcyB3ZWxs
LgogICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQ7CiAgICAgewotICAgICAgICAvLyAt
cmstdWNydCBpcyBhZGRlZCBieSBEZXZpY2VJZGVudGl0eS5GcmFtZXdvcmsuCi0gICAgICAgIFN0
cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcoY3JlYXRpb25PcHRpb25zLnVzZXIubmFtZSwgIkAiLCBj
cmVhdGlvbk9wdGlvbnMucnAuaWQsICItcmstdWNydCIpOwogICAgICAgICBOU0RpY3Rpb25hcnkg
KmNyZWRlbnRpYWxJZFF1ZXJ5ID0gQHsKICAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClr
U2VjQ2xhc3NLZXksCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNB
dHRyS2V5Q2xhc3NQcml2YXRlLAotICAgICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IGxhYmVs
LAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHNlY0F0dHJMYWJlbCwKKyAgICAgICAg
ICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBzZWNBdHRyQXBwbGljYXRpb25UYWcuZ2V0
KCksCiAgICAgICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6IEBZRVMsCiAjaWYgSEFW
RShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQ
cm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKQEAgLTI1NiwyNyArMjUxLDYgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKFNlY0tleVJl
ZiBwcml2YXRlS2UKIAogICAgICAgICBOU0RpY3Rpb25hcnkgKm5zQXR0cmlidXRlcyA9IChOU0Rp
Y3Rpb25hcnkgKilhdHRyaWJ1dGVzUmVmOwogICAgICAgICBjcmVkZW50aWFsSWQgPSB0b1ZlY3Rv
cihuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0pOwotCi0gICAgICAg
IE5TRGljdGlvbmFyeSAqdXBkYXRlUXVlcnkgPSBAewotICAgICAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAo
aWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBs
aWNhdGlvbkxhYmVsOiBuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0s
Ci0jaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAgICAgICAoaWQpa1Nl
Y1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKLSNlbHNlCi0gICAgICAgICAgICAoaWQp
a1NlY0F0dHJOb0xlZ2FjeTogQFlFUwotI2VuZGlmCi0gICAgICAgIH07Ci0gICAgICAgIE5TRGlj
dGlvbmFyeSAqdXBkYXRlUGFyYW1zID0gQHsKLSAgICAgICAgICAgIChpZClrU2VjQXR0ckxhYmVs
OiBjcmVhdGlvbk9wdGlvbnMucnAuaWQsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNh
dGlvblRhZzogW05TRGF0YSBkYXRhV2l0aEJ5dGVzOmNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVj
dG9yLmRhdGEoKSBsZW5ndGg6Y3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0b3Iuc2l6ZSgpXSwK
LSAgICAgICAgfTsKLSAgICAgICAgc3RhdHVzID0gU2VjSXRlbVVwZGF0ZSgoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKXVwZGF0ZVF1ZXJ5LCAoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXVwZGF0
ZVBhcmFtcyk7Ci0gICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigi
Q291bGRuJ3QgdXBkYXRlIHRoZSBLZXljaGFpbiBpdGVtOiAlZCIsIHN0YXR1cyk7Ci0gICAgICAg
ICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJDb3VsZG4ndCB1cGRhdGUgdGhlIEtleWNoYWluIGl0ZW06ICIsIHN0YXR1cykgfSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvLyBTdGVwIDEwLgpA
QCAtMjg5LDcgKzI2Myw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChTZWNLZXlSZWYgcHJpdmF0ZUtlCiAgICAgewogICAgICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwdWJsaWNLZXlEYXRhUmVmOwogICAgICAgICB7Ci0gICAg
ICAgICAgICBhdXRvIHB1YmxpY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q29weVB1YmxpY0tleShwcml2
YXRlS2V5KSk7CisgICAgICAgICAgICBhdXRvIHB1YmxpY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q29w
eVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSk7CiAgICAgICAgICAgICBDRkVycm9yUmVmIGVy
cm9yUmVmID0gbnVsbHB0cjsKICAgICAgICAgICAgIHB1YmxpY0tleURhdGFSZWYgPSBhZG9wdENG
KFNlY0tleUNvcHlFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHB1YmxpY0tleS5nZXQoKSwgJmVycm9y
UmVmKSk7CiAgICAgICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7
CkBAIC0zMTQsMzIgKzI4OCw0NiBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZQogICAgIC8vIFN0
ZXAgMTIuCiAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEoY3JlYXRpb25PcHRpb25z
LnJwLmlkLCBtYWtlQ3JlZGVudGlhbEZsYWdzLCBjb3VudGVyLCBhdHRlc3RlZENyZWRlbnRpYWxE
YXRhKTsKIAorICAgIC8vIFN0ZXAgMTMuIEFwcGxlIEF0dGVzdGF0aW9uCisgICAgYXV0byAqcHJp
dmF0ZUtleVJlZiA9IHByaXZhdGVLZXkuZ2V0KCk7CisgICAgYXV0byBuc0F1dGhEYXRhID0gdG9O
U0RhdGEoYXV0aERhdGEpOworICAgIGF1dG8gY2FsbGJhY2sgPSBbcHJpdmF0ZUtleSA9IFdURk1v
dmUocHJpdmF0ZUtleSksIGNyZWRlbnRpYWxJZCA9IFdURk1vdmUoY3JlZGVudGlhbElkKSwgYXV0
aERhdGEgPSBXVEZNb3ZlKGF1dGhEYXRhKSwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
IChOU0FycmF5ICogX051bGxhYmxlIGNlcnRpZmljYXRlcywgTlNFcnJvciAqIF9OdWxsYWJsZSBl
cnJvcikgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdlYWtUaGlz
LT5jb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZChwcml2YXRlS2V5LmdldCgpLCBX
VEZNb3ZlKGNyZWRlbnRpYWxJZCksIFdURk1vdmUoYXV0aERhdGEpLCBjZXJ0aWZpY2F0ZXMsIGVy
cm9yKTsKKyAgICB9OworICAgIG1fY29ubmVjdGlvbi0+Z2V0QXR0ZXN0YXRpb24ocHJpdmF0ZUtl
eVJlZiwgbnNBdXRoRGF0YS5nZXQoKSwgdG9OU0RhdGEocmVxdWVzdERhdGEoKS5oYXNoKS5nZXQo
KSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCit2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVNYWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoU2VjS2V5UmVmIHByaXZhdGVLZXksIFZl
Y3Rvcjx1aW50OF90PiYmIGNyZWRlbnRpYWxJZCwgVmVjdG9yPHVpbnQ4X3Q+JiYgYXV0aERhdGEs
IE5TQXJyYXkgKmNlcnRpZmljYXRlcywgTlNFcnJvciAqZXJyb3IpCit7CisgICAgdXNpbmcgbmFt
ZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOworCisgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OlVzZXJDb25zZW50ZWQpOworICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXR0ZXN0ZWQ7
CisgICAgYXV0byYgY3JlYXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKworICAgIGlmIChlcnJv
cikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGF0dGVzdDogJUAiLCBlcnJvcik7Cisg
ICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VT
dHJpbmcoIkNvdWxkbid0IGF0dGVzdDogIiwgU3RyaW5nKGVycm9yLmxvY2FsaXplZERlc2NyaXB0
aW9uKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gQXR0ZXN0YXRpb24gQ2Vy
dGlmaWNhdGUgYW5kIEF0dGVzdGF0aW9uIElzc3VpbmcgQ0EKKyAgICBBU1NFUlQoY2VydGlmaWNh
dGVzICYmIChbY2VydGlmaWNhdGVzIGNvdW50XSA9PSAyKSk7CisKICAgICAvLyBTdGVwIDEzLiBB
cHBsZSBBdHRlc3RhdGlvbiBDb250JwogICAgIC8vIEFzc2VtYmxlIHRoZSBhdHRlc3RhdGlvbiBv
YmplY3Q6CiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNhdHRlc3RhdGlv
bi1vYmplY3QKICAgICBjYm9yOjpDQk9SVmFsdWU6Ok1hcFZhbHVlIGF0dGVzdGF0aW9uU3RhdGVt
ZW50TWFwOwogICAgIHsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHNpZ25hdHVyZTsKLSAgICAg
ICAgewotICAgICAgICAgICAgQ0ZFcnJvclJlZiBlcnJvclJlZiA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICAvLyBGSVhNRSgxODM2NTIpOiBSZWR1Y2UgcHJvbXB0IGZvciBiaW9tZXRyaWNzCi0gICAg
ICAgICAgICBhdXRvIHNpZ25hdHVyZVJlZiA9IGFkb3B0Q0YoU2VjS2V5Q3JlYXRlU2lnbmF0dXJl
KHByaXZhdGVLZXksIGtTZWNLZXlBbGdvcml0aG1FQ0RTQVNpZ25hdHVyZU1lc3NhZ2VYOTYyU0hB
MjU2LCAoX19icmlkZ2UgQ0ZEYXRhUmVmKVtOU0RhdGEgZGF0YVdpdGhCeXRlczphdXRoRGF0YS5k
YXRhKCkgbGVuZ3RoOmF1dGhEYXRhLnNpemUoKV0sICZlcnJvclJlZikpOwotICAgICAgICAgICAg
YXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JSZWYpOwotICAgICAgICAgICAgaWYgKGVy
cm9yUmVmKSB7Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBnZW5lcmF0ZSB0
aGUgc2lnbmF0dXJlOiAlQCIsIChOU0Vycm9yKillcnJvclJlZik7Ci0gICAgICAgICAgICAgICAg
cmVjZWl2ZVJlc3BvbmQoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygi
Q291bGRuJ3QgZ2VuZXJhdGUgdGhlIHNpZ25hdHVyZTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJy
b3JSZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2lnbmF0dXJlID0gdG9WZWN0b3IoKE5TRGF0
YSAqKXNpZ25hdHVyZVJlZi5nZXQoKSk7Ci0gICAgICAgIH0KICAgICAgICAgYXR0ZXN0YXRpb25T
dGF0ZW1lbnRNYXBbY2Jvcjo6Q0JPUlZhbHVlKCJhbGciKV0gPSBjYm9yOjpDQk9SVmFsdWUoQ09T
RTo6RVMyNTYpOwotICAgICAgICBhdHRlc3RhdGlvblN0YXRlbWVudE1hcFtjYm9yOjpDQk9SVmFs
dWUoInNpZyIpXSA9IGNib3I6OkNCT1JWYWx1ZShzaWduYXR1cmUpOwogICAgICAgICBWZWN0b3I8
Y2Jvcjo6Q0JPUlZhbHVlPiBjYm9yQXJyYXk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgW2NlcnRpZmljYXRlcyBjb3VudF07IGkrKykKICAgICAgICAgICAgIGNib3JBcnJheS5hcHBl
bmQoY2Jvcjo6Q0JPUlZhbHVlKHRvVmVjdG9yKChOU0RhdGEgKilhZG9wdENGKFNlY0NlcnRpZmlj
YXRlQ29weURhdGEoKF9fYnJpZGdlIFNlY0NlcnRpZmljYXRlUmVmKWNlcnRpZmljYXRlc1tpXSkp
LmdldCgpKSkpOwogICAgICAgICBhdHRlc3RhdGlvblN0YXRlbWVudE1hcFtjYm9yOjpDQk9SVmFs
dWUoIng1YyIpXSA9IGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKGNib3JBcnJheSkpOwogICAgIH0K
LSAgICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZN
b3ZlKGF1dGhEYXRhKSwgIkFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCks
IGNyZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CisgICAgYXV0byBhdHRlc3RhdGlvbk9iamVj
dCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICJhcHBsZSIsIFdU
Rk1vdmUoYXR0ZXN0YXRpb25TdGF0ZW1lbnRNYXApLCBjcmVhdGlvbk9wdGlvbnMuYXR0ZXN0YXRp
b24pOwogCiAgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CiB9CkBAIC0zNTYs
NiArMzQ0LDcgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAg
Ly8gU2tpcCBTdGVwIDggYXMgZXh0ZW5zaW9ucyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQuCiAgICAg
Ly8gU3RlcCAxMiBpcyBpbXBsaWNpdGx5IGNhcHR1cmVkIGJ5IGFsbCBVbmtub3duRXJyb3IgZXhj
ZXB0aW9uIGNhbGxiYWNrcy4KICAgICAvLyBTdGVwIDMtNS4gVW5saWtlIHRoZSBzcGVjLCBpZiBh
biBhbGxvdyBsaXN0IGlzIHByb3ZpZGVkIGFuZCB0aGVyZSBpcyBubyBpbnRlcnNlY3Rpb24gYmV0
d2VlbiBleGlzdGluZyBvbmVzIGFuZCB0aGUgYWxsb3cgbGlzdCwgd2UgYWx3YXlzIHJldHVybiBO
b3RBbGxvd2VkRXJyb3IuCisgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU5MDA1OTMpOiBO
ZWVkIHRvIGluZm9ybSB1c2Vycy4KICAgICBhdXRvIGFsbG93Q3JlZGVudGlhbElkcyA9IHByb2R1
Y2VIYXNoU2V0KHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMpOwogICAgIGlmICghcmVx
dWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkgJiYgYWxsb3dDcmVkZW50aWFs
SWRzLmlzRW1wdHkoKSkgewogICAgICAgICByZWNlaXZlUmVzcG9uZChFeGNlcHRpb25EYXRhIHsg
Tm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhl
IHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0pOwpAQCAtNDQ4LDcgKzQzNyw3
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZUdldEFzc2VydGlvbkFmdGVyVXNl
ckNvbnNlbnRlZChMb2NhbENvbm5lY3Rpb246CiAgICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkg
PSBAewogICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAg
ICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUs
Ci0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBbTlNEYXRhIGRhdGFX
aXRoQnl0ZXM6Y3JlZGVudGlhbElkLmRhdGEoKSBsZW5ndGg6Y3JlZGVudGlhbElkLnNpemUoKV0s
CisgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiB0b05TRGF0YShjcmVk
ZW50aWFsSWQpLmdldCgpLAogICAgICAgICAgICAgKGlkKWtTZWNVc2VBdXRoZW50aWNhdGlvbkNv
bnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICAoaWQpa1NlY1JldHVyblJlZjogQFlFUywKICNp
ZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25u
ZWN0aW9uLmgKaW5kZXggY2Q3ODVjMmNkZGM0ZjExMGRjZTY4ZTNkYmRkZGZiNTI4NzNjMTMwNS4u
OTE5MWIyYzY1MzQyY2QxYjY1NzEyNWEyMzI2NDYxNmZlOGRlMjI5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxDb25uZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxDb25uZWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICBZ
ZXMKICAgICB9OwogCi0gICAgdXNpbmcgQXR0ZXN0YXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU2VjS2V5UmVmLCBOU0FycmF5ICosIE5TRXJyb3IgKik+OworICAgIHVzaW5n
IEF0dGVzdGF0aW9uQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TQXJyYXkgKiwg
TlNFcnJvciAqKT47CiAgICAgdXNpbmcgVXNlckNvbnNlbnRDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVXNlckNvbnNlbnQpPjsKICAgICB1c2luZyBVc2VyQ29uc2VudENvbnRleHRD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVXNlckNvbnNlbnQsIExBQ29udGV4dCAq
KT47CiAKQEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkxvY2FsQ29ubmVj
dGlvbigpID0gZGVmYXVsdDsKIAogICAgIC8vIE92ZXJyaWRlZCBieSBNb2NrTG9jYWxDb25uZWN0
aW9uLgotICAgIHZpcnR1YWwgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNv
biwgVXNlckNvbnNlbnRDYWxsYmFjayYmKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0VXNl
ckNvbnNlbnQoY29uc3QgU3RyaW5nJiByZWFzb24sIFNlY0FjY2Vzc0NvbnRyb2xSZWYsIFVzZXJD
b25zZW50Q29udGV4dENhbGxiYWNrJiYpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRl
c3RhdGlvbihjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYgdXNlcm5hbWUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5
KExBQ29udGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJM
YWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqYXV0aERhdGEsIE5TRGF0YSAq
aGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFjayYmKSBjb25zdDsKICAgICB2aXJ0dWFsIE5TRGljdGlv
bmFyeSAqc2VsZWN0Q3JlZGVudGlhbChjb25zdCBOU0FycmF5ICopIGNvbnN0OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IDkwYTVmN2IzYmIxMWY0MGY5NTU1
ODgyYzBiOGJmMmExMGEyZTkzOGYuLjhiYWVlZTcwOWZmYzdkM2NlNWNiOGU4MDE0YzMxM2I4YTBh
ZTAxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbENvbm5lY3Rpb24ubW0KQEAgLTI4LDMzICsy
OCwxNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVVRITikKIAotI2ltcG9ydCAiRGV2aWNlSWRlbnRp
dHlTUEkuaCIKLSNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2ltcG9ydCA8d3Rm
L0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCisjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKyNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9Mb2NhbENvbm5lY3Rpb25BZGRp
dGlvbnMuaD4KKyNlbmRpZgorCiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsu
aCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRVc2Vy
Q29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNvbiwgVXNlckNvbnNlbnRDYWxsYmFjayYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBjb25zdAotewotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0TlMoW2FsbG9j
TEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7Ci0gICAgYXV0byByZXBseSA9IG1ha2VCbG9ja1B0
cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wg
c3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgewotICAgICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKLQotICAgICAgICBVc2VyQ29uc2VudCBjb25zZW50ID0gVXNlckNvbnNl
bnQ6OlllczsKLSAgICAgICAgaWYgKCFzdWNjZXNzIHx8IGVycm9yKSB7Ci0gICAgICAgICAgICBM
T0dfRVJST1IoIkNvdWxkbid0IGF1dGhlbnRpY2F0ZSB3aXRoIGJpb21ldHJpY3M6ICVAIiwgZXJy
b3IpOwotICAgICAgICAgICAgY29uc2VudCA9IFVzZXJDb25zZW50OjpObzsKLSAgICAgICAgfQot
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNvbnNlbnRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihjb25zZW50KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAg
W2NvbnRleHQgZXZhbHVhdGVQb2xpY3k6TEFQb2xpY3lEZXZpY2VPd25lckF1dGhlbnRpY2F0aW9u
V2l0aEJpb21ldHJpY3MgbG9jYWxpemVkUmVhc29uOnJlYXNvbiByZXBseTpyZXBseS5nZXQoKV07
Ci19Ci0KIHZvaWQgTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcm
IHJlYXNvbiwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sLCBVc2VyQ29uc2VudENv
bnRleHRDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAogewogICAgIGF1dG8gY29u
dGV4dCA9IGFkb3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CkBAIC03Myw0
MSArNTcsMzUgQEAgdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0
cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmIGEKICAgICBbY29udGV4dCBldmFsdWF0
ZUFjY2Vzc0NvbnRyb2w6YWNjZXNzQ29udHJvbCBvcGVyYXRpb246TEFBY2Nlc3NDb250cm9sT3Bl
cmF0aW9uVXNlS2V5U2lnbiBsb2NhbGl6ZWRSZWFzb246cmVhc29uIHJlcGx5OnJlcGx5LmdldCgp
XTsKIH0KIAotdm9pZCBMb2NhbENvbm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKGNvbnN0IFN0cmlu
ZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBo
YXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CitSZXRh
aW5QdHI8U2VjS2V5UmVmPiBMb2NhbENvbm5lY3Rpb246OmNyZWF0ZUNyZWRlbnRpYWxQcml2YXRl
S2V5KExBQ29udGV4dCAqY29udGV4dCwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9s
UmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwgTlNEYXRhICpzZWNBdHRyQXBwbGljYXRp
b25UYWcpIGNvbnN0CiB7Ci0jaWYgSEFWRShERVZJQ0VfSURFTlRJVFkpCi0gICAgLy8gQXBwbGUg
QXR0ZXN0YXRpb24KLSAgICBBU1NFUlQoaGFzaC5zaXplKCkgPD0gMzIpOwotCi0gICAgUmV0YWlu
UHRyPFNlY0FjY2Vzc0NvbnRyb2xSZWY+IGFjY2Vzc0NvbnRyb2xSZWY7Ci0gICAgewotICAgICAg
ICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKLSAgICAgICAgYWNjZXNzQ29udHJvbFJl
ZiA9IGFkb3B0Q0YoU2VjQWNjZXNzQ29udHJvbENyZWF0ZVdpdGhGbGFncyhOVUxMLCBrU2VjQXR0
ckFjY2Vzc2libGVXaGVuUGFzc2NvZGVTZXRUaGlzRGV2aWNlT25seSwga1NlY0FjY2Vzc0NvbnRy
b2xQcml2YXRlS2V5VXNhZ2UgfCBrU2VjQWNjZXNzQ29udHJvbFVzZXJQcmVzZW5jZSwgJmVycm9y
UmVmKSk7Ci0gICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsKLSAg
ICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIkNvdWxkbid0IGNy
ZWF0ZSBBQ0w6ICVAIiwgKE5TRXJyb3IgKillcnJvclJlZik7Ci0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihOVUxMLCBOVUxMLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJjb20uYXBw
bGUuV2ViS2l0LldlYkF1dGhOIiBjb2RlOjEgdXNlckluZm86bmlsXSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBAeworICAg
ICAgICAoaWQpa1NlY0F0dHJUb2tlbklEOiAoaWQpa1NlY0F0dHJUb2tlbklEU2VjdXJlRW5jbGF2
ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5VHlwZTogKGlkKWtTZWNBdHRyS2V5VHlwZUVDU0VD
UHJpbWVSYW5kb20sCisgICAgICAgIChpZClrU2VjQXR0cktleVNpemVJbkJpdHM6IEAyNTYsCisg
ICAgICAgIChpZClrU2VjUHJpdmF0ZUtleUF0dHJzOiBAeworICAgICAgICAgICAgKGlkKWtTZWNV
c2VBdXRoZW50aWNhdGlvbkNvbnRleHQ6IGNvbnRleHQsCisgICAgICAgICAgICAoaWQpa1NlY0F0
dHJBY2Nlc3NDb250cm9sOiAoaWQpYWNjZXNzQ29udHJvbFJlZiwKKyAgICAgICAgICAgIChpZClr
U2VjQXR0cklzUGVybWFuZW50OiBAWUVTLAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNz
R3JvdXA6IEAiY29tLmFwcGxlLndlYmtpdC53ZWJhdXRobiIsCisgICAgICAgICAgICAoaWQpa1Nl
Y0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25UYWc6IHNlY0F0dHJBcHBsaWNhdGlvblRhZywKKyAgICAgICAgfX07CisgICAgQ0ZFcnJv
clJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgYXV0byBjcmVkZW50aWFsUHJpdmF0ZUtleSA9
IGFkb3B0Q0YoU2VjS2V5Q3JlYXRlUmFuZG9tS2V5KChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYp
YXR0cmlidXRlcywgJmVycm9yUmVmKSk7CisgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0Yo
ZXJyb3JSZWYpOworICAgIGlmIChlcnJvclJlZikgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxk
bid0IGNyZWF0ZSBwcml2YXRlIGtleTogJUAiLCAoTlNFcnJvciAqKWVycm9yUmVmKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIHJldHVybiBjcmVkZW50aWFsUHJpdmF0ZUtl
eTsKK30KIAotICAgIFN0cmluZyBsYWJlbCA9IG1ha2VTdHJpbmcodXNlcm5hbWUsICJAIiwgcnBJ
ZCk7Ci0gICAgTlNEaWN0aW9uYXJ5ICpvcHRpb25zID0gQHsKLSAgICAgICAga01BT3B0aW9uc0JB
QUtleWNoYWluTGFiZWw6IGxhYmVsLAotICAgICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8z
ODQ4OTEzNCk6IE5lZWQgYSBmb3JtYWwgbmFtZS4KLSAgICAgICAga01BT3B0aW9uc0JBQUtleWNo
YWluQWNjZXNzR3JvdXA6IEAiY29tLmFwcGxlLnNhZmFyaS5XZWJBdXRoTi5jcmVkZW50aWFscyIs
Ci0gICAgICAgIGtNQU9wdGlvbnNCQUFJZ25vcmVFeGlzdGluZ0tleWNoYWluSXRlbXM6IEBZRVMs
Ci0gICAgICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM4NDg5MTM0KTogRGV0ZXJtaW5lIGEg
cHJvcGVyIGxpZmVzcGFuLgotICAgICAgICBrTUFPcHRpb25zQkFBVmFsaWRpdHk6IEAoMTQ0MCks
IC8vIExhc3Qgb25lIGRheS4KLSAgICAgICAga01BT3B0aW9uc0JBQVNDUlRBdHRlc3RhdGlvbjog
QE5PLAotICAgICAgICBrTUFPcHRpb25zQkFBTm9uY2U6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpo
YXNoLmRhdGEoKSBsZW5ndGg6aGFzaC5zaXplKCldLAotICAgICAgICBrTUFPcHRpb25zQkFBQWNj
ZXNzQ29udHJvbHM6IChpZClhY2Nlc3NDb250cm9sUmVmLmdldCgpLAotICAgICAgICBrTUFPcHRp
b25zQkFBT0lEU1RvSW5jbHVkZTogQFtrTUFPcHRpb25zQkFBT0lETm9uY2VdCi0gICAgfTsKLQot
ICAgIC8vIEZJWE1FKDE4MzY1Mik6IFJlZHVjZSBwcm9tcHQgZm9yIGJpb21ldHJpY3MKLSAgICBE
ZXZpY2VJZGVudGl0eUlzc3VlQ2xpZW50Q2VydGlmaWNhdGVXaXRoQ29tcGxldGlvbihkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBvcHRpb25zLCBtYWtlQmxvY2tQdHIoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpLmdldCgpKTsKLSNlbmRpZiAvLyBIQVZFKERFVklDRV9JREVOVElUWSkKK3Zv
aWQgTG9jYWxDb25uZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYgcHJpdmF0ZUtleSwg
TlNEYXRhICphdXRoRGF0YSwgTlNEYXRhICpoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYgY29t
cGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisjaWYgZGVmaW5lZChMT0NBTENPTk5FQ1RJT05fQURE
SVRJT05TKQorTE9DQUxDT05ORUNUSU9OX0FERElUSU9OUworI2VuZGlmCiB9CiAKIE5TRGljdGlv
bmFyeSAqTG9jYWxDb25uZWN0aW9uOjpzZWxlY3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkgKmNy
ZWRlbnRpYWxzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxTZXJ2aWNlLm1tCmluZGV4IDI2ZmM5
MjUxNjkwZmY5Zjg2MTA2NWM3NjQ0OGM3NGQ5ODY4M2Q5ZTQuLjZiYzA4MjUyOTZkOGFhZTIzYWI2
NGRjZjA3MGYzMTNmMGY5OTRmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsU2VydmljZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbFNlcnZpY2UubW0KQEAg
LTMxLDYgKzMxLDEwIEBACiAjaW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0b3IuaCIKICNpbXBvcnQg
IkxvY2FsQ29ubmVjdGlvbi5oIgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbXBv
cnQgPFdlYktpdEFkZGl0aW9ucy9Mb2NhbFNlcnZpY2VBZGRpdGlvbnMuaD4KKyNlbmRpZgorCiAj
aW1wb3J0ICJMb2NhbEF1dGhlbnRpY2F0aW9uU29mdExpbmsuaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC00MCw3ICs0NCw2IEBAIExvY2FsU2VydmljZTo6TG9jYWxTZXJ2aWNlKE9ic2VydmVy
JiBvYnNlcnZlcikKIHsKIH0KIAotLy8gRklYTUUocmRhcjovL3Byb2JsZW0vNTEwNDg1NDIpCiBi
b29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKQogewogICAgIGF1dG8gY29udGV4dCA9IGFk
b3B0TlMoW2FsbG9jTEFDb250ZXh0SW5zdGFuY2UoKSBpbml0XSk7CkBAIC00OSw2ICs1MiwxMSBA
QCBib29sIExvY2FsU2VydmljZTo6aXNBdmFpbGFibGUoKQogICAgICAgICBMT0dfRVJST1IoIkNv
dWxkbid0IGZpbmQgbG9jYWwgYXV0aGVudGljYXRvcnM6ICVAIiwgZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQorCisjaWYgZGVmaW5lZChMT0NBTFNFUlZJQ0VfQURESVRJT05T
KQorTE9DQUxTRVJWSUNFX0FERElUSU9OUworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
TW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAppbmRleCAzNTU5YjgwZWI5
ODI4MGEwMWMxNTBhYzQyMmE0M2MyM2VjZDNhZDIzLi43MjAxNThhY2MyNTU5MWI3MzBmY2U3MWNh
ZmVkYmUzNDMxOTZkZWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24u
aApAQCAtMzcsOSArMzcsOSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTW9ja0xvY2FsQ29ubmVj
dGlvbihjb25zdCBXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uJik7
CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmIHJlYXNv
biwgVXNlckNvbnNlbnRDYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGdldFVzZXJD
b25zZW50KGNvbnN0IFN0cmluZyYgcmVhc29uLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBVc2VyQ29u
c2VudENvbnRleHRDYWxsYmFjayYmKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGdldEF0dGVzdGF0
aW9uKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBoYXNoLCBBdHRlc3RhdGlvbkNhbGxiYWNrJiYpIGNvbnN0IGZpbmFsOwor
ICAgIFJldGFpblB0cjxTZWNLZXlSZWY+IGNyZWF0ZUNyZWRlbnRpYWxQcml2YXRlS2V5KExBQ29u
dGV4dCAqLCBTZWNBY2Nlc3NDb250cm9sUmVmLCBjb25zdCBTdHJpbmcmIHNlY0F0dHJMYWJlbCwg
TlNEYXRhICpzZWNBdHRyQXBwbGljYXRpb25UYWcpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgZ2V0
QXR0ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKmF1dGhEYXRhLCBOU0RhdGEgKmhhc2gsIEF0
dGVzdGF0aW9uQ2FsbGJhY2smJikgY29uc3QgZmluYWw7CiAgICAgTlNEaWN0aW9uYXJ5ICpzZWxl
Y3RDcmVkZW50aWFsKGNvbnN0IE5TQXJyYXkgKikgY29uc3QgZmluYWw7CiAKICAgICBXZWJDb3Jl
OjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIG1fY29uZmlndXJhdGlvbjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2sv
TW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQppbmRleCBhNmZlMjMwMDhmMmFl
MWQzNDE3ODE4YTMyMGRlOGIxMzZmNzg1Yzg0Li45MTViNTk0OTlmZTdlY2QyN2JmZjY5YjJmMDY3
MGRiN2Q0Y2YzMGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1t
CkBAIC00MywxOSArNDMsNiBAQCBNb2NrTG9jYWxDb25uZWN0aW9uOjpNb2NrTG9jYWxDb25uZWN0
aW9uKGNvbnN0IFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbgogewogfQogCi12b2lk
IE1vY2tMb2NhbENvbm5lY3Rpb246OmdldFVzZXJDb25zZW50KGNvbnN0IFN0cmluZyYsIFVzZXJD
b25zZW50Q2FsbGJhY2smJiBjYWxsYmFjaykgY29uc3QKLXsKLSAgICAvLyBNb2NrIGFzeW5jIG9w
ZXJhdGlvbnMuCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1cmF0aW9uID0g
bV9jb25maWd1cmF0aW9uLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFibGUg
ewotICAgICAgICBBU1NFUlQoY29uZmlndXJhdGlvbi5sb2NhbCk7Ci0gICAgICAgIGlmICghY29u
ZmlndXJhdGlvbi5sb2NhbC0+YWNjZXB0QXV0aGVudGljYXRpb24pIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKFVzZXJDb25zZW50OjpObyk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgY2FsbGJhY2soVXNlckNvbnNlbnQ6Olllcyk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0VXNlckNvbnNlbnQoY29uc3QgU3RyaW5nJiwgU2VjQWNj
ZXNzQ29udHJvbFJlZiwgVXNlckNvbnNlbnRDb250ZXh0Q2FsbGJhY2smJiBjYWxsYmFjaykgY29u
c3QKIHsKICAgICAvLyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCkBAIC02OSw1NiArNTYsNTkgQEAg
dm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRVc2VyQ29uc2VudChjb25zdCBTdHJpbmcmLCBT
ZWNBY2Nlc3NDb250cm9sUmVmLCBVc2UKICAgICB9KTsKIH0KIAotdm9pZCBNb2NrTG9jYWxDb25u
ZWN0aW9uOjpnZXRBdHRlc3RhdGlvbihjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFN0cmluZyYg
dXNlcm5hbWUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgaGFzaCwgQXR0ZXN0YXRpb25DYWxsYmFj
ayYmIGNhbGxiYWNrKSBjb25zdAorUmV0YWluUHRyPFNlY0tleVJlZj4gTW9ja0xvY2FsQ29ubmVj
dGlvbjo6Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoTEFDb250ZXh0ICosIFNlY0FjY2Vzc0Nv
bnRyb2xSZWYsIGNvbnN0IFN0cmluZyYgc2VjQXR0ckxhYmVsLCBOU0RhdGEgKnNlY0F0dHJBcHBs
aWNhdGlvblRhZykgY29uc3QKIHsKLSAgICAvLyBNb2NrIGFzeW5jIG9wZXJhdGlvbnMuCi0gICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjb25maWd1cmF0aW9uID0gbV9jb25maWd1cmF0aW9u
LCBycElkLCB1c2VybmFtZSwgaGFzaCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGNvbmZpZ3VyYXRpb24ubG9jYWwpOwotICAgICAgICBp
ZiAoIWNvbmZpZ3VyYXRpb24ubG9jYWwtPmFjY2VwdEF0dGVzdGF0aW9uKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhOVUxMLCBOVUxMLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJXZWJBdXRo
ZW50aWNhdGlvbiIgY29kZTotMSB1c2VySW5mbzpAeyBOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5
OiBAIlRoZSBvcGVyYXRpb24gY291bGRuJ3QgY29tcGxldGUuIiB9XSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgS2V5IGFuZCBhZGQgaXQgdG8gS2V5
Y2hhaW4uCi0gICAgICAgIE5TRGljdGlvbmFyeSogb3B0aW9ucyA9IEB7Ci0gICAgICAgICAgICAo
aWQpa1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwK
LSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1By
aXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJLZXlTaXplSW5CaXRzOiBAMjU2LAotICAg
ICAgICB9OwotICAgICAgICBDRkVycm9yUmVmIGVycm9yUmVmID0gbnVsbHB0cjsKLSAgICAgICAg
YXV0byBrZXkgPSBhZG9wdENGKFNlY0tleUNyZWF0ZVdpdGhEYXRhKAotICAgICAgICAgICAgKF9f
YnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVu
Y29kZWRTdHJpbmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+cHJpdmF0ZUtleUJhc2U2NCBvcHRpb25z
Ok5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKLSAg
ICAgICAgICAgIChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpb3B0aW9ucywKLSAgICAgICAgICAg
ICZlcnJvclJlZgotICAgICAgICApKTsKLSAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhOVUxMLCBOVUxMLCAoTlNFcnJvciAqKWVycm9yUmVmKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1vY2sgd2hhdCBEZXZpY2VJZGVu
dGl0eSB3b3VsZCBkby4KLSAgICAgICAgU3RyaW5nIGxhYmVsID0gbWFrZVN0cmluZyh1c2VybmFt
ZSwgIkAiLCBycElkLCAiLXJrLXVjcnQiKTsKLSAgICAgICAgTlNEaWN0aW9uYXJ5KiBhZGRRdWVy
eSA9IEB7Ci0gICAgICAgICAgICAoaWQpa1NlY1ZhbHVlUmVmOiAoaWQpa2V5LmdldCgpLAotICAg
ICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChp
ZClrU2VjQXR0ckxhYmVsOiAoaWQpbGFiZWwsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBY2Nl
c3NpYmxlOiAoaWQpa1NlY0F0dHJBY2Nlc3NpYmxlQWZ0ZXJGaXJzdFVubG9jaywKKyAgICBBU1NF
UlQobV9jb25maWd1cmF0aW9uLmxvY2FsKTsKKworICAgIC8vIEdldCBLZXkgYW5kIGFkZCBpdCB0
byBLZXljaGFpbi4KKyAgICBOU0RpY3Rpb25hcnkqIG9wdGlvbnMgPSBAeworICAgICAgICAoaWQp
a1NlY0F0dHJLZXlUeXBlOiAoaWQpa1NlY0F0dHJLZXlUeXBlRUNTRUNQcmltZVJhbmRvbSwKKyAg
ICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwK
KyAgICAgICAgKGlkKWtTZWNBdHRyS2V5U2l6ZUluQml0czogQDI1NiwKKyAgICB9OworICAgIENG
RXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgIGF1dG8ga2V5ID0gYWRvcHRDRihTZWNL
ZXlDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtb
TlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6bV9jb25maWd1cmF0aW9u
LmxvY2FsLT5wcml2YXRlS2V5QmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25v
cmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKW9wdGlvbnMsCisgICAgICAgICZlcnJvclJlZgorICAgICkpOworICAgIGlmIChlcnJv
clJlZikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBOU0RpY3Rpb25hcnkqIGFkZFF1
ZXJ5ID0gQHsKKyAgICAgICAgKGlkKWtTZWNWYWx1ZVJlZjogKGlkKWtleS5nZXQoKSwKKyAgICAg
ICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKKyAgICAgICAgKGlkKWtTZWNBdHRy
TGFiZWw6IHNlY0F0dHJMYWJlbCwKKyAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6
IHNlY0F0dHJBcHBsaWNhdGlvblRhZywKKyAgICAgICAgKGlkKWtTZWNBdHRyQWNjZXNzaWJsZTog
KGlkKWtTZWNBdHRyQWNjZXNzaWJsZUFmdGVyRmlyc3RVbmxvY2ssCiAjaWYgSEFWRShEQVRBX1BS
T1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9u
S2V5Y2hhaW46IEBZRVMKKyAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWlu
OiBAWUVTCiAjZWxzZQotICAgICAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKKyAg
ICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKICNlbmRpZgotICAgICAgICB9OwotICAg
ICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlS
ZWYpYWRkUXVlcnksIE5VTEwpOwotICAgICAgICBpZiAoc3RhdHVzKSB7Ci0gICAgICAgICAgICBj
YWxsYmFjayhOVUxMLCBOVUxMLCBbTlNFcnJvciBlcnJvcldpdGhEb21haW46QCJXZWJBdXRoZW50
aWNhdGlvbiIgY29kZTpzdGF0dXMgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktl
eTogW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJDb3VsZG4ndCBhZGQgdGhlIGtleSB0byB0
aGUga2V5Y2hhaW4uICVkIiwgc3RhdHVzXSB9XSk7CisgICAgfTsKKyAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtQWRkKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpYWRkUXVlcnksIE5VTEwp
OworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJDb3VsZG4ndCBhZGQgdGhl
IGtleSB0byB0aGUga2V5Y2hhaW4uICVkIiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgcmV0dXJuIGtleTsKK30KKwordm9pZCBNb2NrTG9jYWxDb25uZWN0
aW9uOjpnZXRBdHRlc3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqLCBOU0RhdGEgKiwgQXR0ZXN0
YXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKSBjb25zdAoreworICAgIC8vIE1vY2sgYXN5bmMgb3Bl
cmF0aW9ucy4KKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2NvbmZpZ3VyYXRpb24gPSBt
X2NvbmZpZ3VyYXRpb24sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7
CisgICAgICAgIEFTU0VSVChjb25maWd1cmF0aW9uLmxvY2FsKTsKKyAgICAgICAgaWYgKCFjb25m
aWd1cmF0aW9uLmxvY2FsLT5hY2NlcHRBdHRlc3RhdGlvbikgeworICAgICAgICAgICAgY2FsbGJh
Y2soTlVMTCwgW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOkAiV2ViQXV0aGVudGljYXRpb24iIGNv
ZGU6LTEgdXNlckluZm86QHsgTlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleTogQCJUaGUgb3BlcmF0
aW9uIGNvdWxkbid0IGNvbXBsZXRlLiIgfV0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgYXV0byBhdHRlc3RhdGlvbkNlcnRpZmljYXRlID0gYWRvcHRDRihTZWND
ZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKE5VTEwsIChfX2JyaWRnZSBDRkRhdGFSZWYpYWRvcHRO
UyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmNvbmZpZ3VyYXRp
b24ubG9jYWwtPnVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29k
aW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSkpOwogICAgICAgICBhdXRvIGF0dGVz
dGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRl
V2l0aERhdGEoTlVMTCwgKF9fYnJpZGdlIENGRGF0YVJlZilhZG9wdE5TKFtbTlNEYXRhIGFsbG9j
XSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6Y29uZmlndXJhdGlvbi5sb2NhbC0+aW50ZXJt
ZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdu
b3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSkpOwotCi0gICAgICAgIGNhbGxiYWNrKGtleS5n
ZXQoKSwgW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9u
Q2VydGlmaWNhdGUuZ2V0KCksIChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRp
ZmljYXRlLmdldCgpLCBuaWxdLCBOVUxMKTsKKyAgICAgICAgY2FsbGJhY2soW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czogKF9fYnJpZGdlIGlkKWF0dGVzdGF0aW9uQ2VydGlmaWNhdGUuZ2V0KCks
IChfX2JyaWRnZSBpZClhdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlLmdldCgpLCBuaWxd
LCBOVUxMKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZGFjODg0ODg2ZTIyNjIxZGYzNTRlZGUxODMxYjRjMDU3
MjA2MjIyYi4uZDBmNDk3YmRiMWU1ZmY2NDU4MGZkYmQ0OTA5YWM2MThkMGY4NTllOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTIz
LDcgKzExMjMsNiBAQAogCQk1N0RDRUQ2RjIxNDJFRTYzMDAxNkI4NDcgLyogV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3RENFRDZBMjE0MkVBRTIwMDE2Qjg0NyAvKiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JNZXNzYWdlcy5oICovOyB9OwogCQk1N0RDRUQ3MDIxNDJFRTY4MDAxNkI4
NDcgLyogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VENkMy
MTQyRUFGOTAwMTZCODQ3IC8qIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2Fn
ZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTdEQ0VENzEyMTQyRUU2QzAwMTZCODQ3IC8qIFdlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RENFRDZEMjE0MkVBRkEwMDE2Qjg0NyAvKiBX
ZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTU3RENF
REFCMjE0QzYwMDkwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQSS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdEQ0VEQUEyMTRCOUI0MzAwMTZCODQ3
IC8qIERldmljZUlkZW50aXR5U1BJLmggKi87IH07CiAJCTU3RENFREFDMjE0QzYwMjcwMDE2Qjg0
NyAvKiBMb2NhbEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3RENFREExMjE0OUMxRTIwMDE2Qjg0NyAvKiBMb2NhbEF1dGhlbnRp
Y2F0b3IuaCAqLzsgfTsKIAkJNTdEQ0VEQUQyMTRDNjAyQzAwMTZCODQ3IC8qIExvY2FsQ29ubmVj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdE
Q0VEQTcyMTRBNTY4QjAwMTZCODQ3IC8qIExvY2FsQ29ubmVjdGlvbi5oICovOyB9OwogCQk1N0RD
RURBRTIxNEM2MDMzMDAxNkI4NDcgLyogTG9jYWxTZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0RDRUQ5QTIxNDhCMDgzMDAxNkI4NDcgLyog
TG9jYWxTZXJ2aWNlLmggKi87IH07CkBAIC0zODY4LDcgKzM4NjcsNiBAQAogCQk1N0RDRURBNjIx
NDlGOURBMDAxNkI4NDcgLyogV2ViQXV0aGVudGljYXRpb25SZXF1ZXN0RGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJBdXRoZW50aWNhdGlvblJlcXVlc3REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3RENFREE3MjE0QTU2OEIwMDE2Qjg0NyAvKiBMb2NhbENvbm5lY3Rpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTG9jYWxDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3RENFREE4MjE0QTU2OEIwMDE2Qjg0NyAvKiBMb2NhbENvbm5lY3Rpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBMb2NhbENvbm5lY3Rpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0
eVNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VJZGVudGl0eVNQSS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1N0RDRURDMTIxNEYxMTRDMDAxNkI4NDcgLyogTW9ja0xvY2FsU2Vy
dmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNb2NrTG9jYWxTZXJ2aWNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3RENFREMyMjE0RjExNEMwMDE2Qjg0NyAvKiBNb2NrTG9jYWxTZXJ2
aWNlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTW9ja0xvY2FsU2VydmljZS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdEQ0VEQzUyMTRGMTgzMDAwMTZCODQ3IC8qIE1vY2tM
b2NhbENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja0xvY2FsQ29ubmVjdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjgxNCw3ICs2ODEyLDYgQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTFBNTcwNTEwMUJFNDEwRTUwMDg3NEFGMSAvKiBCbG9ja1NQSS5oICovLAog
CQkJCTM3QzIxQ0FEMUU5OTRDMEMwMDI5RDVGOSAvKiBDb3JlUHJlZGljdGlvblNQSS5oICovLAot
CQkJCTU3RENFREFBMjE0QjlCNDMwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQSS5oICovLAog
CQkJCTJEQUFEQThFMjI5OEMyMTAwMEUzNkIwQyAvKiBEZXZpY2VNYW5hZ2VtZW50U1BJLmggKi8s
CiAJCQkJNTdCODI2NDAyMzA0RUIzRTAwQjcyRUIwIC8qIE5lYXJGaWVsZFNQSS5oICovLAogCQkJ
CTM3NTRENTQ0MUIzQTI5RkQwMDNBNEM3RiAvKiBOU0ludm9jYXRpb25TUEkuaCAqLywKQEAgLTEw
MjQ1LDcgKzEwMjQyLDYgQEAKIAkJCQkxQUM3NTM4MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJl
ZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwMzZBRTkyM0E5NzA4NzAwMDBCMDZBIC8q
IERlYnVnZ2FibGVJbmZvRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTYxMEY0MzdE
MTAwNThDMTVBIC8qIERlY29kZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3RENFREFCMjE0QzYw
MDkwMDE2Qjg0NyAvKiBEZXZpY2VJZGVudGl0eVNQSS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDcy
OTdGOUYxQzE3QkJFQTAxNUYwNzM1IC8qIERldmljZUlkSGFzaFNhbHRTdG9yYWdlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRDBDNTZGRDIyOUYxREVBMDBCRDMzRTcgLyogRGV2aWNlTWFuYWdlbWVu
dFNvZnRMaW5rLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREFBREE4RjIyOThDMjEwMDBFMzZCMEMg
LyogRGV2aWNlTWFuYWdlbWVudFNQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZTkxNzgyNjBm
ZGY2NThjZjdkMmVhMDI1OWU4Njg2NGQ0MjdhNzUwYy4uYzlmZmVjZWZjNzc2ZTE4NmIzNmNmMzky
M2Y0NjVjNTE1MjMwM2VlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAyLTE5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBSZXBs
YWNlIERldmljZUlkZW50aXR5LmZyYW1ld29yaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTM2
OTIyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxv
Y2FsLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtbG9jYWwuaHR0cHMuaHRtbDoKKwogMjAyMC0wMi0xOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIHN1cHBvcnQgZm9yIEF1ZGlvU2Vzc2lvbiBoYW5k
bGluZyBpbiBHUFVQcm9jZXNzIGZvciBjYXB0dXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9j
YWwuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4
dAppbmRleCBmYmUxYTgyNTMxODA2ZmRjMGEwN2ZlMWRhNTg5MzEyNDI1MjNjOWY5Li44NjM0ZjJj
MjZkMjllY2ZhMTA1NTRlNDE4MzNkZDhiODZkMmI3OGEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUt
bG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy1leHBl
Y3RlZC50eHQKQEAgLTMsNiArMyw3IEBAIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMga2V5IGNyZWRlbnRpYWwgcGFyCiBQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRl
bnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0
IHByaXZhdGUga2V5cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCiBQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgYXR0ZXN0YXRpb24gaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSBkZWxldGluZyBvbGQgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdGltZW91dCBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9j
YWwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IDI0YzVjZDhi
N2JjNDA3NjJkN2MxMzRjZTkwOWVkZjVkZWEzMDkyNDguLjBmNjlkMGI5MTVhNzgyMmVlYWVlNGZm
NWFmY2EyODM4YWRjNWU5M2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCkBAIC0xMTgsNiArMTE4LDI2IEBACiAg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlIH0gfSk7CisgICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25v
d25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4n
dCBjcmVhdGUgcHJpdmF0ZSBrZXkuIik7CisgICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRob3V0IHByaXZhdGUga2V5cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKKworICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUu
Y29tIgorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2
NCksCisgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFt
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dCisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9u
OiBmYWxzZSwgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCB9IH0pOwogICAgICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgYXR0ZXN0OiBUaGUgb3BlcmF0
aW9uIGNvdWxkbid0IGNvbXBsZXRlLiIpOwogICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aG91dCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKIApAQCAtMTQwLDcgKzE2MCw3IEBACiAgICAgICAgICAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CiAg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5
QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBhdHRlc3Q6IFRoZSBvcGVy
YXRpb24gY291bGRuJ3QgY29tcGxldGUuIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIikudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRl
c3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KSk7CiAgICAgICAgICAgICB9KTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwK
aW5kZXggMDg4ZTg2MzE4ZDFiZThhMDQ0NTdkNDExOGIzZDFhZjg4M2RjMDJjNy4uZjUzNzJiZWMz
MjE5MzMyOTIwMWNmZTdmMGVmODk0MWI5MDhhZjQzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxv
Y2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKQEAgLTQxLDcg
KzQxLDcgQEAKICAgICAgICAgICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKICAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2Jq
ZWN0LmZtdCwgIkFwcGxlIik7CisgICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3Rh
dGlvbk9iamVjdC5mbXQsICJhcHBsZSIpOwogICAgICAgICAgICAgLy8gQ2hlY2sgYXV0aERhdGEK
ICAgICAgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25P
YmplY3QuYXV0aERhdGEpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3Ry
aW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDVi
OGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKQEAgLTU4LDIzICs1OCw2IEBACiAg
ICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1
Yy5sZW5ndGgsIDIpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0
YXRpb25PYmplY3QuYXR0U3RtdC54NWNbMF0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRp
b25DZXJ0aWZpY2F0ZUJhc2U2NCkpOwogICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWNbMV0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0
QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NCkpOwotCi0gICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgc2lnbmF0dXJlCi0gICAgICAgICAgICAgICAgbGV0IHB1YmxpY0tleURhdGEg
PSBuZXcgVWludDhBcnJheSg2NSk7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5RGF0YVswXSA9
IDB4MDQ7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5RGF0YS5zZXQoYXV0aERhdGEucHVibGlj
S2V5WyctMiddLCAxKTsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXlEYXRhLnNldChhdXRoRGF0
YS5wdWJsaWNLZXlbJy0zJ10sIDMzKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLnN1
YnRsZS5pbXBvcnRLZXkoInJhdyIsIHB1YmxpY0tleURhdGEsIHsKLSAgICAgICAgICAgICAgICAg
ICAgbmFtZTogIkVDRFNBIiwKLSAgICAgICAgICAgICAgICAgICAgbmFtZWRDdXJ2ZTogIlAtMjU2
IgotICAgICAgICAgICAgICAgIH0sIGZhbHNlLCBbJ3ZlcmlmeSddKS50aGVuKHB1YmxpY0tleSA9
PiB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlLnZlcmlmeSh7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiRUNEU0EiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgaGFzaDogIlNIQS0yNTYiCi0gICAgICAgICAgICAgICAgICAgIH0sIHB1YmxpY0tleSwg
ZXh0cmFjdFJhd1NpZ25hdHVyZShhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LnNpZyksIGF0dGVz
dGF0aW9uT2JqZWN0LmF1dGhEYXRhKS50aGVuKHZlcmlmaWVkID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKHZlcmlmaWVkKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7
Ci0gICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>