<?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>183533</bug_id>
          
          <creation_ts>2018-03-09 15:50:57 -0800</creation_ts>
          <short_desc>[WebAuthn] Formalize the Keychain schema</short_desc>
          <delta_ts>2020-03-11 16:07:40 -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>WebCore 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>alex.gaynor</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>jonathan</cc>
    
    <cc>jschoi</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1405372</commentid>
    <comment_count>0</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-09 15:50:57 -0800</bug_when>
    <thetext>Figure out a way to store all credential meta data: PublicKeyCredentialRpEntity, PublicKeyCredentialUserEntity, and Counter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1405373</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2018-03-09 15:53:06 -0800</bug_when>
    <thetext>We might also want to update certificates related to the credential as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1450438</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-15 13:41:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/43347926&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627698</commentid>
    <comment_count>3</comment_count>
      <attachid>393016</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-09 02:03:11 -0700</bug_when>
    <thetext>Created attachment 393016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628021</commentid>
    <comment_count>4</comment_count>
      <attachid>393090</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-09 16:25:43 -0700</bug_when>
    <thetext>Created attachment 393090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628316</commentid>
    <comment_count>5</comment_count>
      <attachid>393090</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-03-10 10:47:46 -0700</bug_when>
    <thetext>Comment on attachment 393090
Patch

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

&gt; Source/WebKit/ChangeLog:9
&gt; +        This patch formalizes the schema for the Keychain as follow:

... as follows:

&gt; Source/WebKit/ChangeLog:35
&gt; +        the trustworthy information that the UserAgent produce. Others can be potentially used by

Also, this is the only trustworthy information that the UserAgent produces. Others could potentially be used by malicious websites ...

&gt; Source/WebKit/ChangeLog:51
&gt; +        within the SEP. So this field is absolutely useless.

What is the purpose of this paragraph? Are you saying that we don&apos;t implement the signature counter? If we do implement it (or perhaps just provide a constant value) I don&apos;t think we need to have this paragraph.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:335
&gt; +        OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)credentialIdQuery, nullptr);

Where is the result of this Copy going? That needs to be refcounted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628383</commentid>
    <comment_count>6</comment_count>
      <attachid>393090</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-10 14:26:06 -0700</bug_when>
    <thetext>Comment on attachment 393090
Patch

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

Thanks Brent for the review.

&gt;&gt; Source/WebKit/ChangeLog:9
&gt;&gt; +        This patch formalizes the schema for the Keychain as follow:
&gt; 
&gt; ... as follows:

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:35
&gt;&gt; +        the trustworthy information that the UserAgent produce. Others can be potentially used by
&gt; 
&gt; Also, this is the only trustworthy information that the UserAgent produces. Others could potentially be used by malicious websites ...

Fixed.

&gt;&gt; Source/WebKit/ChangeLog:51
&gt;&gt; +        within the SEP. So this field is absolutely useless.
&gt; 
&gt; What is the purpose of this paragraph? Are you saying that we don&apos;t implement the signature counter? If we do implement it (or perhaps just provide a constant value) I don&apos;t think we need to have this paragraph.

It explains why it is constantly zero in the implementation.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:335
&gt;&gt; +        OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)credentialIdQuery, nullptr);
&gt; 
&gt; Where is the result of this Copy going? That needs to be refcounted.

This is a query to confirm the SecItem presents, and therefore it doesn&apos;t ask the Keychain to return anything. Otherwise, returned values will be returned via the nullptr&apos;s parameter. We use the status to confirm the existence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628384</commentid>
    <comment_count>7</comment_count>
      <attachid>393180</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-10 14:27:38 -0700</bug_when>
    <thetext>Created attachment 393180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628750</commentid>
    <comment_count>8</comment_count>
      <attachid>393180</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-03-11 11:00:04 -0700</bug_when>
    <thetext>Comment on attachment 393180
Patch

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

&gt; Source/WebKit/ChangeLog:51
&gt; +        within the SEP. So this field is absolutely useless.

I suggest:

We hard code a zero value for &apos;signature counter&apos;. While this is a theoretically interesting technique for a RP to detect private key cloning, it is unlikely to be useful in practice. We store the private keys in our SEP. This counter would only be a meaningful protection if adversaries were able to extract private key data from the SEP without Apple noticing, but were not able to manipulate this counter to fool the RP.

&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:338
&gt; +        ASSERT(!status);

Should this be a RELEASE_ASSERT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628858</commentid>
    <comment_count>9</comment_count>
      <attachid>393180</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-11 14:50:32 -0700</bug_when>
    <thetext>Comment on attachment 393180
Patch

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

Thanks Brent for the r+.

&gt;&gt; Source/WebKit/ChangeLog:51
&gt;&gt; +        within the SEP. So this field is absolutely useless.
&gt; 
&gt; I suggest:
&gt; 
&gt; We hard code a zero value for &apos;signature counter&apos;. While this is a theoretically interesting technique for a RP to detect private key cloning, it is unlikely to be useful in practice. We store the private keys in our SEP. This counter would only be a meaningful protection if adversaries were able to extract private key data from the SEP without Apple noticing, but were not able to manipulate this counter to fool the RP.

Fixed.

&gt;&gt; Source/WebKit/UIProcess/WebAuthentication/Cocoa/LocalAuthenticator.mm:338
&gt;&gt; +        ASSERT(!status);
&gt; 
&gt; Should this be a RELEASE_ASSERT?

This code is only executed in debug build. So, I think ASSERT is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628859</commentid>
    <comment_count>10</comment_count>
      <attachid>393289</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-03-11 14:52:36 -0700</bug_when>
    <thetext>Created attachment 393289
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628884</commentid>
    <comment_count>11</comment_count>
      <attachid>393289</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-11 15:42:15 -0700</bug_when>
    <thetext>Comment on attachment 393289
Patch for landing

Clearing flags on attachment: 393289

Committed r258293: &lt;https://trac.webkit.org/changeset/258293&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393016</attachid>
            <date>2020-03-09 02:03:11 -0700</date>
            <delta_ts>2020-03-09 16:25:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183533-20200309020311.patch</filename>
            <type>text/plain</type>
            <size>138910</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjhjMTc2ZTgzMWQ1
ZjNmNDNiMDVlNjI5OTJkNGM1ZDU2Njk2Mi4uY2UyZWI0NmMxOWI0MDUzNTY0ODJhZDQ4MjA5MzYw
MGE4NzAxNzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAzLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBGb3Jt
YWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0Nzky
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzIHdpdGhpbiBleGlzdGluZyBmaWxlcy4KKworICAgICAg
ICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oOgorICAgICAgICBNb2RpZmllcyB0aGUg
Y29uc3RydWN0b3JzIHRvIGFjY2VwdCB1c2VyRW50aXR5Lm5hbWUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmg6CisgICAgICAgIEFkZHMgYSBGSVhNRS4KKwor
ICAgICAgICAqIHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9j
YWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjpkZWNvZGUp
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGw6CisgICAgICAgIE1vZGlmaWVzIHRoZSB0ZXN0IGluZnJhIHRvIHVzZSBDcmVkZW50aWFsIElE
IGFzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBjcmVkZW50aWFsIGluc3RlYWQgb2YKKyAg
ICAgICAgdGhlIG9yaWdpbmFsIGNvbWJpbmF0aW9uIG9mIFJQIElEIGFuZCB1c2VyIGhhbmRsZS4K
KwogMjAyMC0wMy0wNiAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU3NzYwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1OWY2
NmYxZjc3YzkwZWYwMzc2NmVhYzBhMTFkMjVjYWIwNjcwMjBjLi5jZDJmMzlkZWFkNTlhNGMzMmY2
YmVjNjc1MGJlNGFjNDYxZmI3N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIwLTAz
LTA5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBGb3JtYWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80MzM0NzkyNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGZvcm1hbGl6ZXMgdGhlIHNjaGVtYSBmb3IgdGhlIEtleWNoYWluIGFz
IGZvbGxvdzoKKyAgICAgICAga1NlY0F0dHJMYWJlbDogUlAgSUQKKyAgICAgICAga1NlY0F0dHJB
cHBsaWNhdGlvbkxhYmVsOiBDcmVkZW50aWFsIElEIChhdXRvLWdlbiBieSBLZXljaGFpbikKKyAg
ICAgICAga1NlY0F0dHJBcHBsaWNhdGlvblRhZzogeyAiaWQiOiBVc2VyRW50aXR5LmlkLCAibmFt
ZSI6IFVzZXJFbnRpdHkubmFtZSB9IChDQk9SIGVuY29kZWQpCisgICAgICAgIE5vdGVkLCB0aGUg
dmFsZSBvZiBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgYnkgdGhlIEtleWNoYWluLCB3aGljaCBpcyBhIFNIQS0xIGhhc2ggb2YKKyAgICAgICAgdGhl
IHB1YmxpYyBrZXkuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBTdGVwIDcuIGZyb20gaHR0
cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1tYWtlLWNyZWQsIHRoZSBmb2xsb3dpbmcg
ZmllbGRzIGFyZSBtYW5kYXRvcnkKKyAgICAgICAgMS4gcnBJZCAocnBFbnRpdHkuaWQpOworICAg
ICAgICAyLiB1c2VySGFuZGxlICh1c2VyRW50aXR5LmlkKSwgdGhpcyBpcyByZXF1aXJlZCBmb3Ig
YXV0aGVudGljYXRvcnMgdGhhdCBzdXBwb3J0IHJlc2lkZW50IGtleXM7CisgICAgICAgIDMuIGNy
ZWRlbnRpYWxJZC4KKworICAgICAgICBTb21lIG90aGVyIG9wdGlvbmFsIGZpZWxkcyBhcmU6Cisg
ICAgICAgIChmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jZGljdGRlZi1wdWJs
aWNrZXljcmVkZW50aWFscnBlbnRpdHkpCisgICAgICAgIDEuIHJwRW50aXR5Lm5hbWU7CisgICAg
ICAgIDIuIHJwRW5pdHR5Lmljb247CisgICAgICAgIChmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui93ZWJhdXRobi8jZGljdGRlZi1wdWJsaWNrZXljcmVkZW50aWFsdXNlcmVudGl0eSkKKyAgICAg
ICAgMy4gdXNlckVudGl0eS5kaXNwbGF5TmFtZTsKKyAgICAgICAgNC4gdXNlckVudGl0eS5uYW1l
OworICAgICAgICA1LiB1c2VyRW50aXR5Lmljb247CisgICAgICAgIChmcm9tIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi93ZWJhdXRobi8jc2lnbi1jb3VudGVyKQorICAgICAgICA2LiBzaWduYXR1cmUg
Y291bnRlci4KKworICAgICAgICBBbW9uZyB0aGUgc2l4IHBvc3NpYmxlIGZpZWxkcywgb25seSA0
LiBpcyBjaG9zZW4gdG8gc3RvcmUuIEhlcmUgaXMgd2h5OgorICAgICAgICBGb3IgcnBFbnRpdHks
IHJwRW50aXR5LmlkIHdoaWNoIGlzIGVpdGhlciB0aGUgZG9tYWluIG9yIHRoZSBlVExEICsgMSBv
ZiB0aGUgd2Vic2l0ZSBpcworICAgICAgICBzdWZmaWNpZW50IGVub3VnaCB0byBlaXRoZXIgY2xh
c3NpZnkgdGhlIGNyZWRlbnRpYWwgb3Igc2VydmluZyB0aGUgVUkuIEFsc28sIHRoaXMgaXMgb25s
eQorICAgICAgICB0aGUgdHJ1c3R3b3J0aHkgaW5mb3JtYXRpb24gdGhhdCB0aGUgVXNlckFnZW50
IHByb2R1Y2UuIE90aGVycyBjYW4gYmUgcG90ZW50aWFsbHkgdXNlZCBieQorICAgICAgICBtYWxp
Y2lvdXMgd2Vic2l0ZXMgZm9yIGF0dGFja2luZyB0aGUgS2V5Y2hhaW4gb3Igc3Bvb2ZpbmcvcGhp
c2hpbmcgdXNlcnMgd2hlbiBiZWluZyBkaXNwbGF5ZWQKKyAgICAgICAgaW4gdGhlIFVJLiBBbHNv
LCBycEVuaXR0eS5pY29uIGlzIGEgVVJMIHRvIHRoZSB3ZWJzaXRlJ3MgZmF2aWNvbiwgd2hpY2gg
aWYgbm90IGltcGxlbWVudGVkCisgICAgICAgIGNvcnJlY3RseSBjYW4gYmUgdXNlZCBmb3IgdHJh
Y2tpbmcuCisKKyAgICAgICAgRm9yIHVzZXJFbnRpdHksIHVzZXJFbnRpdHkubmFtZSBpcyB0aGUg
aHVtYW4gcmVhZGFibGUgdmVyc2lvbiBvZiB1c2VyRW50aXR5LmlkLCBhbmQgdGhlcmVmb3JlCisg
ICAgICAgIGlzIGNob3NlbiB0byBzdG9yZSBzdWNoIHRoYXQgbGF0ZXIgb24gV2ViS2l0IGNhbiBw
YXNzIGl0IHRvIFVJIGNsaWVudCB0byBoZWxwIHVzZXJzIGRpc2FtYmlndWF0ZQorICAgICAgICBk
aWZmZXJlbnQgY3JlZGVudGlhbHMuIEFuZCBpdCBpcyBuZWNlc3NhcnkgYXMgdXNlckVudGl0eS5p
ZCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBodW1hbgorICAgICAgICByZWFkYWJsZS4gT3RoZXJz
IGFyZSBhYmFuZG9uZWQgZm9yIHRoZSB2ZXJ5IHNhbWUgcmVhc29uIGFzIGFib3ZlLgorCisgICAg
ICAgIEZvciBzaWduYXR1cmUgY291bnRlciwgdGhpcyBpcyBhbiBpbnRlcmVzZXRpbmcgY291bnRl
ciBtZXRob2QgZm9yIFJQIHRvIGRldGVjdCBwcml2YXRlIGtleSBjbG9uaW5nLgorICAgICAgICBX
aGlsZSBpdCBzb3VuZHMgcGxhdXNpYmxlIGluIHBhcGVyLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUg
dXNlZnVsIGluIHByYWN0aWNlLiBGb3IgQXBwbGUncyBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yLCBwcml2YXRlIGtleXMgYXJlIHN0b3JlZCB3aXRoaW4gU0VQLiBJZiBhIHRoaXJkIHBh
cnR5IGNhbiBnZXQgYSBwcml2YXRlIGtleSBvdXQgZnJvbQorICAgICAgICB0aGUgU0VQIHdpdGhv
dXQgQXBwbGUgbm90aWNpbmcsIGFuZCBSUHMgbm90aWNlIGl0IGJlZm9yZSBBcHBsZS4gSXQgc2Vl
bXMgdG8gYmUgYSBtdWNoIGJpZ2dlciBjb25jZXJuCisgICAgICAgIGZvciBBcHBsZSB0aGFuIFJQ
cy4gUlBzIGhhdmUgbm8gcmVhc29ucyB0byBub3QgdHJ1c3QgQXBwbGUgd2lsbCBkbyBpdHMgam9i
LiBBbHNvLCBvdXIgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRvcnMgd2lsbCBwcm92aWRl
IGF0dGVzdGF0aW9ucyBzdWNoIHRoYXQgUlAgY2FuIHRydXN0IHByaXZhdGUga2V5cyBhcmUgYmVp
bmcgaGVsZCBzZWN1cmVseQorICAgICAgICB3aXRoaW4gdGhlIFNFUC4gU28gdGhpcyBmaWVsZCBp
cyBhYnNvbHV0ZWx5IHVzZWxlc3MuCisKKyAgICAgICAgSW4gdGVybXMgb2YgdGhlIHNjaGVtYSwK
KyAgICAgICAgMSkgUlAgSUQgaXMgbmVlZGVkIHRvIHF1ZXJ5IGFsbCBjcmVkZW50aWFscyByZWxh
dGVkLCBhbmQgdGhlcmVmb3JlIGl0IG5lZWRzIGEgY29sdW1uIGFuZCBrU2VjQXR0ckxhYmVsCisg
ICAgICAgIGlzIHN1cHBvc2VkIHRvIGJlIGh1bWFuIHJlYWRhYmxlOworICAgICAgICAyKSBrU2Vj
QXR0ckFwcGxpY2F0aW9uTGFiZWwgaXMgdGhlIGF1dG8gZ2VuZXJhdGVkIHByb2dyYW1tYXRpY2Fs
IGlkZW50aWZpZXIgZm9yIGEgU2VjSXRlbSwgYW5kCisgICAgICAgIHRoZXJlZm9yZSBpcyBzdWl0
YWJsZSBhcyB0aGUgY3JlZGVudGlhbCBJRC4gR2l2ZW4gdGhlIGlucHV0IHRvIHRoZSBTSEEtMSBp
cyBnZW5lcmF0ZWQgYnkgdXMsIGFuZAorICAgICAgICBpdCBpcyBvbmx5IG5lZWRlZCB0byBiZSBw
b3dlcmZ1bCBlbm91Z2ggdG8gYmUgdW5pcXVlIGFjcm9zcyB0aGUga2V5Y2hhaW4gd2l0aGluIGEg
ZGV2aWNlLCBhbmQgcG90ZW50aWFsbHkKKyAgICAgICAgdG8gYmUgdW5pcXVlIGFjcm9zcyBkaWZm
ZXJlbnQgb3RoZXIgY3JlZGVudGlhbCBJRCBmb3IgdGhlIHNhbWUgdXNlci4gVGhlIFNIQS0xIGNv
bGxpc2lvbiBhdHRhY2sKKyAgICAgICAgZG9lc24ndCBzZWVtIHZhbGlkIGhlcmUuCisgICAgICAg
IDMpIGtTZWNBdHRyQXBwbGljYXRpb25UYWcgaXMgdGhlIG9ubHkgb3RoZXIgY29sdW1uIEtleWNo
YWluIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gbW9kaWZ5LiBUaGVyZWZvcmUsCisgICAgICAgIFVz
ZXJFbnRpdHkuaWQgYW5kIFVzZXJFbnRpdHkubmFtZSBpcyBidW5kbGVkIHRvIHVzZSB0aGlzIHNs
b3QuIFRoZSByZWFzb24gdG8gdXNlIENCT1IgaGVyZSBpcyB0aGF0CisgICAgICAgIGl0IGlzIG1v
cmUgZnJpZW5kbHkgdGhlbiBKU09OIHRvIGVuY29kZSBiaW5hcmllcywgYW5kIGl0IGlzIHVzZWQg
d2lkZWx5IGluIFdlYkF1dGhuLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OmdldEV4aXN0aW5nQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjpmaWx0
ZXJSZXNwb25zZXMgY29uc3QpOgorCiAyMDIwLTAzLTA1ICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBEbyBub3QgcGVyZm9ybSBBdHRlc3Rh
dGlvbiB3aXRoIHR5cGUgaXMgJ25vbmUnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5j
cHAKaW5kZXggMzg4OTNlZTM2NjRlZWZiOTBlZDdiYTI0ZDNlNzdmODNiMzQzOTI3Zi4uMWMwYzA0
MWVjYjM3ZTkxODE2NmE1YWIzZWMwNGQ5ZWRmYWI1ZTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmNwcApAQCAtNDgsOSArNDgsOSBAQCBSZWY8QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25z
dAogICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJh
d0lkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgp
LCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVy
ZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBXVEZNb3ZlKHVzZXJoYW5kbGVCdWZmZXIpLCBX
VEY6Om51bGxvcHQpOwogfQogCi1SZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
cmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVm
IGFjY2Vzc0NvbnRyb2wpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3
SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nl
c3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVz
ZXJIYW5kbGUpLCBhY2Nlc3NDb250cm9sKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVzZXJI
YW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBhY2Nlc3NDb250cm9sKSk7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8dWlu
dDhfdD4mJiBhdXRoZW50aWNhdG9yRGF0YSkKQEAgLTY2LDkgKzY2LDEwIEBAIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxB
cnJheUJ1ZmZlcj4mCiB7CiB9CiAKLUF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29u
dHJvbCkKK0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYm
IHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29u
dHJvbCkKICAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAs
IG1fdXNlckhhbmRsZShXVEZNb3ZlKHVzZXJIYW5kbGUpKQorICAgICwgbV9uYW1lKFdURk1vdmUo
bmFtZSkpCiAgICAgLCBtX2FjY2Vzc0NvbnRyb2woYWNjZXNzQ29udHJvbCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJiMzA5Y2Y5MDJhNjRlNWNhODdhNDk3NGZi
YTk4ZjI4M2MzNWRjNDAuLjVkY2QwMzc1MGYyZWFmYzAwYjMzNmYxYWE2OGFlYzliNDUyN2M3OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFz
cyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgOiBwdWJsaWMgQXV0aGVudGljYXRvclJl
c3BvbnNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVy
PiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cz4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhf
dD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNl
ckhhbmRsZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUs
IFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIEFycmF5QnVmZmVy
KiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEu
Z2V0KCk7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1
ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwotICAg
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBT
dHJpbmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBUeXBlOjpBc3NlcnRpb247IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaAppbmRleCA2YTRjODNhYmEwMzFjMzhkMzc5ZTY2YmM5
M2VjNDdlNWYxOTMxNzYxLi41ZTUzODNmYWNmNWRmYmQyOWNmMTUzNTU3Y2E1OGIyOGRiOTk4ODQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1
ZS5oCkBAIC0xNjQsNiArMTY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaW1wbGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6U2ltcGxlVmFsdWU7IH0KICAgICBib29sIGlzQm9v
bCgpIGNvbnN0IHsgcmV0dXJuIGlzU2ltcGxlKCkgJiYgKG1fc2ltcGxlVmFsdWUgPT0gU2ltcGxl
VmFsdWU6OlRydWVWYWx1ZSB8fCBtX3NpbXBsZVZhbHVlID09IFNpbXBsZVZhbHVlOjpGYWxzZVZh
bHVlKTsgfQogCisgICAgLy8gRklYTUUoMTgzNTM1KTogQ29uc2lkZXJpbmcgYWRkaW5nICYmIGdl
dHRlciBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIC8vIFRoZXNlIHdpbGwgYWxsIGZhdGFs
bHkgYXNzZXJ0IGlmIHRoZSB0eXBlIGRvZXNuJ3QgbWF0Y2guCiAgICAgU2ltcGxlVmFsdWUgZ2V0
U2ltcGxlVmFsdWUoKSBjb25zdDsKICAgICBib29sIGdldEJvb2woKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgKaW5kZXggNjI5NTU4ZjdmYmRmMDEyZjFlNjQxM2Y3OWU1NDc3NWEzY2VkMjU0
MS4uNzljZjQ1ZjFhMjdkNmRkN2EyMzliZWRlMGY3MTRmZjFmYThjYjIzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24gewogICAgICAgICBTdHJpbmcgcHJpdmF0ZUtleUJhc2U2NDsKICAgICAg
ICAgU3RyaW5nIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDsKICAgICAgICAgU3RyaW5nIGludGVybWVk
aWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyBwcmVmZXJyZWRVc2VyaGFu
ZGxlQmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0Owog
CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExv
Y2FsQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBz
dHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgogdm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2Nh
bENvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVu
Y29kZXIgPDwgYWNjZXB0QXV0aGVudGljYXRpb24gPDwgYWNjZXB0QXR0ZXN0YXRpb24gPDwgcHJp
dmF0ZUtleUJhc2U2NCA8PCB1c2VyQ2VydGlmaWNhdGVCYXNlNjQgPDwgaW50ZXJtZWRpYXRlQ0FD
ZXJ0aWZpY2F0ZUJhc2U2NCA8PCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OworICAgIGVuY29k
ZXIgPDwgYWNjZXB0QXV0aGVudGljYXRpb24gPDwgYWNjZXB0QXR0ZXN0YXRpb24gPDwgcHJpdmF0
ZUtleUJhc2U2NCA8PCB1c2VyQ2VydGlmaWNhdGVCYXNlNjQgPDwgaW50ZXJtZWRpYXRlQ0FDZXJ0
aWZpY2F0ZUJhc2U2NCA8PCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNTAsMTEgKzE1MCwxMSBAQCBPcHRpb25hbDxNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJB
dXRoZW50aQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pbnRlcm1l
ZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0ID0gV1RGTW92ZSgqaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NCk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHByZWZlcnJlZFVzZXJoYW5kbGVC
YXNlNjQ7Ci0gICAgZGVjb2RlciA+PiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OwotICAgIGlm
ICghcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICBPcHRpb25hbDxTdHJpbmc+IHByZWZl
cnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKKyAgICBkZWNvZGVyID4+IHByZWZlcnJlZENyZWRlbnRp
YWxJZEJhc2U2NDsKKyAgICBpZiAoIXByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXN1bHQucHJlZmVycmVkVXNlcmhhbmRsZUJh
c2U2NCA9IFdURk1vdmUoKnByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQpOworICAgIHJlc3VsdC5w
cmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQgPSBXVEZNb3ZlKCpwcmVmZXJyZWRDcmVkZW50aWFs
SWRCYXNlNjQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aWRsCmluZGV4IGFkMTM5MzQ5YWQyZmMxNWNhZDgzZjZiMmQxNmIwODM4NjAzZGVlMzYuLjIwOTk0
MzFjNjA0MTA2NDRmZWUyOWU2NmExMzc3MjE4ZTFjOGRiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmlkbApAQCAtNzYsNyArNzYsNyBAQAogICAgIERPTVN0cmluZyBwcml2YXRlS2V5QmFzZTY0
OwogICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgRE9NU3RyaW5nIGlu
dGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7Ci0gICAgRE9NU3RyaW5nIHByZWZlcnJlZFVz
ZXJoYW5kbGVCYXNlNjQ7CisgICAgRE9NU3RyaW5nIHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2
NDsKIH07CiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKaW5kZXgg
MjhhZWVjOGFkODQ0MDlmMDI0ZWUwNDIzZTY5MWY0YTg4MjZlZjUyYi4uMzUxOGM5YWZhNzhlNGY2
NzQwOTYxZmM4OTE3OGFmMWI4NjBiZDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLmgKQEAgLTY3LDEwICs2NywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGlu
dWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0
aW9uLCBMQUNvbnRleHQgKik7CiAKICAgICB2b2lkIHJlY2VpdmVFeGNlcHRpb24oV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSYmLCBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA9IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpMQUVycm9yKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUR1cGxpY2F0ZUNyZWRl
bnRpYWwoKSBjb25zdDsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SW5pdCB9OwogICAg
IFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICAvLyBGSVhNRSgx
ODM1MzQpOiBDb21iaW5lIHRoZXNlIHR3by4KICAgICBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiBtX2Fzc2VydGlvblJlc3BvbnNlczsKKyAgICBW
ZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+IG1fZXhp
c3RpbmdDcmVkZW50aWFsczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDQ3N2QzZDM0NTVjNWI3NzZjNWU3
ZjA5MDcwMzY3MjIyMmM3NWQ0MTAuLjliNmE4OTA2NjIxZmM3YjIzZWM3Nzc5OTNiOGFlMmE4OWIw
ODg5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTMx
LDYgKzMxLDcgQEAKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNv
cmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NCT1JS
ZWFkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9FeGNlcHRpb25EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIENCT1IgPSBjYm9yOjpDQk9SVmFsdWU7
CiAKIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbCB7CiAKQEAgLTU1LDEyICs1
NywxNSBAQCBjb25zdCB1aW50OF90IG1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAwMTAxOyAv
LyBVUCwgVVYgYW5kIEFUIGFyZSBzZXQuCiBjb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZsYWdz
ID0gMGIwMDAwMDEwMTsgLy8gVVAgYW5kIFVWIGFyZSBzZXQuCiAvLyBDcmVkZW50aWFsIElEIGlz
IGN1cnJlbnRseSBTSEEtMSBvZiB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5LgogY29uc3Qg
dWludDE2X3QgY3JlZGVudGlhbElkTGVuZ3RoID0gMjA7Citjb25zdCBjaGFyKiBjb25zdCB1c2Vy
RW50aXR5SWRLZXkgPSAiaWQiOworY29uc3QgY2hhciogY29uc3QgdXNlckVudGl0eU5hbWVLZXkg
PSAibmFtZSI7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBlbXB0eVRyYW5zcG9ydHNPckNvbnRhaW4o
Y29uc3QgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiB0cmFuc3BvcnRzLCBBdXRoZW50
aWNhdG9yVHJhbnNwb3J0IHRhcmdldCkKIHsKICAgICByZXR1cm4gdHJhbnNwb3J0cy5pc0VtcHR5
KCkgPyB0cnVlIDogdHJhbnNwb3J0cy5jb250YWlucyh0YXJnZXQpOwogfQogCisvLyBGSVhNRSgx
ODM1MzQpOiBGaW5kIGEgYmV0dGVyIHdheSBvZiBjb21wYXJpbmcgY3JlZGVudGlhbCBpZC4gRG9p
bmcgaXQgd2l0aCBhcnJheSBzZWVtcyBmaW5lIGdpdmVuIHRoZSBsaXN0IHNob3VsZCBiZSBzbWFs
bC4KIHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmc+IHByb2R1Y2VIYXNoU2V0KGNvbnN0IFZl
Y3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4mIGNyZWRlbnRpYWxEZXNjcmlwdG9y
cykKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gcmVzdWx0OwpAQCAtOTgsNiArMTAzLDExIEBAIHN0
YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkK
ICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpOwogfQogCitzdGF0aWMgaW5saW5lIFJl
ZjxBcnJheUJ1ZmZlcj4gdG9BcnJheUJ1ZmZlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEp
Cit7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKK30KKwogLy8gRklYTUUoPHJkYXI6Ly9wcm9ibGVtLzYwMTA4MTMxPik6IFJlbW92ZSB0
aGlzIHdoaXRlbGlzdCBvbmNlIHRlc3RpbmcgaXMgY29tcGxldGUuCiBzdGF0aWMgY29uc3QgSGFz
aFNldDxTdHJpbmc+JiB3aGl0ZWxpc3RlZFJwSWQoKQogewpAQCAtMTA5LDYgKzExOSw1NyBAQCBz
dGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmc+JiB3aGl0ZWxpc3RlZFJwSWQoKQogICAgIHJldHVy
biB3aGl0ZWxpc3RlZFJwSWQ7CiB9CiAKK3N0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKGNvbnN0
IFN0cmluZyYgcnBJZCkKK3sKKyAgICAvLyBTZWFyY2ggS2V5Y2hhaW4gZm9yIGV4aXN0aW5nIGNy
ZWRlbnRpYWwgbWF0Y2hlZCB0aGUgUlAgSUQuCisgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9IEB7
CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChpZClr
U2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgIChp
ZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6
IEBZRVMsCisgICAgICAgIChpZClrU2VjTWF0Y2hMaW1pdDogKGlkKWtTZWNNYXRjaExpbWl0QWxs
LAorI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1Vz
ZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0
ck5vTGVnYWN5OiBAWUVTCisjZW5kaWYKKyAgICB9OworICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVz
QXJyYXlSZWYgPSBudWxscHRyOworICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0
Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJl
Zik7CisgICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gcmV0YWluQXR0cmlidXRlc0FycmF5
ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYpOworICAgIE5TQXJyYXkgKm5zQXR0cmlidXRl
c0FycmF5ID0gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWY7CisKKyAgICBWZWN0b3I8UmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0F0dHJpYnV0ZXNBcnJheS5jb3VudCk7CisgICAgZm9yIChO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgaW4gbnNBdHRyaWJ1dGVzQXJyYXkpIHsKKyAgICAgICAg
YXV0byBkZWNvZGVkUmVzcG9uc2UgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKHRvVmVjdG9yKGF0
dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWddKSk7CisgICAgICAgIGlmICghZGVj
b2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgfQorICAgICAgICBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRSZXNwb25zZS0+
Z2V0TWFwKCk7CisKKyAgICAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUih1c2Vy
RW50aXR5SWRLZXkpKTsKKyAgICAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAg
ICAgYXV0byYgdXNlckhhbmRsZSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworCisgICAg
ICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKHVzZXJFbnRpdHlOYW1lS2V5KSk7CisgICAg
ICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc1N0cmluZygp
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAgYXV0byYgdXNlcm5hbWUgPSBpdC0+
c2Vjb25kLmdldFN0cmluZygpOworCisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUodG9BcnJheUJ1ZmZlcihhdHRyaWJ1
dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwgdG9BcnJheUJ1ZmZlcih1c2VySGFu
ZGxlKSwgU3RyaW5nKHVzZXJuYW1lKSwgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpYXR0
cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSkpOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExvY2FsQXV0
aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+
JiYgY29ubmVjdGlvbikKQEAgLTEzNiwzNyArMTk3LDIzIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgfQogCiAgICAgLy8gU3RlcCAzLgorICAgIGF1dG8g
ZXhpc3RpbmdDcmVkZW50aWFscyA9IGdldEV4aXN0aW5nQ3JlZGVudGlhbHMoY3JlYXRpb25PcHRp
b25zLnJwLmlkKTsKKyAgICBpZiAoIWV4aXN0aW5nQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgcmVj
ZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IGV4
aXN0aW5nIGNyZWRlbnRpYWxzIikgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9l
eGlzdGluZ0NyZWRlbnRpYWxzID0gV1RGTW92ZSgqZXhpc3RpbmdDcmVkZW50aWFscyk7CisKICAg
ICBhdXRvIGV4Y2x1ZGVDcmVkZW50aWFsSWRzID0gcHJvZHVjZUhhc2hTZXQoY3JlYXRpb25PcHRp
b25zLmV4Y2x1ZGVDcmVkZW50aWFscyk7CiAgICAgaWYgKCFleGNsdWRlQ3JlZGVudGlhbElkcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgLy8gU2VhcmNoIEtleWNoYWluIGZvciB0aGUgUlAgSUQuCi0g
ICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAo
aWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJl
bDogY3JlYXRpb25PcHRpb25zLnJwLmlkLAotICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5BdHRy
aWJ1dGVzOiBAWUVTLAotICAgICAgICAgICAgKGlkKWtTZWNNYXRjaExpbWl0OiAoaWQpa1NlY01h
dGNoTGltaXRBbGwsCi0jaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAg
ICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKLSNlbHNlCi0gICAg
ICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwotI2VuZGlmCi0gICAgICAgIH07Ci0g
ICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOwotICAgICAgICBP
U1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25h
cnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwotICAgICAgICBpZiAoc3RhdHVzICYm
IHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgICAgIHJlY2VpdmVFeGNl
cHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IHF1ZXJ5IEtleWNoYWlu
OiAiLCBzdGF0dXMpIH0pOworICAgICAgICBpZiAobm90Rm91bmQgIT0gbV9leGlzdGluZ0NyZWRl
bnRpYWxzLmZpbmRNYXRjaGluZyhbJmV4Y2x1ZGVDcmVkZW50aWFsSWRzXSAoYXV0byYgY3JlZGVu
dGlhbCkgeworICAgICAgICAgICAgYXV0byogcmF3SWQgPSBjcmVkZW50aWFsLT5yYXdJZCgpOwor
ICAgICAgICAgICAgQVNTRVJUKHJhd0lkKTsKKyAgICAgICAgICAgIHJldHVybiBleGNsdWRlQ3Jl
ZGVudGlhbElkcy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
cmF3SWQtPmRhdGEoKSksIHJhd0lkLT5ieXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgfSkpIHsKKyAg
ICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBv
bmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMg
bGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSwgV2ViQXV0
aGVudGljYXRpb25TdGF0dXM6OkxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hlZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJy
YXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7Ci0KLSAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiByZXR1cm4gZGlmZmVyZW50IGVycm9y
IGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgotICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqbnNB
dHRyaWJ1dGVzIGluIChOU0FycmF5ICopYXR0cmlidXRlc0FycmF5UmVmKSB7Ci0gICAgICAgICAg
ICBOU0RhdGEgKm5zQ3JlZGVudGlhbElkID0gbnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxp
Y2F0aW9uTGFiZWxdOwotICAgICAgICAgICAgaWYgKGV4Y2x1ZGVDcmVkZW50aWFsSWRzLmNvbnRh
aW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuc0NyZWRlbnRpYWxJZC5i
eXRlcyksIG5zQ3JlZGVudGlhbElkLmxlbmd0aCkpKSB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1h
dGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0
Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1
czo6TEFFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaGVkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvLyBTdGVwIDYuCkBAIC0y
MjgsMzUgKzI3NSwyMiBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3Jl
ZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRklYTUUoMTgzNTMzKTogQSBzaW5nbGUga1NlY0NsYXNzS2V5IGl0
ZW0gY291bGRuJ3Qgc3RvcmUgYWxsIG1ldGEgZGF0YS4gVGhlIGZvbGxvd2luZyBzY2hlbWEgaXMg
YSB0ZW50YXRpdmUgc29sdXRpb24KLSAgICAvLyB0byBhY2NvbW1vZGF0ZSB0aGUgbW9zdCBpbXBv
cnRhbnQgbWV0YSBkYXRhLCBpLmUuIFJQIElELCBDcmVkZW50aWFsIElELCBhbmQgdXNlcmhhbmRs
ZS4KKyAgICAvLyBIZXJlIGlzIHRoZSBrZXljaGFpbiBzY2hlbWEuCiAgICAgLy8ga1NlY0F0dHJM
YWJlbDogUlAgSUQKICAgICAvLyBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IENyZWRlbnRpYWwg
SUQgKGF1dG8tZ2VuIGJ5IEtleWNoYWluKQotICAgIC8vIGtTZWNBdHRyQXBwbGljYXRpb25UYWc6
IHVzZXJoYW5kbGUKKyAgICAvLyBrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiB7ICJpZCI6IFVzZXJF
bnRpdHkuaWQsICJuYW1lIjogVXNlckVudGl0eS5uYW1lIH0gKENCT1IgZW5jb2RlZCkKICAgICAv
LyBOb3RlZCwgdGhlIHZhbGUgb2Yga1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsIGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBLZXljaGFpbiwgd2hpY2ggaXMgYSBTSEEtMSBoYXNoIG9m
Ci0gICAgLy8gdGhlIHB1YmxpYyBrZXkuIFdlIGJvcnJvdyBpdCBkaXJlY3RseSBmb3Igbm93IHRv
IHdvcmthcm91bmQgdGhlIHN0YXRlZCBsaW1pdGF0aW9ucy4KKyAgICAvLyB0aGUgcHVibGljIGtl
eS4KICAgICBjb25zdCBhdXRvJiBzZWNBdHRyTGFiZWwgPSBjcmVhdGlvbk9wdGlvbnMucnAuaWQ7
Ci0gICAgYXV0byBzZWNBdHRyQXBwbGljYXRpb25UYWcgPSB0b05TRGF0YShjcmVhdGlvbk9wdGlv
bnMudXNlci5pZFZlY3Rvcik7CiAKLSAgICAvLyBTdGVwIDcuNS4KLSAgICAvLyBGYWlsdXJlcyBh
ZnRlciB0aGlzIHBvaW50IGNvdWxkIGJsb2NrIHVzZXJzJyBhY2NvdW50cyBmb3JldmVyLiBTaG91
bGQgd2UgZm9sbG93IHRoZSBzcGVjPwotICAgIE5TRGljdGlvbmFyeSogZGVsZXRlUXVlcnkgPSBA
ewotICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAotICAgICAgICAoaWQp
a1NlY0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAotICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNh
dGlvblRhZzogc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpLAotI2lmIEhBVkUoREFUQV9QUk9U
RUNUSU9OX0tFWUNIQUlOKQotICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hh
aW46IEBZRVMKLSNlbHNlCi0gICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCi0jZW5k
aWYKLSAgICB9OwotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilkZWxldGVRdWVyeSk7Ci0gICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMg
IT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7Ci0gICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGRlbGV0ZSBvbGRlciBjcmVkZW50aWFsOiAi
LCBzdGF0dXMpIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNib3I6OkNCT1JWYWx1
ZTo6TWFwVmFsdWUgdXNlckVudGl0eU1hcDsKKyAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JW
YWx1ZSh1c2VyRW50aXR5SWRLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMu
dXNlci5pZFZlY3Rvcik7CisgICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUodXNlckVu
dGl0eU5hbWVLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1l
KTsKKyAgICBhdXRvIHVzZXJFbnRpdHkgPSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpD
Qk9SVmFsdWUoV1RGTW92ZSh1c2VyRW50aXR5TWFwKSkpOworICAgIEFTU0VSVCh1c2VyRW50aXR5
KTsKKyAgICBhdXRvIHNlY0F0dHJBcHBsaWNhdGlvblRhZyA9IHRvTlNEYXRhKCp1c2VyRW50aXR5
KTsKIAotICAgIC8vIFN0ZXAgNy4xLTcuNC4KKyAgICAvLyBTdGVwIDcuCiAgICAgLy8gVGhlIGFi
b3ZlLXRvLWNyZWF0ZSBwcml2YXRlIGtleSB3aWxsIGJlIGluc2VydGVkIGludG8ga2V5Y2hhaW4g
d2hpbGUgdXNpbmcgU0VQLgogICAgIGF1dG8gcHJpdmF0ZUtleSA9IG1fY29ubmVjdGlvbi0+Y3Jl
YXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoY29udGV4dCwgYWNjZXNzQ29udHJvbFJlZiwgc2VjQXR0
ckxhYmVsLCBzZWNBdHRyQXBwbGljYXRpb25UYWcuZ2V0KCkpOwogICAgIGlmICghcHJpdmF0ZUtl
eSkgewpAQCAtMjY0LDMwICsyOTgsNDMgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHB1YmxpY0tleURh
dGFSZWY7CisgICAgeworICAgICAgICBhdXRvIHB1YmxpY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q29w
eVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSk7CisgICAgICAgIENGRXJyb3JSZWYgZXJyb3JS
ZWYgPSBudWxscHRyOworICAgICAgICBwdWJsaWNLZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlD
b3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJsaWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwor
ICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CisgICAgICAgIGlm
IChlcnJvclJlZikgeworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJv
ciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZXhwb3J0IHRoZSBwdWJsaWMga2V5OiAiLCBTdHJpbmco
KChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoKChOU0RhdGEgKilwdWJsaWNL
ZXlEYXRhUmVmLmdldCgpKS5sZW5ndGggPT0gKDEgKyAyICogRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgpKTsgLy8gMDQgfCBYIHwgWQorICAgIH0KKyAgICBOU0RhdGEgKm5zUHVibGljS2V5RGF0YSA9
IChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpOworCisgICAgLy8gUXVlcnkgY3JlZGVu
dGlhbElkIGluIHRoZSBrZXljaGFpbiBjb3VsZCBiZSByYWN5IGFzIGl0IGlzIHRoZSBvbmx5IHVu
aXF1ZSBpZGVudGlmaWVyCisgICAgLy8gb2YgdGhlIGtleSBpdGVtLiBJbnN0ZWFkIHdlIGNhbGN1
bGF0ZSB0aGF0LCBhbmQgZXhhbWluZSBpdHMgZXF1YWl0eSBpbiBERUJVRyBidWlsZC4KICAgICBW
ZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOwogICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xKTsKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhuc1B1YmxpY0tleURhdGEuYnl0ZXMs
IG5zUHVibGljS2V5RGF0YS5sZW5ndGgpOworICAgICAgICBjcmVkZW50aWFsSWQgPSBkaWdlc3Qt
PmNvbXB1dGVIYXNoKCk7CisKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIE5TRGljdGlvbmFyeSAq
Y3JlZGVudGlhbElkUXVlcnkgPSBAewogICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtT
ZWNDbGFzc0tleSwKICAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0
dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0
ckxhYmVsLAotICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHNlY0F0dHJB
cHBsaWNhdGlvblRhZy5nZXQoKSwKLSAgICAgICAgICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRl
czogQFlFUywKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNE
YXRhKGNyZWRlbnRpYWxJZCkuZ2V0KCksCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hB
SU4pCiAgICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMK
ICNlbHNlCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCiAg
ICAgICAgIH07Ci0gICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzUmVmID0gbnVsbHB0cjsKLSAg
ICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCAmYXR0cmlidXRlc1JlZik7Ci0gICAgICAg
IGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJy
b3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGdldCBDcmVkZW50aWFsIElEOiAiLCBzdGF0dXMpIH0p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gcmV0YWluQXR0
cmlidXRlcyA9IGFkb3B0Q0YoYXR0cmlidXRlc1JlZik7Ci0KLSAgICAgICAgTlNEaWN0aW9uYXJ5
ICpuc0F0dHJpYnV0ZXMgPSAoTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlc1JlZjsKLSAgICAgICAg
Y3JlZGVudGlhbElkID0gdG9WZWN0b3IobnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0
aW9uTGFiZWxdKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGlu
ZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCBudWxscHRyKTsK
KyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworI2VuZGlmIC8vIE5ERUJVRwogICAgIH0KIAogICAg
IC8vIFN0ZXAgMTAuCkBAIC0yOTgsMjQgKzM0NSwxMSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3ND
bwogICAgIC8vIGNyZWRlbnRpYWxQdWJsaWNLZXkKICAgICBWZWN0b3I8dWludDhfdD4gY29zZVB1
YmxpY0tleTsKICAgICB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHB1YmxpY0tleURh
dGFSZWY7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gYWRvcHRDRihT
ZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkuZ2V0KCkpKTsKLSAgICAgICAgICAgIENGRXJy
b3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOwotICAgICAgICAgICAgcHVibGljS2V5RGF0YVJlZiA9
IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVibGljS2V5LmdldCgp
LCAmZXJyb3JSZWYpKTsKLSAgICAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVy
cm9yUmVmKTsKLSAgICAgICAgICAgIGlmIChlcnJvclJlZikgewotICAgICAgICAgICAgICAgIHJl
Y2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9y
dCB0aGUgcHVibGljIGtleTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKSkgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgQVNTRVJUKCgoTlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSku
bGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8
IFkKLSAgICAgICAgfQotCiAgICAgICAgIC8vIENPU0UgRW5jb2RpbmcKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHgoRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOwotICAgICAgICBbKE5TRGF0YSAq
KXB1YmxpY0tleURhdGFSZWYuZ2V0KCkgZ2V0Qnl0ZXM6IHguZGF0YSgpIHJhbmdlOk5TTWFrZVJh
bmdlKDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CisgICAgICAgIFtuc1B1YmxpY0tleURh
dGEgZ2V0Qnl0ZXM6IHguZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEsIEVTMjU2RmllbGRFbGVt
ZW50TGVuZ3RoKV07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB5KEVTMjU2RmllbGRFbGVtZW50
TGVuZ3RoKTsKLSAgICAgICAgWyhOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpIGdldEJ5
dGVzOiB5LmRhdGEoKSByYW5nZTpOU01ha2VSYW5nZSgxICsgRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CisgICAgICAgIFtuc1B1YmxpY0tleURhdGEg
Z2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEgKyBFUzI1NkZpZWxkRWxlbWVu
dExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKICAgICAgICAgY29zZVB1YmxpY0tl
eSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUoeCksIFdURk1vdmUoeSkpOwog
ICAgIH0KICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zODMyMDUxMik6IERlZmluZSBBcHBs
ZSBBQUdVSUQuCkBAIC0zMjYsNiArMzYwLDggQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KIAog
ICAgIC8vIFNraXAgQXBwbGUgQXR0ZXN0YXRpb24gZm9yIG5vbmUgYXR0ZXN0YXRpb24sIGFuZCBu
b24gd2hpdGVsaXN0ZWQgUlAgSUQgZm9yIG5vdy4KICAgICBpZiAoY3JlYXRpb25PcHRpb25zLmF0
dGVzdGF0aW9uID09IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUgfHwgIXdo
aXRlbGlzdGVkUnBJZCgpLmNvbnRhaW5zKGNyZWF0aW9uT3B0aW9ucy5ycC5pZCkpIHsKKyAgICAg
ICAgZGVsZXRlRHVwbGljYXRlQ3JlZGVudGlhbCgpOworCiAgICAgICAgIGF1dG8gYXR0ZXN0YXRp
b25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiIiwg
eyB9LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKICAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVk
ZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM3MCw2
ICs0MDYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyQXR0ZXN0ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgYwogICAgIH0KICAgICBhdXRvIGF0dGVz
dGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwg
ImFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9u
cy5hdHRlc3RhdGlvbik7CiAKKyAgICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7CiAgICAg
cmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
cmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CiB9CiAKQEAgLTM5Miw1MSArNDI5LDMy
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgIH0KIAogICAg
IC8vIFNlYXJjaCBLZXljaGFpbiBmb3IgdGhlIFJQIElELgotICAgIE5TRGljdGlvbmFyeSAqcXVl
cnkgPSBAewotICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAotICAgICAg
ICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAotICAg
ICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcmVxdWVzdE9wdGlvbnMucnBJZCwKLSAgICAgICAgKGlk
KWtTZWNSZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAotICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6
IChpZClrU2VjTWF0Y2hMaW1pdEFsbCwKLSNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJ
TikKLSAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCi0jZWxz
ZQotICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwotI2VuZGlmCi0gICAgfTsKLSAg
ICBDRlR5cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsKLSAgICBPU1N0YXR1cyBz
dGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVl
cnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwotICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVy
clNlY0l0ZW1Ob3RGb3VuZCkgewotICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVy
cm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsK
KyAgICBhdXRvIGV4aXN0aW5nQ3JlZGVudGlhbHMgPSBnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKHJl
cXVlc3RPcHRpb25zLnJwSWQpOworICAgIGlmICghZXhpc3RpbmdDcmVkZW50aWFscykgeworICAg
ICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBnZXQgZXhpc3RpbmcgY3JlZGVudGlhbHMiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5
UmVmKTsKKyAgICBtX2V4aXN0aW5nQ3JlZGVudGlhbHMgPSBXVEZNb3ZlKCpleGlzdGluZ0NyZWRl
bnRpYWxzKTsKKworICAgIGZvciAoYXV0byYgY3JlZGVudGlhbCA6IG1fZXhpc3RpbmdDcmVkZW50
aWFscykgeworICAgICAgICBpZiAoYWxsb3dDcmVkZW50aWFsSWRzLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy5hZGQoY3JlZGVu
dGlhbC5jb3B5UmVmKCkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAK
LSAgICBOU0FycmF5ICppbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcyA9IG5pbDsKLSAg
ICBpZiAocmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkpCi0gICAgICAg
IGludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzID0gKE5TQXJyYXkgKilhdHRyaWJ1dGVz
QXJyYXlSZWY7Ci0gICAgZWxzZSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6YWxsb3dDcmVkZW50aWFsSWRzLnNpemUo
KV07Ci0gICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkg
KilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsKLSAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFs
SWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07Ci0gICAgICAg
ICAgICBpZiAoYWxsb3dDcmVkZW50aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihuc0NyZWRlbnRpYWxJZC5ieXRlcyksIG5zQ3JlZGVudGlhbElkLmxl
bmd0aCkpKQotICAgICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zQXR0cmlidXRlc107
CisgICAgICAgIGF1dG8qIHJhd0lkID0gY3JlZGVudGlhbC0+cmF3SWQoKTsKKyAgICAgICAgaWYg
KGFsbG93Q3JlZGVudGlhbElkcy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4ocmF3SWQtPmRhdGEoKSksIHJhd0lkLT5ieXRlTGVuZ3RoKCkpKSkgeworICAgICAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy5hZGQoY3JlZGVudGlh
bC5jb3B5UmVmKCkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgfQotICAgICAgICBpbnRlcnNlY3RlZENyZWRlbnRp
YWxzQXR0cmlidXRlcyA9IHJlc3VsdDsKICAgICB9Ci0gICAgaWYgKCFpbnRlcnNlY3RlZENyZWRl
bnRpYWxzQXR0cmlidXRlcy5jb3VudCkgeworICAgIGlmIChtX2Fzc2VydGlvblJlc3BvbnNlcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwg
Ik5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRl
bnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LTcuIFVzZXIg
Y29uc2VudCBpcyBpbXBsaWNpdGx5IGFjcXVpcmVkIGJ5IHNlbGVjdGluZyByZXNwb25zZXMuCi0g
ICAgZm9yIChOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZSA6IGludGVyc2VjdGVkQ3JlZGVudGlhbHNB
dHRyaWJ1dGVzKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hc3NlcnRpb25SZXNwb25z
ZXMuYWRkKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKAotICAgICAgICAg
ICAgdG9BcnJheUJ1ZmZlcihhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0p
LAotICAgICAgICAgICAgdG9BcnJheUJ1ZmZlcihhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25UYWddKSwKLSAgICAgICAgICAgIChfX2JyaWRnZSBTZWNBY2Nlc3NDb250cm9sUmVmKWF0
dHJpYnV0ZVsoaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSkpOwotICAgICAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KICAgICBtX2Nvbm5l
Y3Rpb24tPmZpbHRlclJlc3BvbnNlcyhtX2Fzc2VydGlvblJlc3BvbnNlcyk7CiAKICAgICBpZiAo
YXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNlcnZlcigpKSB7CkBAIC01NDEsNiArNTU5LDMzIEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRhdGEm
JiBleGNlcHRpb24sIFdlYkF1dGhlbnRpCiAgICAgcmV0dXJuOwogfQogCit2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6ZGVsZXRlRHVwbGljYXRlQ3JlZGVudGlhbCgpIGNvbnN0Cit7CisgICAgdXNp
bmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOworCisgICAgYXV0byYgY3Jl
YXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICBtX2V4aXN0aW5nQ3JlZGVudGlhbHMuZmlu
ZE1hdGNoaW5nKFtjcmVhdGlvbk9wdGlvbnNdIChhdXRvJiBjcmVkZW50aWFsKSB7CisgICAgICAg
IGF1dG8qIHVzZXJIYW5kbGUgPSBjcmVkZW50aWFsLT51c2VySGFuZGxlKCk7CisgICAgICAgIEFT
U0VSVCh1c2VySGFuZGxlKTsKKyAgICAgICAgaWYgKG1lbWNtcCh1c2VySGFuZGxlLT5kYXRhKCks
IGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxl
bmd0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBOU0RpY3Rpb25h
cnkqIGRlbGV0ZVF1ZXJ5ID0gQHsKKyAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2Vj
Q2xhc3NLZXksCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiB0b05T
RGF0YShjcmVkZW50aWFsLT5yYXdJZCgpKS5nZXQoKSwKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElP
Tl9LRVlDSEFJTikKKyAgICAgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFp
bjogQFlFUworI2Vsc2UKKyAgICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCisj
ZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0
ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKKyAgICAgICAgaWYgKHN0
YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKQorICAgICAgICAgICAgTE9HX0VS
Uk9SKG1ha2VTdHJpbmcoIkNvdWxkbid0IGRlbGV0ZSBvbGRlciBjcmVkZW50aWFsOiAiX3MsIHN0
YXR1cykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggYjFjOTg3NDc5ZjRk
N2NjMWE3NDg3NTkxMzFjODYyNDNlYjY3NmU2Ny4uYjVjYWQwN2MxNjc1YzJjY2RiODEyZmMxYzc1
MTczNjZiOWZhODExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQpAQCAtMTE1LDE2ICsxMTUsMTYgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRBdHRl
c3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqLCBOU0RhdGEgKiwgQXR0ZXN0YXQKIAogdm9pZCBN
b2NrTG9jYWxDb25uZWN0aW9uOjpmaWx0ZXJSZXNwb25zZXMoSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcykgY29uc3QKIHsKLSAg
ICBjb25zdCBhdXRvJiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0ID0gbV9jb25maWd1cmF0aW9u
LmxvY2FsLT5wcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OwotICAgIGlmIChwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0LmlzRW1wdHkoKSkKKyAgICBjb25zdCBhdXRvJiBwcmVmZXJyZWRDcmVkZW50
aWFsSWRCYXNlNjQgPSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZENyZWRlbnRpYWxJ
ZEJhc2U2NDsKKyAgICBpZiAocHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpdHIgPSByZXNwb25zZXMuYmVnaW4oKTsKICAg
ICBmb3IgKDsgaXRyICE9IHJlc3BvbnNlcy5lbmQoKTsgKytpdHIpIHsKLSAgICAgICAgYXV0byog
dXNlckhhbmRsZSA9IGl0ci0+Z2V0KCkudXNlckhhbmRsZSgpOwotICAgICAgICBBU1NFUlQodXNl
ckhhbmRsZSk7Ci0gICAgICAgIGF1dG8gdXNlcmhhbmRsZUJhc2U2NCA9IGJhc2U2NEVuY29kZSh1
c2VySGFuZGxlLT5kYXRhKCksIHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgIGlm
ICh1c2VyaGFuZGxlQmFzZTY0ID09IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQpCisgICAgICAg
IGF1dG8qIHJhd0lkID0gaXRyLT5nZXQoKS5yYXdJZCgpOworICAgICAgICBBU1NFUlQocmF3SWQp
OworICAgICAgICBhdXRvIHJhd0lkQmFzZTY0ID0gYmFzZTY0RW5jb2RlKHJhd0lkLT5kYXRhKCks
IHJhd0lkLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBpZiAocmF3SWRCYXNlNjQgPT0gcHJlZmVy
cmVkQ3JlZGVudGlhbElkQmFzZTY0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGF1
dG8gcmVzcG9uc2UgPSByZXNwb25zZXMudGFrZShpdHIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYxNzZhYTRmM2NiYzkzOGFhZGYwMjA2Mzc2
ZGQzNjM2YTg4ZjZiNDguLmUxZTc3ZWE3YTE3OTEyZThmNDMzMTcxODQ0NDcyOWRkN2RiZTVhMGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMC0wMy0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJBdXRobl0gRm9ybWFsaXplIHRoZSBLZXljaGFpbiBzY2hlbWEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzUzMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZXMgdGhlIHRlc3QgaW5mcmEgdG8gdXNlIENy
ZWRlbnRpYWwgSUQgYXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGNyZWRlbnRpYWwgaW5z
dGVhZCBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgY29tYmluYXRpb24gb2YgUlAgSUQgYW5kIHVz
ZXIgaGFuZGxlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjbGVh
blVwS2V5Y2hhaW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNo
YWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4p
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbik6CisK
IDIwMjAtMDMtMDYgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgX1dLUmVzb3VyY2VMb2FkSW5mby5yZXNvdXJjZVR5cGUgU1BJCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAppbmRleCA0OTAxZTA4NmVkMTlmNTIwZGEwMDhmMTQwZTJlZDY5YzZi
M2M2MWQwLi4xMzAyNzEwZjY0ZTViNzkzODVkMDNhOTYyMmI2ZTZkYmZmZGU5NmQyIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwNCw4ICs0MDQsOCBAQCBpbnRlcmZhY2UgVGVzdFJ1
bm5lciB7CiAKICAgICAvLyBXZWJBdXRobgogICAgIHZvaWQgYWRkVGVzdEtleVRvS2V5Y2hhaW4o
RE9NU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQsIERPTVN0cmluZyBhdHRyTGFiZWwsIERPTVN0cmlu
ZyBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7Ci0gICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oRE9NU3Ry
aW5nIGF0dHJMYWJlbCwgb3B0aW9uYWwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsK
LSAgICBib29sZWFuIGtleUV4aXN0c0luS2V5Y2hhaW4oRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9N
U3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKKyAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihE
T01TdHJpbmcgYXR0ckxhYmVsLCBvcHRpb25hbCBET01TdHJpbmcgYXBwbGljYXRpb25MYWJlbEJh
c2U2NCk7CisgICAgYm9vbGVhbiBrZXlFeGlzdHNJbktleWNoYWluKERPTVN0cmluZyBhdHRyTGFi
ZWwsIERPTVN0cmluZyBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKIAogICAgIC8vIEFkIENsaWNr
IEF0dHJpYnV0aW9uCiAgICAgdm9pZCBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
aW5kZXggODJkZDZhYWUyNjFmODg4YTFlMzJiZWI2NjljNjJkMDdmZjYwY2VlOS4uMmU5OGNmNWQ1
NmFlMTZhMWNmMDYyNjFkNDkyMGQ4Y2ZmNmZjZDM5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNzg4LDcgKzI3
ODgsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmFkZFRlc3RLZXlUb0tleWNoYWluKEpTU3RyaW5nUmVm
IHByaXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVmCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25v
dXNNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5h
bWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBUZXN0UnVu
bmVyOjpjbGVhblVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBh
cHBsaWNhdGlvblRhZ0Jhc2U2NCkKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2xlYW5VcEtleWNoYWluKEpT
U3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25MYWJlbEJhc2U2NCkK
IHsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwogICAgIFZlY3Rv
cjxXS1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CkBAIC0yNzk2LDkgKzI3OTYsOSBAQCB2
b2lkIFRlc3RSdW5uZXI6OmNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpT
U3RyaW5nUmVmIGFwcGxpY2F0aW9uVAogICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkF0dHJMYWJlbCIpKSk7CiAgICAgdmFsdWVzLmFwcGVuZCh0
b1dLKGF0dHJMYWJlbCkpOwogCi0gICAgaWYgKGFwcGxpY2F0aW9uVGFnQmFzZTY0KSB7Ci0gICAg
ICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFw
cGxpY2F0aW9uVGFnIikpKTsKLSAgICAgICAgdmFsdWVzLmFwcGVuZCh0b1dLKGFwcGxpY2F0aW9u
VGFnQmFzZTY0KSk7CisgICAgaWYgKGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpIHsKKyAgICAgICAg
a2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXBwbGlj
YXRpb25MYWJlbCIpKSk7CisgICAgICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhcHBsaWNhdGlvbkxh
YmVsQmFzZTY0KSk7CiAgICAgfQogCiAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzOwpA
QCAtMjgxNyw3ICsyODE3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVhblVwS2V5Y2hhaW4oSlNT
dHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblQKICAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQog
Ci1ib29sIFRlc3RSdW5uZXI6OmtleUV4aXN0c0luS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxh
YmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKK2Jvb2wgVGVzdFJ1bm5lcjo6
a2V5RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFw
cGxpY2F0aW9uTGFiZWxCYXNlNjQpCiB7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPj4ga2V5czsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOwpA
QCAtMjgyNSw4ICsyODI1LDggQEAgYm9vbCBUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNoYWlu
KEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXQKICAgICBrZXlzLmFw
cGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdHRyTGFiZWwiKSkp
OwogICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhdHRyTGFiZWwpKTsKIAotICAgIGtleXMuYXBwZW5k
KGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxpY2F0aW9uVGFnIikp
KTsKLSAgICB2YWx1ZXMuYXBwZW5kKHRvV0soYXBwbGljYXRpb25UYWdCYXNlNjQpKTsKKyAgICBr
ZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNh
dGlvbkxhYmVsIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKHRvV0soYXBwbGljYXRpb25MYWJlbEJh
c2U2NCkpOwogCiAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzOwogICAgIFZlY3RvcjxX
S1R5cGVSZWY+IHJhd1ZhbHVlczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMGIxMjQ4MWQ3ZDE5MmJkNmIyZTQ2MDQ4ODVh
NWFiMzQ0ZmM1YmJiZC4uZGEwYWQxZmJhOWI5MjQ4NzEzZDA0ZjFhYmExNGUxZjY2MDhiODNhNyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKQEAgLTUxMiw4ICs1MTIsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRSgxODk4NzYp
CiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihKU1N0cmluZ1JlZiBwcml2YXRlS2V5QmFz
ZTY0LCBKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFz
ZTY0KTsKLSAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpT
U3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKLSAgICBib29sIGtleUV4aXN0c0luS2V5
Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jh
c2U2NCk7CisgICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBK
U1N0cmluZ1JlZiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKKyAgICBib29sIGtleUV4aXN0c0lu
S2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvbkxh
YmVsQmFzZTY0KTsKIAogICAgIHVuc2lnbmVkIGxvbmcgc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2Fs
bGJhY2tDYWxsc0NvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCBmM2FhODhhYzYyOTE4OWVjMTM3ZDJkOTI5NGJmZTI5NGNiNTg0NGZjLi41NzNiNzJj
ZmJjZmJlY2RjMDMwMDhjZDI0M2UxOTAyYzA4YTQwODEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC0zMTIsOCArMzEyLDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoZG91YmxlIHNlY29uZHMpOwog
CiAgICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlC
YXNlNjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9u
VGFnQmFzZTY0KTsKLSAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJM
YWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7Ci0gICAgYm9vbCBrZXlF
eGlzdHNJbktleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFw
cGxpY2F0aW9uVGFnQmFzZTY0KTsKKyAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJp
bmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKKyAg
ICBib29sIGtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0
IFN0cmluZyYgYXBwbGljYXRpb25MYWJlbEJhc2U2NCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBOU1N0cmluZyAqb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmllcigpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA0MTZmNmVmMWE3MTNl
ZThiNGZlYWU5MGU5ZjlmZjM4MGYwZDk5ZTQ0Li5mOGNjZTI3ZmM0NjE3ZWE3NmM2YjUzNzc1NGNj
NDYyY2Q5ZTBlYzE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cApAQCAtMTcyMywxMCArMTcyMywxMCBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXR0ckxhYmVsS2V5ID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXR0ckxhYmVsIikpOwogICAgICAgICBXS1N0cmluZ1Jl
ZiBhdHRyTGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJ
dGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhdHRyTGFiZWxLZXkuZ2V0KCkpKTsKIAotICAgICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25UYWdLZXkgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlvblRhZyIpKTsKLSAgICAgICAg
V0tTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBsaWNhdGlvblRhZ0tl
eS5nZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25M
YWJlbEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxpY2F0
aW9uTGFiZWwiKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTGFiZWxXSyA9IHN0
YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0
aW9uYXJ5LCBhcHBsaWNhdGlvbkxhYmVsS2V5LmdldCgpKSk7CiAKLSAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLmNsZWFuVXBLZXljaGFpbih0b1dURlN0cmluZyhhdHRyTGFiZWxX
SyksIGFwcGxpY2F0aW9uVGFnV0sgPyB0b1dURlN0cmluZyhhcHBsaWNhdGlvblRhZ1dLKSA6IFN0
cmluZygpKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNsZWFuVXBLZXlj
aGFpbih0b1dURlN0cmluZyhhdHRyTGFiZWxXSyksIGFwcGxpY2F0aW9uTGFiZWxXSyA/IHRvV1RG
U3RyaW5nKGFwcGxpY2F0aW9uTGFiZWxXSykgOiBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTczNywxMCArMTczNywxMCBAQCBXS1JldGFpblB0cjxXS1R5
cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUlu
amVjdGVkQgogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXR0ckxhYmVsS2V5ID0g
YWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXR0ckxhYmVsIikpOwogICAg
ICAgICBXS1N0cmluZ1JlZiBhdHRyTGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihX
S0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhdHRyTGFiZWxLZXkuZ2V0
KCkpKTsKIAotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25UYWdL
ZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlvblRh
ZyIpKTsKLSAgICAgICAgV0tTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdXSyA9IHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBh
cHBsaWNhdGlvblRhZ0tleS5nZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gYXBwbGljYXRpb25MYWJlbEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkFwcGxpY2F0aW9uTGFiZWwiKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGFwcGxpY2F0
aW9uTGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBsaWNhdGlvbkxhYmVsS2V5LmdldCgpKSk7CiAKLSAg
ICAgICAgYm9vbCBrZXlFeGlzdHNJbktleWNoYWluID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRv
bigpLmtleUV4aXN0c0luS2V5Y2hhaW4odG9XVEZTdHJpbmcoYXR0ckxhYmVsV0spLCB0b1dURlN0
cmluZyhhcHBsaWNhdGlvblRhZ1dLKSk7CisgICAgICAgIGJvb2wga2V5RXhpc3RzSW5LZXljaGFp
biA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5rZXlFeGlzdHNJbktleWNoYWluKHRvV1RG
U3RyaW5nKGF0dHJMYWJlbFdLKSwgdG9XVEZTdHJpbmcoYXBwbGljYXRpb25MYWJlbFdLKSk7CiAg
ICAgICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhXS0Jvb2xlYW5D
cmVhdGUoa2V5RXhpc3RzSW5LZXljaGFpbikpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xs
ZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbQppbmRleCBmMmUzYTY2Yzc4ODAxMDNjODA4NGE5ZDg5NDVmZjQwOGZkYjJlMzE2Li5m
YzFkNTFiNzQ5YzhiMzIxZmU0ZjdhMjI1NTdiODFhZDllNmI5MDEyIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC00MzAs
NyArNDMwLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oY29u
c3QgU3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdAogICAgIEFTU0VSVF9VTlVTRUQoc3Rh
dHVzLCAhc3RhdHVzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWlu
KGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFz
ZTY0KQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNvbnN0IFN0cmluZyYg
YXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpCiB7CiAgICAg
YXV0byBkZWxldGVRdWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XSk7CiAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDooaWQpa1NlY0NsYXNzS2V5IGZvcktl
eTooaWQpa1NlY0NsYXNzXTsKQEAgLTQ0MCwxOSArNDQwLDE5IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5n
JiBhcHBsCiAjZWxzZQogICAgIFtkZWxldGVRdWVyeSBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6KGlk
KWtTZWNBdHRyTm9MZWdhY3ldOwogI2VuZGlmCi0gICAgaWYgKCEhYXBwbGljYXRpb25UYWdCYXNl
NjQpCi0gICAgICAgIFtkZWxldGVRdWVyeSBzZXRPYmplY3Q6YWRvcHROUyhbW05TRGF0YSBhbGxv
Y10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlv
bnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpIGZv
cktleTooaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107CisgICAgaWYgKCEhYXBwbGljYXRpb25M
YWJlbEJhc2U2NCkKKyAgICAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDphZG9wdE5TKFtbTlNE
YXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25MYWJlbEJh
c2U2NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNd
KS5nZXQoKSBmb3JLZXk6KGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAKICAgICBTZWNJ
dGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkuZ2V0KCkpOwog
fQogCi1ib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0cmlu
ZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KQorYm9vbCBU
ZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJl
bCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KQogewogICAgIE5TRGljdGlv
bmFyeSAqcXVlcnkgPSBAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5
LAogICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2
YXRlLAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAotICAgICAgICAoaWQp
a1NlY0F0dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhC
YXNlNjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFz
ZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQp
a1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25MYWJlbEJhc2U2NCBvcHRpb25zOk5TRGF0
YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKICNpZiBIQVZF
KERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKICAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVj
dGlvbktleWNoYWluOiBAWUVTCiAjZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllMGRiM2QwYjRjODQwNmIwYjU1YTRl
ZGRjMTlmNmYyMDJjMmY2OWUuLjVkZTIwYzNmOGM1Mjg4Y2YyNjdhNjQxYmI2MDMxNjg5M2FmZDQ3
YmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wMy0wOSAgSmlld2VuIFRhbiAgPGppZXdl
bl90YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gRm9ybWFsaXplIHRoZSBLZXlj
aGFpbiBzY2hlbWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4MzUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzIGFyZSBhZGRl
ZCBhbmQgYWxsIHRlc3RzIGFyZSBtb2RpZmllZCB0byB1c2UgQ3JlZGVudGlhbCBJRCB0byBpZGVu
dGlmeSBhIGNyZWRlbnRpYWwgaW5zdGVhZAorICAgICAgICBvZiB7IFJQIElELCB1c2VyIGhhbmRs
ZSB9LgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJl
LWxvY2FsLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0
dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAg
ICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxv
Y2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMjAtMDMtMDUgIEppZXdlbiBUYW4g
IDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIERvIG5vdCBwZXJm
b3JtIEF0dGVzdGF0aW9uIHdpdGggdHlwZSBpcyAnbm9uZScKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1sb2NhbC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVu
dC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjY3OTQxZmRjODE3NGZlMDg5NjM1ZWUxNzM3YmRl
ZTA5NDRmOTYxYy4uYjYzZmQ3NGJlNTdhZTA4NzY5YmE1YmYzZWQ5NjNhNjAzMzlkZDVmZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBA
CiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFp
bHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1
dGhlbnRpY2F0b3IuIDIgCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDMgCi1QQVNT
IFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDQgCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIDUgCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2ls
ZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDYgCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBwb3J0ZWQgcHVibGljIGtleSBj
cmVkZW50aWFsIHBhcmFtZXRlcnMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhjbHVkZSBj
cmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxz
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAybmQgCitQQVNTIFB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aG91dCBwcml2YXRlIGtleXMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9uIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2Fs
LXNpbGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCmlu
ZGV4IDRkY2Y0YTI5NGQ5ZmU3M2M3YzIxNmY4ZmQxOTRlMzI2NjdhNzY4ZTYuLmNiMmQwMjY4MzBm
ZTJhODg1NTgwZWU1MTA5YjhkY2FhNjNjYjA3MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2Nh
bC1zaWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0
bWwKQEAgLTQsMTUyICs0LDE1OCBAQAogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICAoYXN5bmMgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNv
bnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICAv
LyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0
aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246
IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKworICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJl
eGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIs
IGFsZzogLTM1IH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0yNTcgfV0sIC8vIEVTMzg0
LCBSUzI1NgorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1l
ZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
dW5zdXBwb3J0ZWQgcHVibGljIGtleSBjcmVkZW50aWFsIHBhcmFtZXRlcnMgaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
ICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlC
YXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3Jl
ZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwotICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29u
ZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50
IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxl
bnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFj
Y2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwotCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGlj
S2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFw
cGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRl
c3RVc2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1l
OiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNo
YWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTM1IH0sIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0yNTcgfV0sIC8vIEVTMzg0LCBSUzI1NgotICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGlt
ZWQgb3V0LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAg
ICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJ
RCk7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAg
ICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAg
ICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIx
MjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ3Jl
ZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KSB9XSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRl
c3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJK
b2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNj
aWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJh
bXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBl
eGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJ
RCB9XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAg
ICB9OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0
VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5
VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7
Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQg
b3V0LiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJw
SWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiAyIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5j
bGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0p
OworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQg
ZXhjbHVkZSBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKwor
ICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJh
c2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBj
cmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2
NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVk
ZW50aWFsSUQpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5j
b20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgZXhj
bHVkZUNyZWRlbnRpYWxzOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJs
aWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQs
IHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRp
YWxJRCwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0KLSAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9OworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGlj
S2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAg
ICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAg
ICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIp
LAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5
IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQs
IHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRy
YW5zcG9ydHM6IFsiYmxlIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAg
fQorICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RS
cElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5h
ZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRs
ZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93
ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRp
b24gdGltZWQgb3V0LiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hh
aW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJl
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAzIik7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7Cisg
ICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IG1hdGNoZWQgZXhjbHVkZSBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4gMm5kIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAg
ICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNv
bSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewot
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWlu
dDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAg
dGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKLSAg
ICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZh
aWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDQiKTsKKyAgICBwcm9taXNlX3Rl
c3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9
CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dl
ZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlv
biB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwog
Ci0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJw
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAi
cHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEw
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNj
ZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwot
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
c2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDUiKTsKKyAgICBw
cm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgi
MTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1
ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0ZSBrZXlzIGluIGEgbW9jayBsb2Nh
bCBhdXRoZW50aWNhdG9yLiIpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVC
YXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2Np
aVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQ
YXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAg
ICAgICAgdGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAg
ICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6
IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3Rh
dGlvbjogZmFsc2UgfSB9KTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlU
b0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsK
KyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlC
YXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3Qg
Y3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNl
NjQpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3Jl
ZGVudGlhbElEKTsKKworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNl
cjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAg
ICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwK
KyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogImRpcmVjdCIs
CisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgICAgICAgICBhc3NlcnRfZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRl
c3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDYiKTsKLSAgICB9KSgpOworICAgICAgICB9Owor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
bG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBm
YWxzZSwgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCB9IH0pOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkg
PT4geworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCBjcmVkZW50aWFsSURCYXNlNjQp
OworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aG91dCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggODYzNGYyYzI2ZDI5ZWNm
YTEwNTU0ZTQxODMzZGQ4Yjg2ZDJiNzhhMy4uNmExMDI1YWIwNDNkZDU0OTU3Yjg4MjQzZTQ4ZTg3
ODVjNjk4ZmY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBA
QCBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNs
dWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jawogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4gCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0
ZSBrZXlzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwg
YXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIGRl
bGV0aW5nIG9sZCBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BB
U1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gbm90IGRlbGV0aW5nIG9sZCBjcmVk
ZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCAwYTVhYmUyODg1NjlhZWM3YmNlOTk3NmU5N2I0
ZWIyODUyZTJlYjg0Li41NzBhYzA4ZjRiMGRlZTBkZDE4OTUxNzFiYmU5NzllZDA5ODliNTVkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9j
YWwuaHR0cHMuaHRtbApAQCAtNCwxOTMgKzQsMjA1IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsK
LSAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2
NCgpOworICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92
ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFj
Y2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4gewor
ICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBp
ZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMzUg
fSwgeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMzODQsIFJTMjU2Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90U3VwcG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IgZG9lc24ndCBzdXBwb3J0
IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycy4iKTsKKyAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMg
a2V5IGNyZWRlbnRpYWwgcGFyYW1ldGVycyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4i
KTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgcHJpdmF0
ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBj
b25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtl
eUJhc2U2NCk7Ci0gICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBu
ZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRp
Y2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7Ci0KLSAgICAgICAg
cHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAg
ICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBC
YXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0g
ICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5
IiwgYWxnOiAtMzUgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMz
ODQsIFJTMjU2Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90U3VwcG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhl
bnRpY2F0b3IgZG9lc24ndCBzdXBwb3J0IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFs
UGFyYW1ldGVycy4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggdW5zdXBwb3J0ZWQgcHVibGljIGtleSBjcmVkZW50aWFsIHBhcmFtZXRlcnMgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJ
REJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOwogCi0gICAgICAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAg
ICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJM
LnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxh
eU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKLSAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQgfV0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9OworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4
YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAor
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6
ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCB9XQorICAgICAgICAgICAgfQorICAgICAg
ICB9OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0
VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1
ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9y
LiIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJh
c2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRy
eSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVk
IGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXlj
aGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNs
dWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCBjcmVkZW50aWFs
SURCYXNlNjQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2Fs
IGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAg
ICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJl
eGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
dXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJh
c2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lp
VG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBh
cmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAg
ICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbInVzYiJdIH0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRl
bnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAg
eyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxl
Il0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDog
Y3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQotICAgICAgICAgICAgICAg
ICAgICBdCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBn
ZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0g
YXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBj
b25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKTsKKwor
ICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBp
ZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6
IFsidXNiIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlk
OiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsi
YmxlIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBj
cmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAgICAgICAgICAgICAg
XQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVL
ZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNo
ZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9y
bSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtl
eVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQp
OwotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNy
ZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3Qg
aW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiAybmQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBL
ZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRl
IGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAybmQiKTsKIAotICAg
ICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewot
ICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewot
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAg
aWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYi
KSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1Ymxp
Yy1rZXkiLCBhbGc6IC03IH1dCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHZlcmlmeSB1c2Vy
LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91
dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgcHJv
bWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
dXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAg
ICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0
KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgYWxnOiAtNyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCB2ZXJpZnkgdXNlci4iKTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQg
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0
KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpv
aG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxh
eU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0
cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKLSAgICAgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iKTsKLSAgICAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0ZSBrZXlz
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxl
LmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAg
ICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRB
dHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
Q291bGRuJ3QgY3JlYXRlIHByaXZhdGUga2V5LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IHByaXZhdGUga2V5cyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4iKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAg
ICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAg
ICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1w
bGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2Vy
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1z
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAg
IGF0dGVzdGF0aW9uOiAiZGlyZWN0IgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFj
Y2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByaXZh
dGVLZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQgfSB9KTsKLSAgICAgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IGF0dGVzdDogVGhlIG9wZXJhdGlvbiBjb3VsZG4ndCBj
b21wbGV0ZS4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRl
c3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBhdHRlc3RhdGlvbiBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZh
dGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3Vs
YXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBjcmVkZW50
aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKTsKIAotICAgICAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAg
ICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
YW1lOiB1c2VyaGFuZGxlQmFzZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAg
ICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzog
LTcgfV0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKLSAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RS
cElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVk
IiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRs
ZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246
ICJkaXJlY3QiCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cyksICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIikudGhlbigoKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICBhc3Nl
cnRfZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRlc3RScElkLCB1c2VyaGFu
ZGxlQmFzZTY0KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIGRlbGV0aW5nIG9sZCBjcmVkZW50aWFsIGluIGEgbW9jayBsb2Nh
bCBhdXRoZW50aWNhdG9yLiIpOworICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0
dGVzdGF0aW9uOiBmYWxzZSwgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCB9IH0p
OworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBhdHRlc3Q6IFRoZSBv
cGVyYXRpb24gY291bGRuJ3QgY29tcGxldGUuIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVw
S2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9u
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCi0gICAgICAgIHByb21pc2VfdGVz
dChmdW5jdGlvbih0KSB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAg
ICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
YW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lp
VG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAg
ICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0s
Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwLAotICAgICAgICAgICAgICAgICAgICBh
dXRoZW50aWNhdG9yU2VsZWN0aW9uOiB7IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OiAiY3Jvc3Mt
cGxhdGZvcm0iIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgIHByb21p
c2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3
YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFs
SUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAg
ICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQp
OwogCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7
IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0g
fSk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGlt
ZWQgb3V0LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotICAgIH0pKCk7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5j
b20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6IHRlc3RVc2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAg
ICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBpZiAod2luZG93Lmlu
dGVybmFscykgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNj
ZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRl
c3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0
eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiQ291bGRuJ3QgY3JlYXRlIHByaXZhdGUga2V5LiIpLnRoZW4oKCkgPT4geworICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRl
c3RSdW5uZXIua2V5RXhpc3RzSW5LZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0
KSk7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQs
IGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tjcmVhdGVdXSBub3QgZGVsZXRpbmcgb2xkIGNyZWRlbnRpYWwgaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkg
eworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7Cisg
ICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUu
Y29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAg
ICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAg
ICAgICAgICAgICAgIHRpbWVvdXQ6IDEwLAorICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JT
ZWxlY3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6ICJjcm9zcy1wbGF0Zm9ybSIgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVz
dGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJP
cGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiA8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGZhZGFjMjExYTdjZTA3
ZjI1YTVkMjBhYzllZWIyMjkwNmM3MGZlZjcuLjY1MTA5ODA0NjRlZmU4ZDA2MzhlOTk0ZmM5Mjk2
MTg5MWIxOTVmZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtNSw0ICs1LDYg
QEAgUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhj
bHVkZSBjcmVkZW50aWFsIGlkcyBidXQgbm8KIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVj
dCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCiBQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBkdXBsaWNhdGUgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZHVw
bGljYXRlIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIgCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0
dHBzLmh0bWwKaW5kZXggOGFhZjVhZmI5ZTMxNzA5YjZlMjQ1Zjg3ODQyY2Q2YWU4M2FiY2Y5Yy4u
YmQzMDc2MTUzZjFiZjkwOTBkMjk4NDAzODRmMDM3YzI5ODhjODVjMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1z
dWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwK
QEAgLTUsMjA4ICs1LDM0MSBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgogPHNj
cmlwdD4KLSAgICAoYXN5bmMgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnN0IHVzZXJoYW5kbGVC
YXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICBmdW5jdGlvbiBjaGVja1Jl
c3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkK
KyAgICB7CisgICAgICAgIC8vIENoZWNrIGtleWNoYWluCisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUodGVzdFJ1bm5lci5rZXlFeGlzdHNJ
bktleWNoYWluKHRlc3RScElkLCBiYXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKSkpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShj
cmVkZW50aWFsSUQpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIHJlc3BvbmQKKyAg
ICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCks
IGNyZWRlbnRpYWxJRCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAn
cHVibGljLWtleScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5
KGNyZWRlbnRpYWwucmF3SWQpLCBjcmVkZW50aWFsSUQpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwg
J3sidHlwZSI6IndlYmF1dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2lu
IjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9ub3Rfb3duX3By
b3BlcnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsK
KworICAgICAgICAvLyBDaGVjayBhdHRlc3RhdGlvbgorICAgICAgICBjb25zdCBhdHRlc3RhdGlv
bk9iamVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2UuYXR0ZXN0YXRpb25PYmpl
Y3QpOworICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJhcHBsZSIpOwor
ICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29k
ZUF1dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKKyAgICAgICAgYXNzZXJ0X2Vx
dWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThj
Njg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjkpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDApOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVz
VG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwIik7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlh
bElELCBjcmVkZW50aWFsSUQpOworICAgICAgICAvLyBDaGVjayBzZWxmIGF0dGVzdGF0aW9uCisg
ICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOwor
ICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0
X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC5hbGcs
IC03KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3Rt
dC54NWMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0
YXRpb25PYmplY3QuYXR0U3RtdC54NWNbMF0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRp
b25DZXJ0aWZpY2F0ZUJhc2U2NCkpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhh
dHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Y1sxXSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RBdHRl
c3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0KSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlC
YXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3Qg
Y3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNl
NjQpOwotICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0
byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAg
IGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CiAgICAgICAgICAgICAgICAgbG9jYWw6
IHsKICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsCiAgICAg
ICAgICAgICAgICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKLSAgICAgICAgICAgICAg
ICAgICAgdXNlckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJh
c2U2NCwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2
NDogdGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChj
cmVkZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIENoZWNrIGtleWNoYWluCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXN0UnVubmVyLmtleUV4aXN0c0luS2V5
Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpKTsKLSAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJh
c2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlz
cGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAog
ICAgICAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgICAgICAvLyBDaGVjayByZXNwb25k
Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50
aWFsLmlkKSwgY3JlZGVudGlhbElEKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVu
dGlhbC50eXBlLCAncHVibGljLWtleScpOwotICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJhd0lkKSwgY3JlZGVudGlhbElEKTsKLSAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9u
c2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdl
IjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKLSAgICAg
ICAgICAgIGFzc2VydF9ub3Rfb3duX3Byb3BlcnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5z
aW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgYXR0ZXN0YXRp
b24KLSAgICAgICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3Jl
ZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgICAgICAgICBpZiAoaXNO
b25lQXR0ZXN0YXRpb24pCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlv
bk9iamVjdC5mbXQsICJub25lIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJhcHBsZSIpOwotICAgICAgICAg
ICAgLy8gQ2hlY2sgYXV0aERhdGEKLSAgICAgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2Rl
QXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOwotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgw
ZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsK
LSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY5KTsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7Ci0gICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KGF1dGhEYXRhLmNyZWRlbnRpYWxJRCwgY3JlZGVudGlhbElEKTsKLSAgICAgICAgICAgIC8vIENo
ZWNrIHNlbGYgYXR0ZXN0YXRpb24KLSAgICAgICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGlj
S2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOwotICAgICAgICAgICAgaWYgKGlzTm9uZUF0dGVzdGF0
aW9uKQotICAgICAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKGF0dGVzdGF0aW9uT2Jq
ZWN0LmF0dFN0bXQsIHsgfSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQuYWxnLCAtNyk7Ci0gICAgICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Yy5sZW5n
dGgsIDIpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0YXRpb25P
YmplY3QuYXR0U3RtdC54NWNbMF0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRpb25DZXJ0
aWZpY2F0ZUJhc2U2NCkpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0
ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54NWNbMV0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0
YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFs
LCBjcmVkZW50aWFsSUQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAg
ICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhv
c3QiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRV
UkwucGFyc2UoIk1USXpORFUyIiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJh
bXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5l
cmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdh
aXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25z
dCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsCisgICAgICAgICAgICAgICAgICAg
IHByaXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQsCiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4g
ewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5hbWU6ICJsb2NhbGhvc3QiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxl
QmFzZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2Vy
aGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBw
bGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCi0gICAgICAgICAgICAgICAgICAg
IHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAg
ICAgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50aWNhdG9y
QXR0YWNobWVudDogInBsYXRmb3JtIiB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fTsKIAotICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChj
cmVkZW50aWFsKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ3BsYXRmb3Jt
JyB9IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotCi0gICAgICAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAg
ICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6
IHVzZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJM
LnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxh
eU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKLSAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbCi0gICAgICAgICAg
ICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJh
bnNwb3J0czogWyJ1c2IiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElE
LCB0cmFuc3BvcnRzOiBbImJsZSJdIH0KLSAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAg
ICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAg
IG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRV
UkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNo
YWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1
YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAg
ICAgICAgICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOiB7IGF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50OiAicGxhdGZvcm0iIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBy
ZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElE
KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdwbGF0Zm9ybScgfSBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJh
c2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVk
ZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNl
NjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7CisgICAgICAgICAgICAgICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICAg
ICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGFjY2Vw
dEF0dGVzdGF0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2
NDogcHJpdmF0ZUtleUJhc2U2NCwKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Owor
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgY29uc3QgYW5vdGhlclByaXZhdGVLZXlCYXNlNjQg
PSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgYW5vdGhl
ckNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChhbm90aGVyUHJpdmF0
ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAg
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIs
IGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbCisgICAg
ICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogYW5vdGhlckNyZWRlbnRp
YWxJRCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6
ICJwdWJsaWMta2V5IiwgaWQ6IGFub3RoZXJDcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZj
Il0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBhbm90
aGVyQ3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImJsZSJdIH0KKyAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4oYW5vdGhlclBy
aXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisK
KyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNy
ZWRlbnRpYWxJRCk7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRl
S2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CisgICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShhbm90aGVy
Q3JlZGVudGlhbElEKSk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhjbHVkZSBjcmVkZW50aWFsIGlkcyBidXQgbm90
IHRyYW5zcG9ydHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAg
ICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3Jl
ZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWwgaWRzIGJ1dCBub3QgdHJhbnNwb3J0
cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLQotICAgICAgICBwcm9taXNlX3Rl
c3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAg
IHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVz
ZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBh
cnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAg
ICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03
IH1dLAotICAgICAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogIm5vbmUiCisgICAgcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdh
aXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJ
RCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAg
ICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKKyAgICAgICAgICAgICAgICBsb2Nh
bDogeworICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAg
ICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0
VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5
TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBw
dWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAg
ICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJub25lIgorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFs
LCBjcmVkZW50aWFsSUQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBj
b25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7
CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJ
RChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdl
bmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsKKyAgICAgICAgICAgICAgICBsb2NhbDogeworICAgICAgICAgICAgICAgICAgICBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0
YXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZh
dGVLZXlCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDog
dGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGlu
dGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNl
cnRpZmljYXRlQmFzZTY0CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0
YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0KLSAgICAgICAgcHJvbWlz
ZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAg
ICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1l
OiB1c2VyaGFuZGxlQmFzZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVS
TC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXlOYW1lOiAiQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCi0gICAgICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJpbmRpcmVjdCIKKwor
ICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIs
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAg
ICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGlk
OiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAg
IGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XSwKKyAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogImluZGlyZWN0IgorICAgICAgICAgICAg
fQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3Vs
dChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRp
b24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5l
cmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdh
aXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25z
dCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJB
dXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7Cisg
ICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
cHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAg
dXNlckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwK
KyAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVz
dEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAg
ICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7Ci0gICAgICAgICAgICAgICAgICAgIGxvY2FsOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFjY2VwdEF0dGVzdGF0aW9uOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0
ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVz
ZXJDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OiB0
ZXN0QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NAotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAg
ICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGlu
ZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotCi0g
ICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRV
MiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAi
ZGlyZWN0IgorCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
bG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiks
CisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiZGlyZWN0IgorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBj
aGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIGZhbHNlKTsKKyAgICAgICAgfSk7
CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0
dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlz
ZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdh
aXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJ
RCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAg
ICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOwor
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKKyAgICAgICAgICAgICAgICBsb2Nh
bDogeworICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAorICAgICAgICAgICAg
ICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAg
ZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
LAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGNvbnN0IGFub3RoZXJQcml2
YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAg
IGNvbnN0IGFub3RoZXJDcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQo
YW5vdGhlclByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4oYW5vdGhlclByaXZh
dGVLZXlCYXNlNjQsIHRlc3RScElkLCBiYXNlNjRlbmNvZGUoQ0JPUi5lbmNvZGUoeyAiaWQiOiBC
YXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksICJuYW1lIjogdXNlcmhhbmRsZUJhc2U2
NCB9KSkpOworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVk
ZW50aWFsLCBjcmVkZW50aWFsSUQpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHRlc3RSdW5u
ZXIua2V5RXhpc3RzSW5LZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0ZW5jb2RlKGFub3RoZXJDcmVk
ZW50aWFsSUQpKSk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBj
b25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7
CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJ
RChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdl
bmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsKKyAgICAgICAgICAgICAgICBsb2NhbDogeworICAgICAgICAgICAgICAgICAgICBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0
YXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZh
dGVLZXlCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDog
dGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGlu
dGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNl
cnRpZmljYXRlQmFzZTY0CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGRpcmVjdCBhdHRl
c3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLSAgICB9KSgpOworCisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAg
ZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
LAorICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiZGlyZWN0IgorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIGNvbnN0IGFub3RoZXJQcml2YXRlS2V5QmFzZTY0ID0gYXdh
aXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGFub3RoZXJDcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQoYW5vdGhlclByaXZhdGVLZXlC
YXNlNjQpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4oYW5vdGhlclByaXZhdGVLZXlCYXNlNjQsIHRlc3RS
cElkLCBiYXNlNjRlbmNvZGUoQ0JPUi5lbmNvZGUoeyAiaWQiOiBCYXNlNjRVUkwucGFyc2UodXNl
cmhhbmRsZUJhc2U2NCksICJuYW1lIjogdXNlcmhhbmRsZUJhc2U2NCB9KSkpOworCisgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFs
SUQsIGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSh0ZXN0UnVubmVyLmtleUV4aXN0
c0luS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShhbm90aGVyQ3JlZGVudGlhbElEKSkp
OworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBkdXBsaWNhdGUgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4g
MiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4
IGQ3OTg2YzhhOWJjNzljN2QxN2VhMDkzMTRjMTQ4MWEzZTEyZTMxNWUuLmQzZjRmNWQ3YWU5ZmFk
ZWM5NDRkZTg4NzU4MTlhMjY1YjU0MzU0MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxl
bnQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhu
L3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMtZXhw
ZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3Iu
IAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHNpbGVudCBmYWlsdXJl
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAyIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tnZXRdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiAzIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1h
dGNoZWQgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMg
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCAKK1BBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0
LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggZjAyYzI1NWU4ODI0MDQ3NGYx
MjIyYzEyYjA2NWM2YjlmOGU5OWYzMi4uODNlYjZiNjBiNmY5MGI2ZTdlZTRhZWY5ZThlMTYxM2Jk
OTY2OWRhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
ZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbApAQCAtNCw2NCArNCw3MiBAQAogPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICAoYXN5
bmMgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0
ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBh
Y2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0p
OworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFs
SWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRC
YXNlNjQpLCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNl
NjQpLCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQp
LCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlh
bHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5l
cmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdh
aXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25z
dCBjcmVkZW50aWFsSURCYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwg
Y3JlZGVudGlhbElEKSk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBU
ZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlv
bi4KICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRp
b246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0g
fSk7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFs
SWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2NCB9IH0pOwogCi0gICAgICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAg
cHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRl
bnRpYWxJRCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAg
eyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZj
Il0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDog
Y3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czog
WyJpbnRlcm5hbCJdIH0KLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAg
ICAgdGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAg
ICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAg
ICAgICAgYWxsb3dDcmVkZW50aWFsczogWworICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCkgfQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIik7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAg
ICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQp
IH0KLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDog
MTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWlu
KHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7
CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIiku
dGhlbigoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3Jl
ZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIDJuZCIpOwogCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihw
cml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkg
PT4gewotICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNl
cmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2Nh
bCBhdXRoZW50aWNhdG9yLiAyIik7CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
ICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFz
ZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRl
bnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFz
ZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsIGNyZWRlbnRpYWxJRCkpOwor
ICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVy
cmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVy
cmVkQ3JlZGVudGlhbElkQmFzZTY0OiBjcmVkZW50aWFsSURCYXNlNjQgfSB9KTsKIAotICAgICAg
ICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAg
ICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6
IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91
dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBjb25zdCBv
cHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgdGlt
ZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKIAorICAgICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWlu
KHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7
CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIiku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0
LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkgPT4gewotICAgICAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRo
IHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAzIik7Ci0gICAg
fSkoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJ
ZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2dldF1dIHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IGYyN2Y3MTE5MjI3ZTgwZTM2
MDEwODNjMmMwYjVlNDA5MDdkOGUyNjAuLmJkYjYwNzZjMmJjODg5Y2QwYTJlNGVjZjlhNzQ2ZWE5
YzViM2UzMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVy
ZS1sb2NhbC5odHRwcy5odG1sCkBAIC00LDc3ICs0LDg1IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigp
IHsKLSAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJh
c2U2NCgpOworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAg
ICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlU
b1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6
IFsKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRV
UkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwK
KyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwu
cGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAg
ICAgICAgICAgICAgXQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKSwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRo
ZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMgaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVL
ZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRl
Q3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBjcmVkZW50aWFs
SURCYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwgY3JlZGVudGlhbElE
KSk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRv
IG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9u
OiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFz
ZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4g
ewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgi
MTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElE
LCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6
ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50
aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImludGVy
bmFsIl0gfQotICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfTsKLQotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gbWF0Y2hl
ZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRp
Y2F0b3IuIik7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRo
IG5vIG1hdGNoZWQgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0
YXRpb246IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJh
c2U2NCB9IH0pOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAg
ICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFz
ZTY0KSB9Ci0gICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9OworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWworICAgICAgICAgICAgICAg
ICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhh
bmRsZUJhc2U2NCkgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKIAorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0
VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwg
Ik5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yLiIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hh
aW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUg
Zm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJh
c2U2NCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4gMm5kIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5
Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlh
bHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCIpOworCisgICAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQg
Z2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9
IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAg
Y29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5
KDAsIGNyZWRlbnRpYWxJRCkpOworICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlv
bi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3Vy
YXRpb24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJu
YWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVy
cmVkQ3JlZGVudGlhbElkQmFzZTY0OiBjcmVkZW50aWFsSURCYXNlNjQgfSB9KTsKIAotICAgICAg
ICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAg
ICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6
IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYi
KQorICAgICAgICAgICAgfQorICAgICAgICB9OwogCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0
ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiQ291bGRuJ3QgdmVyaWZ5IHVzZXIuIikudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0
UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cyksICJDb3VsZG4ndCB2ZXJpZnkgdXNlci4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
Y2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aG91dCB1
c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJh
c2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRd
XSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsK
IAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25z
ID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogWwotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAi
cHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlh
bElELCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJibGUiXSB9
Ci0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEw
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICBwcm9taXNlX3Rlc3QodCA9
PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFs
SWRCYXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRC
YXNlNjQpLCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNl
NjQpLCB0cmFuc3BvcnRzOiBbImJsZSJdIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAg
ICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7Ci0gICAg
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVvdXQgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0gICAgfSkoKTsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1n
ZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCmluZGV4IDkzNjBhZmI4ZjU1ODI3NTg0M2Y5MDAz
NDU3YzcwZTg3YzQzNzZjYmYuLjc4ZDRkN2IwNzZiMTkxYWU4ZDZiYmM1N2Y0Y2U2YWEzODM4MDE2
ZjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2Nh
bC5odHRwcy5odG1sCkBAIC00LDc1ICs0LDgwIEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMv
dXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsKLSAg
ICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgp
OwotICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRl
S2V5QmFzZTY0KCk7Ci0gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0
ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKLSAgICAgICAgLy8gRGVmYXVsdCBtb2Nr
IGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZl
cmVudCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
bG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBm
YWxzZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0pOwot
Ci0gICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CisgICAgZnVu
Y3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFz
ZTY0KQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
dGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShjcmVkZW50
aWFsSUQpKTsKIAotICAgICAgICAgICAgIC8vIENoZWNrIHJlc3BvbmQKLSAgICAgICAgICAgIGFz
c2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBjcmVkZW50
aWFsSUQpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJs
aWMta2V5Jyk7Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5
KGNyZWRlbnRpYWwucmF3SWQpLCBjcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNP
TiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdp
biI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOwotICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUpLCBC
YXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCkpOwotICAgICAgICAgICAgYXNzZXJ0X25v
dF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJh
cHBpZCIpOworICAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAorICAgICAgICBhc3NlcnRfYXJyYXlf
ZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgY3JlZGVudGlhbElEKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAg
ICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCks
IGNyZWRlbnRpYWxJRCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5n
KGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4u
Z2V0IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5
NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVk
ZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUpLCBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5k
bGVCYXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5n
ZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwogCi0gICAgICAgICAgICAvLyBD
aGVjayBhdXRoRGF0YQotICAgICAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0
YShuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhKSk7
Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJ
ZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3
OTk1Y2YzYmE4MzFkOTc2MyIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5m
bGFncywgNSk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDAp
OworICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRl
Y29kZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGlj
YXRvckRhdGEpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhE
YXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlh
Mjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0
YS5mbGFncywgNSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7
CiAKLSAgICAgICAgICAgIC8vIENoZWNrIHNpZ25hdHVyZQotICAgICAgICAgICAgcmV0dXJuIGNy
eXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBCYXNlNjRVUkwucGFyc2UocHJpdmF0ZUtleUJh
c2U2NCkuc2xpY2UoMCwgNjUpLCB7IG5hbWU6ICJFQ0RTQSIsIG5hbWVkQ3VydmU6ICJQLTI1NiIg
fSwgZmFsc2UsIFsndmVyaWZ5J10pLnRoZW4oIHB1YmxpY0tleSA9PiB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJzaGEtMjU2IiwgY3JlZGVudGlhbC5yZXNw
b25zZS5jbGllbnREYXRhSlNPTikudGhlbiAoIGhhc2ggPT4gewotICAgICAgICAgICAgICAgICAg
ICAvLyBjcmVkZW50aWFsLnJlc3BvbnNlLnNpZ25hdHVyZSBpcyBpbiBBU04uMSBhbmQgV2ViQ3J5
cHRvIGV4cGVjdCBzaWduYXR1cmVzIHByb3ZpZGVzIGluIHJ8cy4KLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KHtuYW1lOiAiRUNEU0EiLCBoYXNoOiAiU0hB
LTI1NiJ9LCBwdWJsaWNLZXksIGV4dHJhY3RSYXdTaWduYXR1cmUoY3JlZGVudGlhbC5yZXNwb25z
ZS5zaWduYXR1cmUpLCBjb25jYXRlbmF0ZUJ1ZmZlcnMoY3JlZGVudGlhbC5yZXNwb25zZS5hdXRo
ZW50aWNhdG9yRGF0YSwgaGFzaCkpLnRoZW4oIHZlcmlmaWVkID0+IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKHZlcmlmaWVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFzc2VydF9ub3Rfb3duX3Byb3BlcnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVz
dWx0cygpLCAiYXBwaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIC8vIENo
ZWNrIHNpZ25hdHVyZQorICAgICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJh
dyIsIEJhc2U2NFVSTC5wYXJzZShwcml2YXRlS2V5QmFzZTY0KS5zbGljZSgwLCA2NSksIHsgbmFt
ZTogIkVDRFNBIiwgbmFtZWRDdXJ2ZTogIlAtMjU2IiB9LCBmYWxzZSwgWyd2ZXJpZnknXSkudGhl
biggcHVibGljS2V5ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2Vz
dCgic2hhLTI1NiIsIGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLnRoZW4gKCBo
YXNoID0+IHsKKyAgICAgICAgICAgICAgICAvLyBjcmVkZW50aWFsLnJlc3BvbnNlLnNpZ25hdHVy
ZSBpcyBpbiBBU04uMSBhbmQgV2ViQ3J5cHRvIGV4cGVjdCBzaWduYXR1cmVzIHByb3ZpZGVzIGlu
IHJ8cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS52ZXJpZnkoe25hbWU6
ICJFQ0RTQSIsIGhhc2g6ICJTSEEtMjU2In0sIHB1YmxpY0tleSwgZXh0cmFjdFJhd1NpZ25hdHVy
ZShjcmVkZW50aWFsLnJlc3BvbnNlLnNpZ25hdHVyZSksIGNvbmNhdGVuYXRlQnVmZmVycyhjcmVk
ZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhLCBoYXNoKSkudGhlbiggdmVyaWZpZWQg
PT4geworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh2ZXJpZmllZCk7CisgICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9ub3Rfb3duX3Byb3BlcnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50
RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIH0pOwotICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KIAotICAgICAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAg
ICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2
NFVSTC5wYXJzZSgiTVRJek5EVTIiKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07
CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5
QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0
IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFz
ZTY0KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNy
ZWRlbnRpYWxJRCk7CisgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0
cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4K
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhl
bnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZENyZWRl
bnRpYWxJZEJhc2U2NDogY3JlZGVudGlhbElEQmFzZTY0IH0gfSk7CiAKLSAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RL
ZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0
KTsKLSAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4iKTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJN
VEl6TkRVMiIpCisgICAgICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgcHJvbWlzZV90
ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwu
cGFyc2UoIk1USXpORFUyIiksCi0gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFz
ZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0g
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3Jl
ZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQotICAgICAgICAgICAgICAgICAg
ICBdCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFp
bihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQp
OworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVu
KGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwsIGNyZWRlbnRpYWxJRCwgcHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hh
aW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVk
ZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlh
bCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2dldF1dIHdpdGggbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4iKTsKLSAgICB9KSgpOworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtl
eUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVD
cmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJ
REJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOworICAgICAgICAvLyBEZWZhdWx0
IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQg
ZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRp
b246IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2
NCB9IH0pOworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5E
VTIiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2Vy
aGFuZGxlQmFzZTY0KSwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRz
OiBbImludGVybmFsIl0gfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0
ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFz
ZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1d
IHdpdGggbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9y
ZXNvdXJjZXMvdXRpbC5qcwppbmRleCA2MWQ4ZjcyNWZmMmI1MTc4YWVhMTgzODhhNzU1MGUzYTI1
NjM2OWNkLi5iNjU1ZTJiMDQ4YTM5OWVhZDk5YzIwNTVmMDNhMzczYTRmNWIyMWM3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwpAQCAtNSw2
ICs1LDcgQEAgY29uc3QgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CiAgICAgIlJRPT0iOwog
Y29uc3QgdGVzdFJwSWQgPSAibG9jYWxob3N0IjsKIGNvbnN0IHRlc3RVc2VyaGFuZGxlQmFzZTY0
ID0gIkFBRUNBd1FGQmdjSUNRPT0iOworY29uc3QgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQg
PSAib21KcFpFb0FBUUlEQkFVR0J3Z0paRzVoYldWd1FVRkZRMEYzVVVaQ1oyTkpRMUU5UFE9PSI7
CiBjb25zdCB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCA9CiAgICAgIk1JSUI2akND
QVpDZ0F3SUJBZ0lHQVdIQXhjanZNQW9HQ0NxR1NNNDlCQU1DTUZNeEp6QWxCZ05WQkFNTUhrSmgi
ICsKICAgICAiYzJsaklFRjBkR1Z6ZEdGMGFXOXVJRlZ6WlhJZ1UzVmlJRU5CTVRFVE1CRUdBMVVF
Q2d3S1FYQndiR1VnU1c1aiIgKwpAQCAtNDQ5LDcgKzQ1MCw3IEBAIGZ1bmN0aW9uIGNoZWNrVTJm
R2V0QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwsIGlzQXBwSUQgPSBmYWxzZSwgYXBwSURIYXNo
ID0gImMyCiAKIGZ1bmN0aW9uIGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpCiB7Ci0gICAgbGV0
IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDE2KTsKKyAgICBsZXQgYnVmZmVyID0gbmV3IFVpbnQ4
QXJyYXkoOCk7CiAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhidWZmZXIpOwogICAgIHJldHVy
biBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwgYnVmZmVyKSk7CiB9CkBAIC00ODYs
MyArNDg3LDkgQEAgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVL
ZXlCYXNlNjQpIHsKICAgICBjb25zdCBwdWJsaWNLZXkgPSBwcml2YXRlS2V5LnNsaWNlKDAsIDY1
KTsKICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3Qo
InNoYS0xIiwgcHVibGljS2V5KSk7CiB9CisKK2Z1bmN0aW9uIGJhc2U2NGVuY29kZShiaW5hcnkp
Cit7CisgICAgY29uc3QgdW5pdDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGJpbmFyeSk7CisgICAg
cmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLCB1bml0OEFycmF5KSk7Cit9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393090</attachid>
            <date>2020-03-09 16:25:43 -0700</date>
            <delta_ts>2020-03-10 14:27:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183533-20200309162542.patch</filename>
            <type>text/plain</type>
            <size>141073</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjhjMTc2ZTgzMWQ1
ZjNmNDNiMDVlNjI5OTJkNGM1ZDU2Njk2Mi4uY2UyZWI0NmMxOWI0MDUzNTY0ODJhZDQ4MjA5MzYw
MGE4NzAxNzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAzLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBGb3Jt
YWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0Nzky
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzIHdpdGhpbiBleGlzdGluZyBmaWxlcy4KKworICAgICAg
ICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oOgorICAgICAgICBNb2RpZmllcyB0aGUg
Y29uc3RydWN0b3JzIHRvIGFjY2VwdCB1c2VyRW50aXR5Lm5hbWUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmg6CisgICAgICAgIEFkZHMgYSBGSVhNRS4KKwor
ICAgICAgICAqIHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9j
YWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjpkZWNvZGUp
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGw6CisgICAgICAgIE1vZGlmaWVzIHRoZSB0ZXN0IGluZnJhIHRvIHVzZSBDcmVkZW50aWFsIElE
IGFzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBjcmVkZW50aWFsIGluc3RlYWQgb2YKKyAg
ICAgICAgdGhlIG9yaWdpbmFsIGNvbWJpbmF0aW9uIG9mIFJQIElEIGFuZCB1c2VyIGhhbmRsZS4K
KwogMjAyMC0wMy0wNiAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU3NzYwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1OWY2
NmYxZjc3YzkwZWYwMzc2NmVhYzBhMTFkMjVjYWIwNjcwMjBjLi5jZDJmMzlkZWFkNTlhNGMzMmY2
YmVjNjc1MGJlNGFjNDYxZmI3N2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIwLTAz
LTA5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBGb3JtYWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80MzM0NzkyNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGZvcm1hbGl6ZXMgdGhlIHNjaGVtYSBmb3IgdGhlIEtleWNoYWluIGFz
IGZvbGxvdzoKKyAgICAgICAga1NlY0F0dHJMYWJlbDogUlAgSUQKKyAgICAgICAga1NlY0F0dHJB
cHBsaWNhdGlvbkxhYmVsOiBDcmVkZW50aWFsIElEIChhdXRvLWdlbiBieSBLZXljaGFpbikKKyAg
ICAgICAga1NlY0F0dHJBcHBsaWNhdGlvblRhZzogeyAiaWQiOiBVc2VyRW50aXR5LmlkLCAibmFt
ZSI6IFVzZXJFbnRpdHkubmFtZSB9IChDQk9SIGVuY29kZWQpCisgICAgICAgIE5vdGVkLCB0aGUg
dmFsZSBvZiBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgYnkgdGhlIEtleWNoYWluLCB3aGljaCBpcyBhIFNIQS0xIGhhc2ggb2YKKyAgICAgICAgdGhl
IHB1YmxpYyBrZXkuCisKKyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBTdGVwIDcuIGZyb20gaHR0
cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNvcC1tYWtlLWNyZWQsIHRoZSBmb2xsb3dpbmcg
ZmllbGRzIGFyZSBtYW5kYXRvcnkKKyAgICAgICAgMS4gcnBJZCAocnBFbnRpdHkuaWQpOworICAg
ICAgICAyLiB1c2VySGFuZGxlICh1c2VyRW50aXR5LmlkKSwgdGhpcyBpcyByZXF1aXJlZCBmb3Ig
YXV0aGVudGljYXRvcnMgdGhhdCBzdXBwb3J0IHJlc2lkZW50IGtleXM7CisgICAgICAgIDMuIGNy
ZWRlbnRpYWxJZC4KKworICAgICAgICBTb21lIG90aGVyIG9wdGlvbmFsIGZpZWxkcyBhcmU6Cisg
ICAgICAgIChmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jZGljdGRlZi1wdWJs
aWNrZXljcmVkZW50aWFscnBlbnRpdHkpCisgICAgICAgIDEuIHJwRW50aXR5Lm5hbWU7CisgICAg
ICAgIDIuIHJwRW5pdHR5Lmljb247CisgICAgICAgIChmcm9tIGh0dHBzOi8vd3d3LnczLm9yZy9U
Ui93ZWJhdXRobi8jZGljdGRlZi1wdWJsaWNrZXljcmVkZW50aWFsdXNlcmVudGl0eSkKKyAgICAg
ICAgMy4gdXNlckVudGl0eS5kaXNwbGF5TmFtZTsKKyAgICAgICAgNC4gdXNlckVudGl0eS5uYW1l
OworICAgICAgICA1LiB1c2VyRW50aXR5Lmljb247CisgICAgICAgIChmcm9tIGh0dHBzOi8vd3d3
LnczLm9yZy9UUi93ZWJhdXRobi8jc2lnbi1jb3VudGVyKQorICAgICAgICA2LiBzaWduYXR1cmUg
Y291bnRlci4KKworICAgICAgICBBbW9uZyB0aGUgc2l4IHBvc3NpYmxlIGZpZWxkcywgb25seSA0
LiBpcyBjaG9zZW4gdG8gc3RvcmUuIEhlcmUgaXMgd2h5OgorICAgICAgICBGb3IgcnBFbnRpdHks
IHJwRW50aXR5LmlkIHdoaWNoIGlzIGVpdGhlciB0aGUgZG9tYWluIG9yIHRoZSBlVExEICsgMSBv
ZiB0aGUgd2Vic2l0ZSBpcworICAgICAgICBzdWZmaWNpZW50IGVub3VnaCB0byBlaXRoZXIgY2xh
c3NpZnkgdGhlIGNyZWRlbnRpYWwgb3Igc2VydmluZyB0aGUgVUkuIEFsc28sIHRoaXMgaXMgb25s
eQorICAgICAgICB0aGUgdHJ1c3R3b3J0aHkgaW5mb3JtYXRpb24gdGhhdCB0aGUgVXNlckFnZW50
IHByb2R1Y2UuIE90aGVycyBjYW4gYmUgcG90ZW50aWFsbHkgdXNlZCBieQorICAgICAgICBtYWxp
Y2lvdXMgd2Vic2l0ZXMgZm9yIGF0dGFja2luZyB0aGUgS2V5Y2hhaW4gb3Igc3Bvb2ZpbmcvcGhp
c2hpbmcgdXNlcnMgd2hlbiBiZWluZyBkaXNwbGF5ZWQKKyAgICAgICAgaW4gdGhlIFVJLiBBbHNv
LCBycEVuaXR0eS5pY29uIGlzIGEgVVJMIHRvIHRoZSB3ZWJzaXRlJ3MgZmF2aWNvbiwgd2hpY2gg
aWYgbm90IGltcGxlbWVudGVkCisgICAgICAgIGNvcnJlY3RseSBjYW4gYmUgdXNlZCBmb3IgdHJh
Y2tpbmcuCisKKyAgICAgICAgRm9yIHVzZXJFbnRpdHksIHVzZXJFbnRpdHkubmFtZSBpcyB0aGUg
aHVtYW4gcmVhZGFibGUgdmVyc2lvbiBvZiB1c2VyRW50aXR5LmlkLCBhbmQgdGhlcmVmb3JlCisg
ICAgICAgIGlzIGNob3NlbiB0byBzdG9yZSBzdWNoIHRoYXQgbGF0ZXIgb24gV2ViS2l0IGNhbiBw
YXNzIGl0IHRvIFVJIGNsaWVudCB0byBoZWxwIHVzZXJzIGRpc2FtYmlndWF0ZQorICAgICAgICBk
aWZmZXJlbnQgY3JlZGVudGlhbHMuIEFuZCBpdCBpcyBuZWNlc3NhcnkgYXMgdXNlckVudGl0eS5p
ZCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBodW1hbgorICAgICAgICByZWFkYWJsZS4gT3RoZXJz
IGFyZSBhYmFuZG9uZWQgZm9yIHRoZSB2ZXJ5IHNhbWUgcmVhc29uIGFzIGFib3ZlLgorCisgICAg
ICAgIEZvciBzaWduYXR1cmUgY291bnRlciwgdGhpcyBpcyBhbiBpbnRlcmVzZXRpbmcgY291bnRl
ciBtZXRob2QgZm9yIFJQIHRvIGRldGVjdCBwcml2YXRlIGtleSBjbG9uaW5nLgorICAgICAgICBX
aGlsZSBpdCBzb3VuZHMgcGxhdXNpYmxlIGluIHBhcGVyLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUg
dXNlZnVsIGluIHByYWN0aWNlLiBGb3IgQXBwbGUncyBwbGF0Zm9ybQorICAgICAgICBhdXRoZW50
aWNhdG9yLCBwcml2YXRlIGtleXMgYXJlIHN0b3JlZCB3aXRoaW4gU0VQLiBJZiBhIHRoaXJkIHBh
cnR5IGNhbiBnZXQgYSBwcml2YXRlIGtleSBvdXQgZnJvbQorICAgICAgICB0aGUgU0VQIHdpdGhv
dXQgQXBwbGUgbm90aWNpbmcsIGFuZCBSUHMgbm90aWNlIGl0IGJlZm9yZSBBcHBsZS4gSXQgc2Vl
bXMgdG8gYmUgYSBtdWNoIGJpZ2dlciBjb25jZXJuCisgICAgICAgIGZvciBBcHBsZSB0aGFuIFJQ
cy4gUlBzIGhhdmUgbm8gcmVhc29ucyB0byBub3QgdHJ1c3QgQXBwbGUgd2lsbCBkbyBpdHMgam9i
LiBBbHNvLCBvdXIgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRvcnMgd2lsbCBwcm92aWRl
IGF0dGVzdGF0aW9ucyBzdWNoIHRoYXQgUlAgY2FuIHRydXN0IHByaXZhdGUga2V5cyBhcmUgYmVp
bmcgaGVsZCBzZWN1cmVseQorICAgICAgICB3aXRoaW4gdGhlIFNFUC4gU28gdGhpcyBmaWVsZCBp
cyBhYnNvbHV0ZWx5IHVzZWxlc3MuCisKKyAgICAgICAgSW4gdGVybXMgb2YgdGhlIHNjaGVtYSwK
KyAgICAgICAgMSkgUlAgSUQgaXMgbmVlZGVkIHRvIHF1ZXJ5IGFsbCBjcmVkZW50aWFscyByZWxh
dGVkLCBhbmQgdGhlcmVmb3JlIGl0IG5lZWRzIGEgY29sdW1uIGFuZCBrU2VjQXR0ckxhYmVsCisg
ICAgICAgIGlzIHN1cHBvc2VkIHRvIGJlIGh1bWFuIHJlYWRhYmxlOworICAgICAgICAyKSBrU2Vj
QXR0ckFwcGxpY2F0aW9uTGFiZWwgaXMgdGhlIGF1dG8gZ2VuZXJhdGVkIHByb2dyYW1tYXRpY2Fs
IGlkZW50aWZpZXIgZm9yIGEgU2VjSXRlbSwgYW5kCisgICAgICAgIHRoZXJlZm9yZSBpcyBzdWl0
YWJsZSBhcyB0aGUgY3JlZGVudGlhbCBJRC4gR2l2ZW4gdGhlIGlucHV0IHRvIHRoZSBTSEEtMSBp
cyBnZW5lcmF0ZWQgYnkgdXMsIGFuZAorICAgICAgICBpdCBpcyBvbmx5IG5lZWRlZCB0byBiZSBw
b3dlcmZ1bCBlbm91Z2ggdG8gYmUgdW5pcXVlIGFjcm9zcyB0aGUga2V5Y2hhaW4gd2l0aGluIGEg
ZGV2aWNlLCBhbmQgcG90ZW50aWFsbHkKKyAgICAgICAgdG8gYmUgdW5pcXVlIGFjcm9zcyBkaWZm
ZXJlbnQgb3RoZXIgY3JlZGVudGlhbCBJRCBmb3IgdGhlIHNhbWUgdXNlci4gVGhlIFNIQS0xIGNv
bGxpc2lvbiBhdHRhY2sKKyAgICAgICAgZG9lc24ndCBzZWVtIHZhbGlkIGhlcmUuCisgICAgICAg
IDMpIGtTZWNBdHRyQXBwbGljYXRpb25UYWcgaXMgdGhlIG9ubHkgb3RoZXIgY29sdW1uIEtleWNo
YWluIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gbW9kaWZ5LiBUaGVyZWZvcmUsCisgICAgICAgIFVz
ZXJFbnRpdHkuaWQgYW5kIFVzZXJFbnRpdHkubmFtZSBpcyBidW5kbGVkIHRvIHVzZSB0aGlzIHNs
b3QuIFRoZSByZWFzb24gdG8gdXNlIENCT1IgaGVyZSBpcyB0aGF0CisgICAgICAgIGl0IGlzIG1v
cmUgZnJpZW5kbHkgdGhlbiBKU09OIHRvIGVuY29kZSBiaW5hcmllcywgYW5kIGl0IGlzIHVzZWQg
d2lkZWx5IGluIFdlYkF1dGhuLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJB
dXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChXZWJL
aXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OmdldEV4aXN0aW5nQ3JlZGVudGlh
bHMpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFs
KToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVk
ZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxD
b25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjpmaWx0
ZXJSZXNwb25zZXMgY29uc3QpOgorCiAyMDIwLTAzLTA1ICBKaWV3ZW4gVGFuICA8amlld2VuX3Rh
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBEbyBub3QgcGVyZm9ybSBBdHRlc3Rh
dGlvbiB3aXRoIHR5cGUgaXMgJ25vbmUnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5j
cHAKaW5kZXggMzg4OTNlZTM2NjRlZWZiOTBlZDdiYTI0ZDNlNzdmODNiMzQzOTI3Zi4uMWMwYzA0
MWVjYjM3ZTkxODE2NmE1YWIzZWMwNGQ5ZWRmYWI1ZTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmNwcApAQCAtNDgsOSArNDgsOSBAQCBSZWY8QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShjb25z
dAogICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCksIHJh
d0lkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0YSgp
LCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25hdHVy
ZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBXVEZNb3ZlKHVzZXJoYW5kbGVCdWZmZXIpLCBX
VEY6Om51bGxvcHQpOwogfQogCi1SZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
cmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVm
IGFjY2Vzc0NvbnRyb2wpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3
SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNBY2Nl
c3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVz
ZXJIYW5kbGUpLCBhY2Nlc3NDb250cm9sKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVzZXJI
YW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBhY2Nlc3NDb250cm9sKSk7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8dWlu
dDhfdD4mJiBhdXRoZW50aWNhdG9yRGF0YSkKQEAgLTY2LDkgKzY2LDEwIEBAIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxB
cnJheUJ1ZmZlcj4mCiB7CiB9CiAKLUF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVm
PEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29u
dHJvbCkKK0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYm
IHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29u
dHJvbCkKICAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAgICAs
IG1fdXNlckhhbmRsZShXVEZNb3ZlKHVzZXJIYW5kbGUpKQorICAgICwgbV9uYW1lKFdURk1vdmUo
bmFtZSkpCiAgICAgLCBtX2FjY2Vzc0NvbnRyb2woYWNjZXNzQ29udHJvbCkKIHsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJiMzA5Y2Y5MDJhNjRlNWNhODdhNDk3NGZi
YTk4ZjI4M2MzNWRjNDAuLjVkY2QwMzc1MGYyZWFmYzAwYjMzNmYxYWE2OGFlYzliNDUyN2M3OGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMzcsNyArMzcsNyBAQCBjbGFz
cyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgOiBwdWJsaWMgQXV0aGVudGljYXRvclJl
c3BvbnNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25S
ZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVy
PiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50T3V0cHV0cz4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWludDhf
dD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdXNl
ckhhbmRsZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3JlYXRl
KFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUs
IFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIEFycmF5QnVmZmVy
KiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRvckRhdGEu
Z2V0KCk7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJheUJ1
ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwotICAg
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxB
cnJheUJ1ZmZlcj4mJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBT
dHJpbmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBUeXBlOjpBc3NlcnRpb247IH0KICAgICBBdXRoZW50aWNhdG9yUmVzcG9u
c2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaAppbmRleCA2YTRjODNhYmEwMzFjMzhkMzc5ZTY2YmM5
M2VjNDdlNWYxOTMxNzYxLi41ZTUzODNmYWNmNWRmYmQyOWNmMTUzNTU3Y2E1OGIyOGRiOTk4ODQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1
ZS5oCkBAIC0xNjQsNiArMTY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaW1wbGUoKSBjb25z
dCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6U2ltcGxlVmFsdWU7IH0KICAgICBib29sIGlzQm9v
bCgpIGNvbnN0IHsgcmV0dXJuIGlzU2ltcGxlKCkgJiYgKG1fc2ltcGxlVmFsdWUgPT0gU2ltcGxl
VmFsdWU6OlRydWVWYWx1ZSB8fCBtX3NpbXBsZVZhbHVlID09IFNpbXBsZVZhbHVlOjpGYWxzZVZh
bHVlKTsgfQogCisgICAgLy8gRklYTUUoMTgzNTM1KTogQ29uc2lkZXJpbmcgYWRkaW5nICYmIGdl
dHRlciBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIC8vIFRoZXNlIHdpbGwgYWxsIGZhdGFs
bHkgYXNzZXJ0IGlmIHRoZSB0eXBlIGRvZXNuJ3QgbWF0Y2guCiAgICAgU2ltcGxlVmFsdWUgZ2V0
U2ltcGxlVmFsdWUoKSBjb25zdDsKICAgICBib29sIGdldEJvb2woKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgKaW5kZXggNjI5NTU4ZjdmYmRmMDEyZjFlNjQxM2Y3OWU1NDc3NWEzY2VkMjU0
MS4uNzljZjQ1ZjFhMjdkNmRkN2EyMzliZWRlMGY3MTRmZjFmYThjYjIzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb24gewogICAgICAgICBTdHJpbmcgcHJpdmF0ZUtleUJhc2U2NDsKICAgICAg
ICAgU3RyaW5nIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDsKICAgICAgICAgU3RyaW5nIGludGVybWVk
aWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyBwcmVmZXJyZWRVc2VyaGFu
ZGxlQmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0Owog
CiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBj
b25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPExv
Y2FsQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBz
dHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CiB0ZW1wbGF0ZTxjbGFz
cyBFbmNvZGVyPgogdm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2Nh
bENvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVu
Y29kZXIgPDwgYWNjZXB0QXV0aGVudGljYXRpb24gPDwgYWNjZXB0QXR0ZXN0YXRpb24gPDwgcHJp
dmF0ZUtleUJhc2U2NCA8PCB1c2VyQ2VydGlmaWNhdGVCYXNlNjQgPDwgaW50ZXJtZWRpYXRlQ0FD
ZXJ0aWZpY2F0ZUJhc2U2NCA8PCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OworICAgIGVuY29k
ZXIgPDwgYWNjZXB0QXV0aGVudGljYXRpb24gPDwgYWNjZXB0QXR0ZXN0YXRpb24gPDwgcHJpdmF0
ZUtleUJhc2U2NCA8PCB1c2VyQ2VydGlmaWNhdGVCYXNlNjQgPDwgaW50ZXJtZWRpYXRlQ0FDZXJ0
aWZpY2F0ZUJhc2U2NCA8PCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ7CiB9CiAKIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNTAsMTEgKzE1MCwxMSBAQCBPcHRpb25hbDxNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tXZWJB
dXRoZW50aQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pbnRlcm1l
ZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0ID0gV1RGTW92ZSgqaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NCk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHByZWZlcnJlZFVzZXJoYW5kbGVC
YXNlNjQ7Ci0gICAgZGVjb2RlciA+PiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OwotICAgIGlm
ICghcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICBPcHRpb25hbDxTdHJpbmc+IHByZWZl
cnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKKyAgICBkZWNvZGVyID4+IHByZWZlcnJlZENyZWRlbnRp
YWxJZEJhc2U2NDsKKyAgICBpZiAoIXByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXN1bHQucHJlZmVycmVkVXNlcmhhbmRsZUJh
c2U2NCA9IFdURk1vdmUoKnByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQpOworICAgIHJlc3VsdC5w
cmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQgPSBXVEZNb3ZlKCpwcmVmZXJyZWRDcmVkZW50aWFs
SWRCYXNlNjQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24u
aWRsCmluZGV4IGFkMTM5MzQ5YWQyZmMxNWNhZDgzZjZiMmQxNmIwODM4NjAzZGVlMzYuLjIwOTk0
MzFjNjA0MTA2NDRmZWUyOWU2NmExMzc3MjE4ZTFjOGRiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmlkbApAQCAtNzYsNyArNzYsNyBAQAogICAgIERPTVN0cmluZyBwcml2YXRlS2V5QmFzZTY0
OwogICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgRE9NU3RyaW5nIGlu
dGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7Ci0gICAgRE9NU3RyaW5nIHByZWZlcnJlZFVz
ZXJoYW5kbGVCYXNlNjQ7CisgICAgRE9NU3RyaW5nIHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2
NDsKIH07CiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKaW5kZXgg
MjhhZWVjOGFkODQ0MDlmMDI0ZWUwNDIzZTY5MWY0YTg4MjZlZjUyYi4uMzUxOGM5YWZhNzhlNGY2
NzQwOTYxZmM4OTE3OGFmMWI4NjBiZDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLmgKQEAgLTY3LDEwICs2NywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29udGlu
dWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZpY2F0
aW9uLCBMQUNvbnRleHQgKik7CiAKICAgICB2b2lkIHJlY2VpdmVFeGNlcHRpb24oV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YSYmLCBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA9IFdlYkF1dGhlbnRpY2F0
aW9uU3RhdHVzOjpMQUVycm9yKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUR1cGxpY2F0ZUNyZWRl
bnRpYWwoKSBjb25zdDsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SW5pdCB9OwogICAg
IFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICAvLyBGSVhNRSgx
ODM1MzQpOiBDb21iaW5lIHRoZXNlIHR3by4KICAgICBIYXNoU2V0PFJlZjxXZWJDb3JlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiBtX2Fzc2VydGlvblJlc3BvbnNlczsKKyAgICBW
ZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+IG1fZXhp
c3RpbmdDcmVkZW50aWFsczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDQ3N2QzZDM0NTVjNWI3NzZjNWU3
ZjA5MDcwMzY3MjIyMmM3NWQ0MTAuLjliNmE4OTA2NjIxZmM3YjIzZWM3Nzc5OTNiOGFlMmE4OWIw
ODg5NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTMx
LDYgKzMxLDcgQEAKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0l0ZW0uaD4KICNpbXBvcnQgPFdlYkNv
cmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1
dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NCT1JS
ZWFkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9FeGNlcHRpb25EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIENCT1IgPSBjYm9yOjpDQk9SVmFsdWU7
CiAKIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbCB7CiAKQEAgLTU1LDEyICs1
NywxNSBAQCBjb25zdCB1aW50OF90IG1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAwMTAxOyAv
LyBVUCwgVVYgYW5kIEFUIGFyZSBzZXQuCiBjb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZsYWdz
ID0gMGIwMDAwMDEwMTsgLy8gVVAgYW5kIFVWIGFyZSBzZXQuCiAvLyBDcmVkZW50aWFsIElEIGlz
IGN1cnJlbnRseSBTSEEtMSBvZiB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5LgogY29uc3Qg
dWludDE2X3QgY3JlZGVudGlhbElkTGVuZ3RoID0gMjA7Citjb25zdCBjaGFyKiBjb25zdCB1c2Vy
RW50aXR5SWRLZXkgPSAiaWQiOworY29uc3QgY2hhciogY29uc3QgdXNlckVudGl0eU5hbWVLZXkg
PSAibmFtZSI7CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBlbXB0eVRyYW5zcG9ydHNPckNvbnRhaW4o
Y29uc3QgVmVjdG9yPEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ+JiB0cmFuc3BvcnRzLCBBdXRoZW50
aWNhdG9yVHJhbnNwb3J0IHRhcmdldCkKIHsKICAgICByZXR1cm4gdHJhbnNwb3J0cy5pc0VtcHR5
KCkgPyB0cnVlIDogdHJhbnNwb3J0cy5jb250YWlucyh0YXJnZXQpOwogfQogCisvLyBGSVhNRSgx
ODM1MzQpOiBGaW5kIGEgYmV0dGVyIHdheSBvZiBjb21wYXJpbmcgY3JlZGVudGlhbCBpZC4gRG9p
bmcgaXQgd2l0aCBhcnJheSBzZWVtcyBmaW5lIGdpdmVuIHRoZSBsaXN0IHNob3VsZCBiZSBzbWFs
bC4KIHN0YXRpYyBpbmxpbmUgSGFzaFNldDxTdHJpbmc+IHByb2R1Y2VIYXNoU2V0KGNvbnN0IFZl
Y3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4mIGNyZWRlbnRpYWxEZXNjcmlwdG9y
cykKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gcmVzdWx0OwpAQCAtOTgsNiArMTAzLDExIEBAIHN0
YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkK
ICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpOwogfQogCitzdGF0aWMgaW5saW5lIFJl
ZjxBcnJheUJ1ZmZlcj4gdG9BcnJheUJ1ZmZlcihjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEp
Cit7CisgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKK30KKwogLy8gRklYTUUoPHJkYXI6Ly9wcm9ibGVtLzYwMTA4MTMxPik6IFJlbW92ZSB0
aGlzIHdoaXRlbGlzdCBvbmNlIHRlc3RpbmcgaXMgY29tcGxldGUuCiBzdGF0aWMgY29uc3QgSGFz
aFNldDxTdHJpbmc+JiB3aGl0ZWxpc3RlZFJwSWQoKQogewpAQCAtMTA5LDYgKzExOSw1NyBAQCBz
dGF0aWMgY29uc3QgSGFzaFNldDxTdHJpbmc+JiB3aGl0ZWxpc3RlZFJwSWQoKQogICAgIHJldHVy
biB3aGl0ZWxpc3RlZFJwSWQ7CiB9CiAKK3N0YXRpYyBPcHRpb25hbDxWZWN0b3I8UmVmPEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+PiBnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKGNvbnN0
IFN0cmluZyYgcnBJZCkKK3sKKyAgICAvLyBTZWFyY2ggS2V5Y2hhaW4gZm9yIGV4aXN0aW5nIGNy
ZWRlbnRpYWwgbWF0Y2hlZCB0aGUgUlAgSUQuCisgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9IEB7
CisgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCisgICAgICAgIChpZClr
U2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCisgICAgICAgIChp
ZClrU2VjQXR0ckxhYmVsOiBycElkLAorICAgICAgICAoaWQpa1NlY1JldHVybkF0dHJpYnV0ZXM6
IEBZRVMsCisgICAgICAgIChpZClrU2VjTWF0Y2hMaW1pdDogKGlkKWtTZWNNYXRjaExpbWl0QWxs
LAorI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAoaWQpa1NlY1Vz
ZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKKyNlbHNlCisgICAgICAgIChpZClrU2VjQXR0
ck5vTGVnYWN5OiBAWUVTCisjZW5kaWYKKyAgICB9OworICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVz
QXJyYXlSZWYgPSBudWxscHRyOworICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0
Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJl
Zik7CisgICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGF1dG8gcmV0YWluQXR0cmlidXRlc0FycmF5
ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYpOworICAgIE5TQXJyYXkgKm5zQXR0cmlidXRl
c0FycmF5ID0gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWY7CisKKyAgICBWZWN0b3I8UmVm
PEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+IHJlc3VsdDsKKyAgICByZXN1bHQucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShuc0F0dHJpYnV0ZXNBcnJheS5jb3VudCk7CisgICAgZm9yIChO
U0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgaW4gbnNBdHRyaWJ1dGVzQXJyYXkpIHsKKyAgICAgICAg
YXV0byBkZWNvZGVkUmVzcG9uc2UgPSBjYm9yOjpDQk9SUmVhZGVyOjpyZWFkKHRvVmVjdG9yKGF0
dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWddKSk7CisgICAgICAgIGlmICghZGVj
b2RlZFJlc3BvbnNlIHx8ICFkZWNvZGVkUmVzcG9uc2UtPmlzTWFwKCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgfQorICAgICAgICBhdXRvJiByZXNwb25zZU1hcCA9IGRlY29kZWRSZXNwb25zZS0+
Z2V0TWFwKCk7CisKKyAgICAgICAgYXV0byBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUih1c2Vy
RW50aXR5SWRLZXkpKTsKKyAgICAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFwLmVuZCgpIHx8ICFp
dC0+c2Vjb25kLmlzQnl0ZVN0cmluZygpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAg
ICAgYXV0byYgdXNlckhhbmRsZSA9IGl0LT5zZWNvbmQuZ2V0Qnl0ZVN0cmluZygpOworCisgICAg
ICAgIGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKHVzZXJFbnRpdHlOYW1lS2V5KSk7CisgICAg
ICAgIGlmIChpdCA9PSByZXNwb25zZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc1N0cmluZygp
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAgYXV0byYgdXNlcm5hbWUgPSBpdC0+
c2Vjb25kLmdldFN0cmluZygpOworCisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUodG9BcnJheUJ1ZmZlcihhdHRyaWJ1
dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwgdG9BcnJheUJ1ZmZlcih1c2VySGFu
ZGxlKSwgU3RyaW5nKHVzZXJuYW1lKSwgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpYXR0
cmlidXRlc1soaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSkpOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiB9IC8vIExvY2FsQXV0aGVudGljYXRvckludGVybmFsCiAKIExvY2FsQXV0
aGVudGljYXRvcjo6TG9jYWxBdXRoZW50aWNhdG9yKFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+
JiYgY29ubmVjdGlvbikKQEAgLTEzNiwzNyArMTk3LDIzIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNh
dG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgfQogCiAgICAgLy8gU3RlcCAzLgorICAgIGF1dG8g
ZXhpc3RpbmdDcmVkZW50aWFscyA9IGdldEV4aXN0aW5nQ3JlZGVudGlhbHMoY3JlYXRpb25PcHRp
b25zLnJwLmlkKTsKKyAgICBpZiAoIWV4aXN0aW5nQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgcmVj
ZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IGV4
aXN0aW5nIGNyZWRlbnRpYWxzIikgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9l
eGlzdGluZ0NyZWRlbnRpYWxzID0gV1RGTW92ZSgqZXhpc3RpbmdDcmVkZW50aWFscyk7CisKICAg
ICBhdXRvIGV4Y2x1ZGVDcmVkZW50aWFsSWRzID0gcHJvZHVjZUhhc2hTZXQoY3JlYXRpb25PcHRp
b25zLmV4Y2x1ZGVDcmVkZW50aWFscyk7CiAgICAgaWYgKCFleGNsdWRlQ3JlZGVudGlhbElkcy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgLy8gU2VhcmNoIEtleWNoYWluIGZvciB0aGUgUlAgSUQuCi0g
ICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBAewotICAgICAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAo
aWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJl
bDogY3JlYXRpb25PcHRpb25zLnJwLmlkLAotICAgICAgICAgICAgKGlkKWtTZWNSZXR1cm5BdHRy
aWJ1dGVzOiBAWUVTLAotICAgICAgICAgICAgKGlkKWtTZWNNYXRjaExpbWl0OiAoaWQpa1NlY01h
dGNoTGltaXRBbGwsCi0jaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAg
ICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKLSNlbHNlCi0gICAg
ICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwotI2VuZGlmCi0gICAgICAgIH07Ci0g
ICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOwotICAgICAgICBP
U1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25h
cnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwotICAgICAgICBpZiAoc3RhdHVzICYm
IHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgICAgIHJlY2VpdmVFeGNl
cHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IHF1ZXJ5IEtleWNoYWlu
OiAiLCBzdGF0dXMpIH0pOworICAgICAgICBpZiAobm90Rm91bmQgIT0gbV9leGlzdGluZ0NyZWRl
bnRpYWxzLmZpbmRNYXRjaGluZyhbJmV4Y2x1ZGVDcmVkZW50aWFsSWRzXSAoYXV0byYgY3JlZGVu
dGlhbCkgeworICAgICAgICAgICAgYXV0byogcmF3SWQgPSBjcmVkZW50aWFsLT5yYXdJZCgpOwor
ICAgICAgICAgICAgQVNTRVJUKHJhd0lkKTsKKyAgICAgICAgICAgIHJldHVybiBleGNsdWRlQ3Jl
ZGVudGlhbElkcy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
cmF3SWQtPmRhdGEoKSksIHJhd0lkLT5ieXRlTGVuZ3RoKCkpKTsKKyAgICAgICAgfSkpIHsKKyAg
ICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBv
bmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMg
bGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSwgV2ViQXV0
aGVudGljYXRpb25TdGF0dXM6OkxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hlZCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJy
YXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7Ci0KLSAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQgdGhlbiByZXR1cm4gZGlmZmVyZW50IGVycm9y
IGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgotICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqbnNB
dHRyaWJ1dGVzIGluIChOU0FycmF5ICopYXR0cmlidXRlc0FycmF5UmVmKSB7Ci0gICAgICAgICAg
ICBOU0RhdGEgKm5zQ3JlZGVudGlhbElkID0gbnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxp
Y2F0aW9uTGFiZWxdOwotICAgICAgICAgICAgaWYgKGV4Y2x1ZGVDcmVkZW50aWFsSWRzLmNvbnRh
aW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihuc0NyZWRlbnRpYWxJZC5i
eXRlcyksIG5zQ3JlZGVudGlhbElkLmxlbmd0aCkpKSB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1h
dGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0
Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1
czo6TEFFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaGVkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvLyBTdGVwIDYuCkBAIC0y
MjgsMzUgKzI3NSwyMiBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3Jl
ZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgLy8gRklYTUUoMTgzNTMzKTogQSBzaW5nbGUga1NlY0NsYXNzS2V5IGl0
ZW0gY291bGRuJ3Qgc3RvcmUgYWxsIG1ldGEgZGF0YS4gVGhlIGZvbGxvd2luZyBzY2hlbWEgaXMg
YSB0ZW50YXRpdmUgc29sdXRpb24KLSAgICAvLyB0byBhY2NvbW1vZGF0ZSB0aGUgbW9zdCBpbXBv
cnRhbnQgbWV0YSBkYXRhLCBpLmUuIFJQIElELCBDcmVkZW50aWFsIElELCBhbmQgdXNlcmhhbmRs
ZS4KKyAgICAvLyBIZXJlIGlzIHRoZSBrZXljaGFpbiBzY2hlbWEuCiAgICAgLy8ga1NlY0F0dHJM
YWJlbDogUlAgSUQKICAgICAvLyBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IENyZWRlbnRpYWwg
SUQgKGF1dG8tZ2VuIGJ5IEtleWNoYWluKQotICAgIC8vIGtTZWNBdHRyQXBwbGljYXRpb25UYWc6
IHVzZXJoYW5kbGUKKyAgICAvLyBrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiB7ICJpZCI6IFVzZXJF
bnRpdHkuaWQsICJuYW1lIjogVXNlckVudGl0eS5uYW1lIH0gKENCT1IgZW5jb2RlZCkKICAgICAv
LyBOb3RlZCwgdGhlIHZhbGUgb2Yga1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsIGlzIGF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBLZXljaGFpbiwgd2hpY2ggaXMgYSBTSEEtMSBoYXNoIG9m
Ci0gICAgLy8gdGhlIHB1YmxpYyBrZXkuIFdlIGJvcnJvdyBpdCBkaXJlY3RseSBmb3Igbm93IHRv
IHdvcmthcm91bmQgdGhlIHN0YXRlZCBsaW1pdGF0aW9ucy4KKyAgICAvLyB0aGUgcHVibGljIGtl
eS4KICAgICBjb25zdCBhdXRvJiBzZWNBdHRyTGFiZWwgPSBjcmVhdGlvbk9wdGlvbnMucnAuaWQ7
Ci0gICAgYXV0byBzZWNBdHRyQXBwbGljYXRpb25UYWcgPSB0b05TRGF0YShjcmVhdGlvbk9wdGlv
bnMudXNlci5pZFZlY3Rvcik7CiAKLSAgICAvLyBTdGVwIDcuNS4KLSAgICAvLyBGYWlsdXJlcyBh
ZnRlciB0aGlzIHBvaW50IGNvdWxkIGJsb2NrIHVzZXJzJyBhY2NvdW50cyBmb3JldmVyLiBTaG91
bGQgd2UgZm9sbG93IHRoZSBzcGVjPwotICAgIE5TRGljdGlvbmFyeSogZGVsZXRlUXVlcnkgPSBA
ewotICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAotICAgICAgICAoaWQp
a1NlY0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAotICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNh
dGlvblRhZzogc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpLAotI2lmIEhBVkUoREFUQV9QUk9U
RUNUSU9OX0tFWUNIQUlOKQotICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hh
aW46IEBZRVMKLSNlbHNlCi0gICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCi0jZW5k
aWYKLSAgICB9OwotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilkZWxldGVRdWVyeSk7Ci0gICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMg
IT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7Ci0gICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtu
b3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGRlbGV0ZSBvbGRlciBjcmVkZW50aWFsOiAi
LCBzdGF0dXMpIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNib3I6OkNCT1JWYWx1
ZTo6TWFwVmFsdWUgdXNlckVudGl0eU1hcDsKKyAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JW
YWx1ZSh1c2VyRW50aXR5SWRLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMu
dXNlci5pZFZlY3Rvcik7CisgICAgdXNlckVudGl0eU1hcFtjYm9yOjpDQk9SVmFsdWUodXNlckVu
dGl0eU5hbWVLZXkpXSA9IGNib3I6OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1l
KTsKKyAgICBhdXRvIHVzZXJFbnRpdHkgPSBjYm9yOjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpD
Qk9SVmFsdWUoV1RGTW92ZSh1c2VyRW50aXR5TWFwKSkpOworICAgIEFTU0VSVCh1c2VyRW50aXR5
KTsKKyAgICBhdXRvIHNlY0F0dHJBcHBsaWNhdGlvblRhZyA9IHRvTlNEYXRhKCp1c2VyRW50aXR5
KTsKIAotICAgIC8vIFN0ZXAgNy4xLTcuNC4KKyAgICAvLyBTdGVwIDcuCiAgICAgLy8gVGhlIGFi
b3ZlLXRvLWNyZWF0ZSBwcml2YXRlIGtleSB3aWxsIGJlIGluc2VydGVkIGludG8ga2V5Y2hhaW4g
d2hpbGUgdXNpbmcgU0VQLgogICAgIGF1dG8gcHJpdmF0ZUtleSA9IG1fY29ubmVjdGlvbi0+Y3Jl
YXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoY29udGV4dCwgYWNjZXNzQ29udHJvbFJlZiwgc2VjQXR0
ckxhYmVsLCBzZWNBdHRyQXBwbGljYXRpb25UYWcuZ2V0KCkpOwogICAgIGlmICghcHJpdmF0ZUtl
eSkgewpAQCAtMjY0LDMwICsyOTgsNDMgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRp
bnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAorICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHB1YmxpY0tleURh
dGFSZWY7CisgICAgeworICAgICAgICBhdXRvIHB1YmxpY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q29w
eVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSk7CisgICAgICAgIENGRXJyb3JSZWYgZXJyb3JS
ZWYgPSBudWxscHRyOworICAgICAgICBwdWJsaWNLZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlD
b3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJsaWNLZXkuZ2V0KCksICZlcnJvclJlZikpOwor
ICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRvcHRDRihlcnJvclJlZik7CisgICAgICAgIGlm
IChlcnJvclJlZikgeworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJv
ciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZXhwb3J0IHRoZSBwdWJsaWMga2V5OiAiLCBTdHJpbmco
KChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoKChOU0RhdGEgKilwdWJsaWNL
ZXlEYXRhUmVmLmdldCgpKS5sZW5ndGggPT0gKDEgKyAyICogRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgpKTsgLy8gMDQgfCBYIHwgWQorICAgIH0KKyAgICBOU0RhdGEgKm5zUHVibGljS2V5RGF0YSA9
IChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpOworCisgICAgLy8gUXVlcnkgY3JlZGVu
dGlhbElkIGluIHRoZSBrZXljaGFpbiBjb3VsZCBiZSByYWN5IGFzIGl0IGlzIHRoZSBvbmx5IHVu
aXF1ZSBpZGVudGlmaWVyCisgICAgLy8gb2YgdGhlIGtleSBpdGVtLiBJbnN0ZWFkIHdlIGNhbGN1
bGF0ZSB0aGF0LCBhbmQgZXhhbWluZSBpdHMgZXF1YWl0eSBpbiBERUJVRyBidWlsZC4KICAgICBW
ZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOwogICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3Qg
PSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBBTDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06
OlNIQV8xKTsKKyAgICAgICAgZGlnZXN0LT5hZGRCeXRlcyhuc1B1YmxpY0tleURhdGEuYnl0ZXMs
IG5zUHVibGljS2V5RGF0YS5sZW5ndGgpOworICAgICAgICBjcmVkZW50aWFsSWQgPSBkaWdlc3Qt
PmNvbXB1dGVIYXNoKCk7CisKKyNpZm5kZWYgTkRFQlVHCiAgICAgICAgIE5TRGljdGlvbmFyeSAq
Y3JlZGVudGlhbElkUXVlcnkgPSBAewogICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtT
ZWNDbGFzc0tleSwKICAgICAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0
dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0
ckxhYmVsLAotICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHNlY0F0dHJB
cHBsaWNhdGlvblRhZy5nZXQoKSwKLSAgICAgICAgICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRl
czogQFlFUywKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNE
YXRhKGNyZWRlbnRpYWxJZCkuZ2V0KCksCiAjaWYgSEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hB
SU4pCiAgICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMK
ICNlbHNlCiAgICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCiAg
ICAgICAgIH07Ci0gICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzUmVmID0gbnVsbHB0cjsKLSAg
ICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZE
aWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCAmYXR0cmlidXRlc1JlZik7Ci0gICAgICAg
IGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJy
b3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGdldCBDcmVkZW50aWFsIElEOiAiLCBzdGF0dXMpIH0p
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gcmV0YWluQXR0
cmlidXRlcyA9IGFkb3B0Q0YoYXR0cmlidXRlc1JlZik7Ci0KLSAgICAgICAgTlNEaWN0aW9uYXJ5
ICpuc0F0dHJpYnV0ZXMgPSAoTlNEaWN0aW9uYXJ5ICopYXR0cmlidXRlc1JlZjsKLSAgICAgICAg
Y3JlZGVudGlhbElkID0gdG9WZWN0b3IobnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0
aW9uTGFiZWxdKTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGlu
ZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5LCBudWxscHRyKTsK
KyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworI2VuZGlmIC8vIE5ERUJVRwogICAgIH0KIAogICAg
IC8vIFN0ZXAgMTAuCkBAIC0yOTgsMjQgKzM0NSwxMSBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3ND
bwogICAgIC8vIGNyZWRlbnRpYWxQdWJsaWNLZXkKICAgICBWZWN0b3I8dWludDhfdD4gY29zZVB1
YmxpY0tleTsKICAgICB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHB1YmxpY0tleURh
dGFSZWY7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gcHVibGljS2V5ID0gYWRvcHRDRihT
ZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkuZ2V0KCkpKTsKLSAgICAgICAgICAgIENGRXJy
b3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOwotICAgICAgICAgICAgcHVibGljS2V5RGF0YVJlZiA9
IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVibGljS2V5LmdldCgp
LCAmZXJyb3JSZWYpKTsKLSAgICAgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVy
cm9yUmVmKTsKLSAgICAgICAgICAgIGlmIChlcnJvclJlZikgewotICAgICAgICAgICAgICAgIHJl
Y2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGV4cG9y
dCB0aGUgcHVibGljIGtleTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JSZWYpLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKSkgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgQVNTRVJUKCgoTlNEYXRhICopcHVibGljS2V5RGF0YVJlZi5nZXQoKSku
bGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKSk7IC8vIDA0IHwgWCB8
IFkKLSAgICAgICAgfQotCiAgICAgICAgIC8vIENPU0UgRW5jb2RpbmcKICAgICAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHgoRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOwotICAgICAgICBbKE5TRGF0YSAq
KXB1YmxpY0tleURhdGFSZWYuZ2V0KCkgZ2V0Qnl0ZXM6IHguZGF0YSgpIHJhbmdlOk5TTWFrZVJh
bmdlKDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CisgICAgICAgIFtuc1B1YmxpY0tleURh
dGEgZ2V0Qnl0ZXM6IHguZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEsIEVTMjU2RmllbGRFbGVt
ZW50TGVuZ3RoKV07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB5KEVTMjU2RmllbGRFbGVtZW50
TGVuZ3RoKTsKLSAgICAgICAgWyhOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpIGdldEJ5
dGVzOiB5LmRhdGEoKSByYW5nZTpOU01ha2VSYW5nZSgxICsgRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CisgICAgICAgIFtuc1B1YmxpY0tleURhdGEg
Z2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEgKyBFUzI1NkZpZWxkRWxlbWVu
dExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKICAgICAgICAgY29zZVB1YmxpY0tl
eSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUoeCksIFdURk1vdmUoeSkpOwog
ICAgIH0KICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zODMyMDUxMik6IERlZmluZSBBcHBs
ZSBBQUdVSUQuCkBAIC0zMjYsNiArMzYwLDggQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2VjQWNjZXNzQ28KIAog
ICAgIC8vIFNraXAgQXBwbGUgQXR0ZXN0YXRpb24gZm9yIG5vbmUgYXR0ZXN0YXRpb24sIGFuZCBu
b24gd2hpdGVsaXN0ZWQgUlAgSUQgZm9yIG5vdy4KICAgICBpZiAoY3JlYXRpb25PcHRpb25zLmF0
dGVzdGF0aW9uID09IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUgfHwgIXdo
aXRlbGlzdGVkUnBJZCgpLmNvbnRhaW5zKGNyZWF0aW9uT3B0aW9ucy5ycC5pZCkpIHsKKyAgICAg
ICAgZGVsZXRlRHVwbGljYXRlQ3JlZGVudGlhbCgpOworCiAgICAgICAgIGF1dG8gYXR0ZXN0YXRp
b25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiIiwg
eyB9LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsKICAgICAgICAgcmVj
ZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShjcmVk
ZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM3MCw2
ICs0MDYsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlh
bEFmdGVyQXR0ZXN0ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgYwogICAgIH0KICAgICBhdXRvIGF0dGVz
dGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3ZlKGF1dGhEYXRhKSwg
ImFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNyZWF0aW9uT3B0aW9u
cy5hdHRlc3RhdGlvbik7CiAKKyAgICBkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7CiAgICAg
cmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
cmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CiB9CiAKQEAgLTM5Miw1MSArNDI5LDMy
IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgIH0KIAogICAg
IC8vIFNlYXJjaCBLZXljaGFpbiBmb3IgdGhlIFJQIElELgotICAgIE5TRGljdGlvbmFyeSAqcXVl
cnkgPSBAewotICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAotICAgICAg
ICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRlLAotICAg
ICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcmVxdWVzdE9wdGlvbnMucnBJZCwKLSAgICAgICAgKGlk
KWtTZWNSZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAotICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6
IChpZClrU2VjTWF0Y2hMaW1pdEFsbCwKLSNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJ
TikKLSAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCi0jZWxz
ZQotICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwotI2VuZGlmCi0gICAgfTsKLSAg
ICBDRlR5cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsKLSAgICBPU1N0YXR1cyBz
dGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVl
cnksICZhdHRyaWJ1dGVzQXJyYXlSZWYpOwotICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVy
clNlY0l0ZW1Ob3RGb3VuZCkgewotICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVy
cm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBxdWVyeSBLZXljaGFpbjogIiwgc3RhdHVzKSB9KTsK
KyAgICBhdXRvIGV4aXN0aW5nQ3JlZGVudGlhbHMgPSBnZXRFeGlzdGluZ0NyZWRlbnRpYWxzKHJl
cXVlc3RPcHRpb25zLnJwSWQpOworICAgIGlmICghZXhpc3RpbmdDcmVkZW50aWFscykgeworICAg
ICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4n
dCBnZXQgZXhpc3RpbmcgY3JlZGVudGlhbHMiKSB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBhdXRvIHJldGFpbkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5
UmVmKTsKKyAgICBtX2V4aXN0aW5nQ3JlZGVudGlhbHMgPSBXVEZNb3ZlKCpleGlzdGluZ0NyZWRl
bnRpYWxzKTsKKworICAgIGZvciAoYXV0byYgY3JlZGVudGlhbCA6IG1fZXhpc3RpbmdDcmVkZW50
aWFscykgeworICAgICAgICBpZiAoYWxsb3dDcmVkZW50aWFsSWRzLmlzRW1wdHkoKSkgeworICAg
ICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy5hZGQoY3JlZGVu
dGlhbC5jb3B5UmVmKCkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFk
ZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAK
LSAgICBOU0FycmF5ICppbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcyA9IG5pbDsKLSAg
ICBpZiAocmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkpCi0gICAgICAg
IGludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVzID0gKE5TQXJyYXkgKilhdHRyaWJ1dGVz
QXJyYXlSZWY7Ci0gICAgZWxzZSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6YWxsb3dDcmVkZW50aWFsSWRzLnNpemUo
KV07Ci0gICAgICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkg
KilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsKLSAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFs
SWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07Ci0gICAgICAg
ICAgICBpZiAoYWxsb3dDcmVkZW50aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIqPihuc0NyZWRlbnRpYWxJZC5ieXRlcyksIG5zQ3JlZGVudGlhbElkLmxl
bmd0aCkpKQotICAgICAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zQXR0cmlidXRlc107
CisgICAgICAgIGF1dG8qIHJhd0lkID0gY3JlZGVudGlhbC0+cmF3SWQoKTsKKyAgICAgICAgaWYg
KGFsbG93Q3JlZGVudGlhbElkcy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4ocmF3SWQtPmRhdGEoKSksIHJhd0lkLT5ieXRlTGVuZ3RoKCkpKSkgeworICAgICAg
ICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy5hZGQoY3JlZGVudGlh
bC5jb3B5UmVmKCkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJl
c3VsdC5pc05ld0VudHJ5KTsKICAgICAgICAgfQotICAgICAgICBpbnRlcnNlY3RlZENyZWRlbnRp
YWxzQXR0cmlidXRlcyA9IHJlc3VsdDsKICAgICB9Ci0gICAgaWYgKCFpbnRlcnNlY3RlZENyZWRl
bnRpYWxzQXR0cmlidXRlcy5jb3VudCkgeworICAgIGlmIChtX2Fzc2VydGlvblJlc3BvbnNlcy5p
c0VtcHR5KCkpIHsKICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwg
Ik5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hl
ZCBhdXRoZW50aWNhdG9yLiJfcyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFOb0NyZWRl
bnRpYWwpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gU3RlcCA2LTcuIFVzZXIg
Y29uc2VudCBpcyBpbXBsaWNpdGx5IGFjcXVpcmVkIGJ5IHNlbGVjdGluZyByZXNwb25zZXMuCi0g
ICAgZm9yIChOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZSA6IGludGVyc2VjdGVkQ3JlZGVudGlhbHNB
dHRyaWJ1dGVzKSB7Ci0gICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hc3NlcnRpb25SZXNwb25z
ZXMuYWRkKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKAotICAgICAgICAg
ICAgdG9BcnJheUJ1ZmZlcihhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF0p
LAotICAgICAgICAgICAgdG9BcnJheUJ1ZmZlcihhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQXBwbGlj
YXRpb25UYWddKSwKLSAgICAgICAgICAgIChfX2JyaWRnZSBTZWNBY2Nlc3NDb250cm9sUmVmKWF0
dHJpYnV0ZVsoaWQpa1NlY0F0dHJBY2Nlc3NDb250cm9sXSkpOwotICAgICAgICBBU1NFUlRfVU5V
U0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KICAgICBtX2Nvbm5l
Y3Rpb24tPmZpbHRlclJlc3BvbnNlcyhtX2Fzc2VydGlvblJlc3BvbnNlcyk7CiAKICAgICBpZiAo
YXV0byogb2JzZXJ2ZXIgPSB0aGlzLT5vYnNlcnZlcigpKSB7CkBAIC01NDEsNiArNTU5LDMzIEBA
IHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpyZWNlaXZlRXhjZXB0aW9uKEV4Y2VwdGlvbkRhdGEm
JiBleGNlcHRpb24sIFdlYkF1dGhlbnRpCiAgICAgcmV0dXJuOwogfQogCit2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6ZGVsZXRlRHVwbGljYXRlQ3JlZGVudGlhbCgpIGNvbnN0Cit7CisgICAgdXNp
bmcgbmFtZXNwYWNlIExvY2FsQXV0aGVudGljYXRvckludGVybmFsOworCisgICAgYXV0byYgY3Jl
YXRpb25PcHRpb25zID0gV1RGOjpnZXQ8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cz4ocmVxdWVzdERhdGEoKS5vcHRpb25zKTsKKyAgICBtX2V4aXN0aW5nQ3JlZGVudGlhbHMuZmlu
ZE1hdGNoaW5nKFtjcmVhdGlvbk9wdGlvbnNdIChhdXRvJiBjcmVkZW50aWFsKSB7CisgICAgICAg
IGF1dG8qIHVzZXJIYW5kbGUgPSBjcmVkZW50aWFsLT51c2VySGFuZGxlKCk7CisgICAgICAgIEFT
U0VSVCh1c2VySGFuZGxlKTsKKyAgICAgICAgaWYgKG1lbWNtcCh1c2VySGFuZGxlLT5kYXRhKCks
IGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxl
bmd0aCgpKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBOU0RpY3Rpb25h
cnkqIGRlbGV0ZVF1ZXJ5ID0gQHsKKyAgICAgICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2Vj
Q2xhc3NLZXksCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsOiB0b05T
RGF0YShjcmVkZW50aWFsLT5yYXdJZCgpKS5nZXQoKSwKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElP
Tl9LRVlDSEFJTikKKyAgICAgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFp
bjogQFlFUworI2Vsc2UKKyAgICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCisj
ZW5kaWYKKyAgICAgICAgfTsKKyAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0
ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKKyAgICAgICAgaWYgKHN0
YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKQorICAgICAgICAgICAgTE9HX0VS
Uk9SKG1ha2VTdHJpbmcoIkNvdWxkbid0IGRlbGV0ZSBvbGRlciBjcmVkZW50aWFsOiAiX3MsIHN0
YXR1cykudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0pOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJfQVVUSE4pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2Nr
L01vY2tMb2NhbENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0KaW5kZXggYjFjOTg3NDc5ZjRk
N2NjMWE3NDg3NTkxMzFjODYyNDNlYjY3NmU2Ny4uYjVjYWQwN2MxNjc1YzJjY2RiODEyZmMxYzc1
MTczNjZiOWZhODExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5t
bQpAQCAtMTE1LDE2ICsxMTUsMTYgQEAgdm9pZCBNb2NrTG9jYWxDb25uZWN0aW9uOjpnZXRBdHRl
c3RhdGlvbihTZWNLZXlSZWYsIE5TRGF0YSAqLCBOU0RhdGEgKiwgQXR0ZXN0YXQKIAogdm9pZCBN
b2NrTG9jYWxDb25uZWN0aW9uOjpmaWx0ZXJSZXNwb25zZXMoSGFzaFNldDxSZWY8V2ViQ29yZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4mIHJlc3BvbnNlcykgY29uc3QKIHsKLSAg
ICBjb25zdCBhdXRvJiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0ID0gbV9jb25maWd1cmF0aW9u
LmxvY2FsLT5wcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OwotICAgIGlmIChwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0LmlzRW1wdHkoKSkKKyAgICBjb25zdCBhdXRvJiBwcmVmZXJyZWRDcmVkZW50
aWFsSWRCYXNlNjQgPSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZENyZWRlbnRpYWxJ
ZEJhc2U2NDsKKyAgICBpZiAocHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byBpdHIgPSByZXNwb25zZXMuYmVnaW4oKTsKICAg
ICBmb3IgKDsgaXRyICE9IHJlc3BvbnNlcy5lbmQoKTsgKytpdHIpIHsKLSAgICAgICAgYXV0byog
dXNlckhhbmRsZSA9IGl0ci0+Z2V0KCkudXNlckhhbmRsZSgpOwotICAgICAgICBBU1NFUlQodXNl
ckhhbmRsZSk7Ci0gICAgICAgIGF1dG8gdXNlcmhhbmRsZUJhc2U2NCA9IGJhc2U2NEVuY29kZSh1
c2VySGFuZGxlLT5kYXRhKCksIHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSk7Ci0gICAgICAgIGlm
ICh1c2VyaGFuZGxlQmFzZTY0ID09IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQpCisgICAgICAg
IGF1dG8qIHJhd0lkID0gaXRyLT5nZXQoKS5yYXdJZCgpOworICAgICAgICBBU1NFUlQocmF3SWQp
OworICAgICAgICBhdXRvIHJhd0lkQmFzZTY0ID0gYmFzZTY0RW5jb2RlKHJhd0lkLT5kYXRhKCks
IHJhd0lkLT5ieXRlTGVuZ3RoKCkpOworICAgICAgICBpZiAocmF3SWRCYXNlNjQgPT0gcHJlZmVy
cmVkQ3JlZGVudGlhbElkQmFzZTY0KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGF1
dG8gcmVzcG9uc2UgPSByZXNwb25zZXMudGFrZShpdHIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYxNzZhYTRmM2NiYzkzOGFhZGYwMjA2Mzc2
ZGQzNjM2YTg4ZjZiNDguLmUxZTc3ZWE3YTE3OTEyZThmNDMzMTcxODQ0NDcyOWRkN2RiZTVhMGYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAyMC0wMy0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29t
PgorCisgICAgICAgIFtXZWJBdXRobl0gRm9ybWFsaXplIHRoZSBLZXljaGFpbiBzY2hlbWEKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzUzMworICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZXMgdGhlIHRlc3QgaW5mcmEgdG8gdXNlIENy
ZWRlbnRpYWwgSUQgYXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGNyZWRlbnRpYWwgaW5z
dGVhZCBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgY29tYmluYXRpb24gb2YgUlAgSUQgYW5kIHVz
ZXIgaGFuZGxlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjbGVh
blVwS2V5Y2hhaW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNo
YWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4p
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbik6CisK
IDIwMjAtMDMtMDYgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgX1dLUmVzb3VyY2VMb2FkSW5mby5yZXNvdXJjZVR5cGUgU1BJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggNzQ5Yzk3ZmY5NmMzMjdhZmU2OGE3MDVi
N2Y0MGI0Zjg3MDFhMTI3OC4uYWMxMWE1ODYzY2IxYzVhMjFhZDdkOWY0Y2FlNjM0YWFmMjIyMTAy
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNjIsNyArNjIsNyBA
QCBzdGF0aWMgU3RyaW5nIHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQgPQogICAgICJCRGovenhT
a3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZCSlBncVVJd2ZoV0hKOTFuYjdV
IgogICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcyUjdrOVZITFBFWmw1bmZuQmdFVkZo
NXpldisveHBIUUl2dXE2IgogICAgICJSUT09IjsKLXN0YXRpYyBTdHJpbmcgdGVzdFVzZXJoYW5k
bGVCYXNlNjQgPSAiQUFFQ0F3UUZCZ2NJQ1E9PSI7CitzdGF0aWMgU3RyaW5nIHRlc3RVc2VyRW50
aXR5QnVuZGxlQmFzZTY0ID0gIm9tSnBaRW9BQVFJREJBVUdCd2dKWkc1aGJXVndRVUZGUTBGM1VV
WkNaMk5KUTFFOVBRPT0iOwogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGUgOiBOU09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgog
QGVuZApAQCAtMTIxNCw3ICsxMjE0LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBM
QUR1cGxpY2F0ZUNyZWRlbnRpYWwpCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0
V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIEFTU0VSVF9UUlVFKGFk
ZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyaGFu
ZGxlQmFzZTY0KSk7CisgICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQ
cml2YXRlS2V5QmFzZTY0LCAiIiwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpKTsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwu
Z2V0KCldXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUV4
Y2x1ZGVDcmVkZW50aWFsc01hdGNoZWQpOwogICAgIGNsZWFuVXBLZXljaGFpbigiIik7CkBAIC0x
MzA1LDcgKzEzMDUsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0
aW9uKQogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBBU1NFUlRfVFJVRShhZGRLZXlUb0tleWNoYWluKHRl
c3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICIiLCB0ZXN0VXNlcmhhbmRsZUJhc2U2NCkpOworICAg
IEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwg
IiIsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KSk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CiAgICAgY2hlY2tQYW5lbChbZGVs
ZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aElu
dDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5TKFtbTlNO
dW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50
ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUdldCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAppbmRleCA0OTAxZTA4NmVkMTlmNTIwZGEwMDhmMTQwZTJlZDY5YzZiM2M2
MWQwLi4xMzAyNzEwZjY0ZTViNzkzODVkMDNhOTYyMmI2ZTZkYmZmZGU5NmQyIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwNCw4ICs0MDQsOCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5l
ciB7CiAKICAgICAvLyBXZWJBdXRobgogICAgIHZvaWQgYWRkVGVzdEtleVRvS2V5Y2hhaW4oRE9N
U3RyaW5nIHByaXZhdGVLZXlCYXNlNjQsIERPTVN0cmluZyBhdHRyTGFiZWwsIERPTVN0cmluZyBh
cHBsaWNhdGlvblRhZ0Jhc2U2NCk7Ci0gICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oRE9NU3RyaW5n
IGF0dHJMYWJlbCwgb3B0aW9uYWwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKLSAg
ICBib29sZWFuIGtleUV4aXN0c0luS2V5Y2hhaW4oRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9NU3Ry
aW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKKyAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihET01T
dHJpbmcgYXR0ckxhYmVsLCBvcHRpb25hbCBET01TdHJpbmcgYXBwbGljYXRpb25MYWJlbEJhc2U2
NCk7CisgICAgYm9vbGVhbiBrZXlFeGlzdHNJbktleWNoYWluKERPTVN0cmluZyBhdHRyTGFiZWws
IERPTVN0cmluZyBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKIAogICAgIC8vIEFkIENsaWNrIEF0
dHJpYnV0aW9uCiAgICAgdm9pZCBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggODJkZDZhYWUyNjFmODg4YTFlMzJiZWI2NjljNjJkMDdmZjYwY2VlOS4uMmU5OGNmNWQ1NmFl
MTZhMWNmMDYyNjFkNDkyMGQ4Y2ZmNmZjZDM5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNzg4LDcgKzI3ODgs
NyBAQCB2b2lkIFRlc3RSdW5uZXI6OmFkZFRlc3RLZXlUb0tleWNoYWluKEpTU3RyaW5nUmVmIHBy
aXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVmCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVy
OjpjbGVhblVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBs
aWNhdGlvblRhZ0Jhc2U2NCkKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2xlYW5VcEtleWNoYWluKEpTU3Ry
aW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25MYWJlbEJhc2U2NCkKIHsK
ICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwogICAgIFZlY3RvcjxX
S1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CkBAIC0yNzk2LDkgKzI3OTYsOSBAQCB2b2lk
IFRlc3RSdW5uZXI6OmNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3Ry
aW5nUmVmIGFwcGxpY2F0aW9uVAogICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkF0dHJMYWJlbCIpKSk7CiAgICAgdmFsdWVzLmFwcGVuZCh0b1dL
KGF0dHJMYWJlbCkpOwogCi0gICAgaWYgKGFwcGxpY2F0aW9uVGFnQmFzZTY0KSB7Ci0gICAgICAg
IGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxp
Y2F0aW9uVGFnIikpKTsKLSAgICAgICAgdmFsdWVzLmFwcGVuZCh0b1dLKGFwcGxpY2F0aW9uVGFn
QmFzZTY0KSk7CisgICAgaWYgKGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpIHsKKyAgICAgICAga2V5
cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXBwbGljYXRp
b25MYWJlbCIpKSk7CisgICAgICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhcHBsaWNhdGlvbkxhYmVs
QmFzZTY0KSk7CiAgICAgfQogCiAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzOwpAQCAt
MjgxNyw3ICsyODE3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVhblVwS2V5Y2hhaW4oSlNTdHJp
bmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblQKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCi1i
b29sIFRlc3RSdW5uZXI6OmtleUV4aXN0c0luS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVs
LCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKK2Jvb2wgVGVzdFJ1bm5lcjo6a2V5
RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxp
Y2F0aW9uTGFiZWxCYXNlNjQpCiB7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
Pj4ga2V5czsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOwpAQCAt
MjgyNSw4ICsyODI1LDggQEAgYm9vbCBUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNoYWluKEpT
U3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXQKICAgICBrZXlzLmFwcGVu
ZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdHRyTGFiZWwiKSkpOwog
ICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhdHRyTGFiZWwpKTsKIAotICAgIGtleXMuYXBwZW5kKGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxpY2F0aW9uVGFnIikpKTsK
LSAgICB2YWx1ZXMuYXBwZW5kKHRvV0soYXBwbGljYXRpb25UYWdCYXNlNjQpKTsKKyAgICBrZXlz
LmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlv
bkxhYmVsIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKHRvV0soYXBwbGljYXRpb25MYWJlbEJhc2U2
NCkpOwogCiAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzOwogICAgIFZlY3RvcjxXS1R5
cGVSZWY+IHJhd1ZhbHVlczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMGIxMjQ4MWQ3ZDE5MmJkNmIyZTQ2MDQ4ODVhNWFi
MzQ0ZmM1YmJiZC4uZGEwYWQxZmJhOWI5MjQ4NzEzZDA0ZjFhYmExNGUxZjY2MDhiODNhNyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTUxMiw4ICs1MTIsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRSgxODk4NzYpCiAg
ICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihKU1N0cmluZ1JlZiBwcml2YXRlS2V5QmFzZTY0
LCBKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KTsKLSAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3Ry
aW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKLSAgICBib29sIGtleUV4aXN0c0luS2V5Y2hh
aW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2
NCk7CisgICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0
cmluZ1JlZiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKKyAgICBib29sIGtleUV4aXN0c0luS2V5
Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvbkxhYmVs
QmFzZTY0KTsKIAogICAgIHVuc2lnbmVkIGxvbmcgc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJh
Y2tDYWxsc0NvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApp
bmRleCBmM2FhODhhYzYyOTE4OWVjMTM3ZDJkOTI5NGJmZTI5NGNiNTg0NGZjLi41NzNiNzJjZmJj
ZmJlY2RjMDMwMDhjZDI0M2UxOTAyYzA4YTQwODEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCkBAIC0zMTIsOCArMzEyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoZG91YmxlIHNlY29uZHMpOwogCiAg
ICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNl
NjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KTsKLSAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJl
bCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7Ci0gICAgYm9vbCBrZXlFeGlz
dHNJbktleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxp
Y2F0aW9uVGFnQmFzZTY0KTsKKyAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcm
IGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKKyAgICBi
b29sIGtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25MYWJlbEJhc2U2NCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBOU1N0cmluZyAqb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmllcigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA0MTZmNmVmMWE3MTNlZThi
NGZlYWU5MGU5ZjlmZjM4MGYwZDk5ZTQ0Li5mOGNjZTI3ZmM0NjE3ZWE3NmM2YjUzNzc1NGNjNDYy
Y2Q5ZTBlYzE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApA
QCAtMTcyMywxMCArMTcyMywxMCBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXR0ckxhYmVsS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXR0ckxhYmVsIikpOwogICAgICAgICBXS1N0cmluZ1JlZiBh
dHRyTGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhdHRyTGFiZWxLZXkuZ2V0KCkpKTsKIAotICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25UYWdLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlvblRhZyIpKTsKLSAgICAgICAgV0tT
dHJpbmdSZWYgYXBwbGljYXRpb25UYWdXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBsaWNhdGlvblRhZ0tleS5n
ZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25MYWJl
bEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxpY2F0aW9u
TGFiZWwiKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTGFiZWxXSyA9IHN0YXRp
Y19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9u
YXJ5LCBhcHBsaWNhdGlvbkxhYmVsS2V5LmdldCgpKSk7CiAKLSAgICAgICAgVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmNsZWFuVXBLZXljaGFpbih0b1dURlN0cmluZyhhdHRyTGFiZWxXSyks
IGFwcGxpY2F0aW9uVGFnV0sgPyB0b1dURlN0cmluZyhhcHBsaWNhdGlvblRhZ1dLKSA6IFN0cmlu
ZygpKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNsZWFuVXBLZXljaGFp
bih0b1dURlN0cmluZyhhdHRyTGFiZWxXSyksIGFwcGxpY2F0aW9uTGFiZWxXSyA/IHRvV1RGU3Ry
aW5nKGFwcGxpY2F0aW9uTGFiZWxXSykgOiBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTczNywxMCArMTczNywxMCBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXR0ckxhYmVsS2V5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXR0ckxhYmVsIikpOwogICAgICAg
ICBXS1N0cmluZ1JlZiBhdHRyTGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhdHRyTGFiZWxLZXkuZ2V0KCkp
KTsKIAotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25UYWdLZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlvblRhZyIp
KTsKLSAgICAgICAgV0tTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdXSyA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBs
aWNhdGlvblRhZ0tleS5nZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
YXBwbGljYXRpb25MYWJlbEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkFwcGxpY2F0aW9uTGFiZWwiKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9u
TGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBsaWNhdGlvbkxhYmVsS2V5LmdldCgpKSk7CiAKLSAgICAg
ICAgYm9vbCBrZXlFeGlzdHNJbktleWNoYWluID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmtleUV4aXN0c0luS2V5Y2hhaW4odG9XVEZTdHJpbmcoYXR0ckxhYmVsV0spLCB0b1dURlN0cmlu
ZyhhcHBsaWNhdGlvblRhZ1dLKSk7CisgICAgICAgIGJvb2wga2V5RXhpc3RzSW5LZXljaGFpbiA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5rZXlFeGlzdHNJbktleWNoYWluKHRvV1RGU3Ry
aW5nKGF0dHJMYWJlbFdLKSwgdG9XVEZTdHJpbmcoYXBwbGljYXRpb25MYWJlbFdLKSk7CiAgICAg
ICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVh
dGUoa2V5RXhpc3RzSW5LZXljaGFpbikpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQppbmRleCBmMmUzYTY2Yzc4ODAxMDNjODA4NGE5ZDg5NDVmZjQwOGZkYjJlMzE2Li5mYzFk
NTFiNzQ5YzhiMzIxZmU0ZjdhMjI1NTdiODFhZDllNmI5MDEyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC00MzAsNyAr
NDMwLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oY29uc3Qg
U3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdAogICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVz
LCAhc3RhdHVzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNv
bnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0
ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpCiB7CiAgICAgYXV0
byBkZWxldGVRdWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CiAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDooaWQpa1NlY0NsYXNzS2V5IGZvcktleToo
aWQpa1NlY0NsYXNzXTsKQEAgLTQ0MCwxOSArNDQwLDE5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBh
cHBsCiAjZWxzZQogICAgIFtkZWxldGVRdWVyeSBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6KGlkKWtT
ZWNBdHRyTm9MZWdhY3ldOwogI2VuZGlmCi0gICAgaWYgKCEhYXBwbGljYXRpb25UYWdCYXNlNjQp
Ci0gICAgICAgIFtkZWxldGVRdWVyeSBzZXRPYmplY3Q6YWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6
TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpIGZvcktl
eTooaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107CisgICAgaWYgKCEhYXBwbGljYXRpb25MYWJl
bEJhc2U2NCkKKyAgICAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDphZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25MYWJlbEJhc2U2
NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5n
ZXQoKSBmb3JLZXk6KGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAKICAgICBTZWNJdGVt
RGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkuZ2V0KCkpOwogfQog
Ci1ib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0cmluZyYg
YXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KQorYm9vbCBUZXN0
Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwg
Y29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KQogewogICAgIE5TRGljdGlvbmFy
eSAqcXVlcnkgPSBAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAog
ICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRl
LAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAotICAgICAgICAoaWQpa1Nl
Y0F0dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNl
NjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0
RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQpa1Nl
Y0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJh
c2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25MYWJlbEJhc2U2NCBvcHRpb25zOk5TRGF0YUJh
c2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKICNpZiBIQVZFKERB
VEFfUFJPVEVDVElPTl9LRVlDSEFJTikKICAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlv
bktleWNoYWluOiBAWUVTCiAjZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllMGRiM2QwYjRjODQwNmIwYjU1YTRlZGRj
MTlmNmYyMDJjMmY2OWUuLjVkZTIwYzNmOGM1Mjg4Y2YyNjdhNjQxYmI2MDMxNjg5M2FmZDQ3YmYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wMy0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gRm9ybWFsaXplIHRoZSBLZXljaGFp
biBzY2hlbWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MzUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IHRlc3RzIGFyZSBhZGRlZCBh
bmQgYWxsIHRlc3RzIGFyZSBtb2RpZmllZCB0byB1c2UgQ3JlZGVudGlhbCBJRCB0byBpZGVudGlm
eSBhIGNyZWRlbnRpYWwgaW5zdGVhZAorICAgICAgICBvZiB7IFJQIElELCB1c2VyIGhhbmRsZSB9
LgorCisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNy
ZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxv
Y2FsLXNpbGVudC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICog
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2Fs
Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQv
d2ViYXV0aG4vcmVzb3VyY2VzL3V0aWwuanM6CisKIDIwMjAtMDMtMDUgIEppZXdlbiBUYW4gIDxq
aWV3ZW5fdGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViQXV0aG5dIERvIG5vdCBwZXJmb3Jt
IEF0dGVzdGF0aW9uIHdpdGggdHlwZSBpcyAnbm9uZScKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1s
b2NhbC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5o
dHRwcy1leHBlY3RlZC50eHQKaW5kZXggNjY3OTQxZmRjODE3NGZlMDg5NjM1ZWUxNzM3YmRlZTA5
NDRmOTYxYy4uYjYzZmQ3NGJlNTdhZTA4NzY5YmE1YmYzZWQ5NjNhNjAzMzlkZDVmZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSw4IEBACiAK
LVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVy
ZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIDIgCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
c2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDMgCi1QQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDQgCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIDUgCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50
IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDYgCitQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5zdXBwb3J0ZWQgcHVibGljIGtleSBjcmVk
ZW50aWFsIHBhcmFtZXRlcnMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhjbHVkZSBjcmVk
ZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAybmQgCitQQVNTIFB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91
dCBwcml2YXRlIGtleXMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNp
bGVudC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCmluZGV4
IDRkY2Y0YTI5NGQ5ZmU3M2M3YzIxNmY4ZmQxOTRlMzI2NjdhNzY4ZTYuLmNiMmQwMjY4MzBmZTJh
ODg1NTgwZWU1MTA5YjhkY2FhNjNjYjA3MTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1z
aWxlbnQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwK
QEAgLTQsMTUyICs0LDE1OCBAQAogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwv
c2NyaXB0PgogPHNjcmlwdD4KLSAgICAoYXN5bmMgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnN0
IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICAvLyBE
ZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5
IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
CisgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZh
bHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKworICAgIHByb21pc2VfdGVzdCh0
ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTog
eworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFt
cGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAg
ICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTM1IH0sIHsgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0yNTcgfV0sIC8vIEVTMzg0LCBS
UzI1NgorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdW5z
dXBwb3J0ZWQgcHVibGljIGtleSBjcmVkZW50aWFsIHBhcmFtZXRlcnMgaW4gYSBtb2NrIGxvY2Fs
IGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAg
ICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNl
NjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVu
dGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwotICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmln
dXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNv
bmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2Vw
dEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwotCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsK
LSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5
OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
YW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxl
c2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RV
c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAi
Sm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBw
dWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTM1IH0sIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC0yNTcgfV0sIC8vIEVTMzg0LCBSUzI1NgotICAgICAgICAg
ICAgICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQg
b3V0LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICAg
ICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCk7
CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAg
cnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVu
dGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3Jl
ZGVudGlhbElkQmFzZTY0KSB9XSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBjb25zdCBvcHRpb25zID0g
eworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RV
c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2hu
IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlU
b1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNs
dWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCB9
XSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNl
ckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
Ik9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9L
ZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0g
ICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0
LiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQs
IHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBs
b2NhbCBhdXRoZW50aWNhdG9yLiAyIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVh
blVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOwor
ICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhj
bHVkZSBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2
NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7
CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50
aWFsSUQpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20i
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5
cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgZXhjbHVk
ZUNyZWRlbnRpYWxzOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRy
YW5zcG9ydHM6IFsibmZjIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJ
RCwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0KLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9OworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5
OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4
YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAg
ICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAor
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRy
YW5zcG9ydHM6IFsidXNiIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5z
cG9ydHM6IFsiYmxlIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtl
eSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQor
ICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0
ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElk
LCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRU
ZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJh
c2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24g
dGltZWQgb3V0LiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4o
dGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAzIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAg
ICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1h
dGNoZWQgZXhjbHVkZSBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4g
Mm5kIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAg
ICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIK
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKLSAgICAg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1
cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDQiKTsKKyAgICBwcm9taXNlX3Rlc3Qo
dCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhh
bXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAg
ICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCi0g
ICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0
QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwotICAg
ICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4i
KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2ls
ZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDUiKTsKKyAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBu
YW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1
c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQp
LAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIz
NDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1Ymxp
Yy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAg
ICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBz
aWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwg
YWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShv
cHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0ZSBrZXlzIGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiIpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAg
ICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhh
bXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVz
ZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNl
NjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJh
bXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAg
ICAgdGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlv
bjogZmFsc2UgfSB9KTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tl
eWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKKyAg
ICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNl
NjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3Jl
ZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQp
OworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3JlZGVu
dGlhbElEKTsKKworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGlj
S2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTog
ImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAg
ICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAg
ICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIp
LAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5
IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogImRpcmVjdCIsCisg
ICAgICAgICAgICAgICAgdGltZW91dDogMTAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
ICAgICAgICBhc3NlcnRfZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRlc3RS
cElkLCB1c2VyaGFuZGxlQmFzZTY0KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDYiKTsKLSAgICB9KSgpOworICAgICAgICB9OworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9j
YWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxz
ZSwgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCB9IH0pOworICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkgPT4g
eworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCBjcmVkZW50aWFsSURCYXNlNjQpOwor
ICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aG91dCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
ZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggODYzNGYyYzI2ZDI5ZWNmYTEw
NTU0ZTQxODMzZGQ4Yjg2ZDJiNzhhMy4uNmExMDI1YWIwNDNkZDU0OTU3Yjg4MjQzZTQ4ZTg3ODVj
Njk4ZmY1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsNiBAQCBQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRl
IGNyZWRlbnRpYWxzIGluIGEgbW9jawogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4g
CiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0ZSBr
ZXlzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIGRlbGV0
aW5nIG9sZCBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gbm90IGRlbGV0aW5nIG9sZCBjcmVkZW50
aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtbG9jYWwuaHR0cHMuaHRtbAppbmRleCAwYTVhYmUyODg1NjlhZWM3YmNlOTk3NmU5N2I0ZWIy
ODUyZTJlYjg0Li41NzBhYzA4ZjRiMGRlZTBkZDE4OTUxNzFiYmU5NzllZDA5ODliNTVkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRp
YWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwu
aHR0cHMuaHRtbApAQCAtNCwxOTMgKzQsMjA1IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMv
dXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsKLSAg
ICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgp
OworICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJy
aWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2luZG93
LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2Vw
dEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworCisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAg
ICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAg
ICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDog
QmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMzUgfSwg
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMzODQsIFJTMjU2CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90U3VwcG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IgZG9lc24ndCBzdXBwb3J0IGFu
eSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFyYW1ldGVycy4iKTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMga2V5
IGNyZWRlbnRpYWwgcGFyYW1ldGVycyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsK
KworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgcHJpdmF0ZUtl
eUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25z
dCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJh
c2U2NCk7Ci0gICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVk
IHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7Ci0KLSAgICAgICAgcHJv
bWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNl
NjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAg
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtMzUgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMzODQs
IFJTMjU2Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90U3VwcG9ydGVkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiVGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRp
Y2F0b3IgZG9lc24ndCBzdXBwb3J0IGFueSBwcm92aWRlZCBQdWJsaWNLZXlDcmVkZW50aWFsUGFy
YW1ldGVycy4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggdW5zdXBwb3J0ZWQgcHVibGljIGtleSBjcmVkZW50aWFsIHBhcmFtZXRlcnMgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJh
c2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOwogCi0gICAgICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAg
cHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJK
b2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBh
cnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwK
LSAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBjcmVkZW50aWFsSUQgfV0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9OworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1w
bGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAg
ICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCB9XQorICAgICAgICAgICAgfQorICAgICAgICB9
OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNl
ckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
IkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVD
cmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIp
LnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2
NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3Jl
YXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBv
ZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1
dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFp
bih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRl
IGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCBjcmVkZW50aWFsSURC
YXNlNjQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1
dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAg
ICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFt
cGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNl
cjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2
NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFt
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAg
ICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRp
YWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0
eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0g
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3Jl
ZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQotICAgICAgICAgICAgICAgICAg
ICBdCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5l
cmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdh
aXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25z
dCBjcmVkZW50aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKTsKKworICAg
ICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAg
ICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDog
QmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwK
KyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsi
dXNiIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBj
cmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAgICAgICAgICAgICAgICAg
eyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxl
Il0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVk
ZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlC
YXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMg
YW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVDcmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBh
dHRhY2hlZCBhdXRoZW50aWNhdG9yLiIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRv
S2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwot
ICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRl
bnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4g
dGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiAybmQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXlj
aGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNy
ZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAybmQiKTsKIAotICAgICAg
ICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAg
ICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
LSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiIp
OwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1
c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgcHJvbWlz
ZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVi
bGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNl
cjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAg
ICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwK
KyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICByZXR1
cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCB2ZXJpZnkgdXNlci4iKTsKKyAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQg
PT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4g
QXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdFVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAod2luZG93
LmludGVybmFscykKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVl
LCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iKTsKLSAgICAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0ZSBrZXlzIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIHByb21pc2VfdGVzdCh0ID0+IHsK
KyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAg
ICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNv
bSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAg
aWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRl
c3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJV
bmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291
bGRuJ3QgY3JlYXRlIHByaXZhdGUga2V5LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRob3V0IHByaXZhdGUga2V5cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBj
b25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAg
ICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUu
Y29tIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAgIGF0
dGVzdGF0aW9uOiAiZGlyZWN0IgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2Vw
dEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByaXZhdGVL
ZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQgfSB9KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9t
aXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIkNvdWxkbid0IGF0dGVzdDogVGhlIG9wZXJhdGlvbiBjb3VsZG4ndCBjb21w
bGV0ZS4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RS
cElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBhdHRlc3RhdGlvbiBpbiBhIG1v
Y2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7
CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVL
ZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRl
Q3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBjcmVkZW50aWFs
SURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKTsKIAotICAgICAgICBwcm9taXNl
X3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAg
ICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1l
OiB1c2VyaGFuZGxlQmFzZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVS
TC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAg
ICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcg
fV0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1
dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9u
OiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKLSAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElk
LCB1c2VyaGFuZGxlQmFzZTY0KTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
ICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwK
KyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJh
c2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAi
cHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJk
aXJlY3QiCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyks
ICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICBhc3NlcnRf
ZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxl
QmFzZTY0KSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIGRlbGV0aW5nIG9sZCBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiIpOworICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVz
dGF0aW9uOiBmYWxzZSwgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCB9IH0pOwor
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBhdHRlc3Q6IFRoZSBvcGVy
YXRpb24gY291bGRuJ3QgY29tcGxldGUuIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5
Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0s
ICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9uIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCi0gICAgICAgIHByb21pc2VfdGVzdChm
dW5jdGlvbih0KSB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAg
ICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAg
ICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1l
OiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNo
YWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0g
ICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwLAotICAgICAgICAgICAgICAgICAgICBhdXRo
ZW50aWNhdG9yU2VsZWN0aW9uOiB7IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OiAiY3Jvc3MtcGxh
dGZvcm0iIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0
IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQg
PSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAg
IGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOwog
Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgICAgICBpbnRl
cm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFj
Y2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7
Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIs
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQg
b3V0LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotICAgIH0pKCk7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20i
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAg
ICAgICAgICAgIG5hbWU6IHRlc3RVc2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAgICAg
ICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAg
ICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAt
NyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RL
ZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1
bmRsZUJhc2U2NCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQs
ICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
Q291bGRuJ3QgY3JlYXRlIHByaXZhdGUga2V5LiIpLnRoZW4oKCkgPT4geworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRlc3RS
dW5uZXIua2V5RXhpc3RzSW5LZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KSk7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNy
ZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSBub3QgZGVsZXRpbmcgb2xkIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewor
ICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBp
ZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgICAgICBkaXNw
bGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHVi
S2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDEwLAorICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JTZWxl
Y3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6ICJjcm9zcy1wbGF0Zm9ybSIgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQor
ICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0
aW9uOiBmYWxzZSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFs
bG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiA8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LXN1Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGZhZGFjMjExYTdjZTA3ZjI1
YTVkMjBhYzllZWIyMjkwNmM3MGZlZjcuLjY1MTA5ODA0NjRlZmU4ZDA2MzhlOTk0ZmM5Mjk2MTg5
MWIxOTVmZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtNSw0ICs1LDYgQEAg
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhjbHVk
ZSBjcmVkZW50aWFsIGlkcyBidXQgbm8KIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9y
LiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBh
dHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCiBQQVNTIFB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBkdXBsaWNhdGUgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZHVwbGlj
YXRlIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIgCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBz
Lmh0bWwKaW5kZXggOGFhZjVhZmI5ZTMxNzA5YjZlMjQ1Zjg3ODQyY2Q2YWU4M2FiY2Y5Yy4uYmQz
MDc2MTUzZjFiZjkwOTBkMjk4NDAzODRmMDM3YzI5ODhjODVjMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNj
ZXNzLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKQEAg
LTUsMjA4ICs1LDM0MSBAQAogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9Ii4vcmVzb3VyY2VzL2Nib3IuanMiPjwvc2NyaXB0PgogPHNjcmlw
dD4KLSAgICAoYXN5bmMgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNl
NjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICBmdW5jdGlvbiBjaGVja1Jlc3Vs
dChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKKyAg
ICB7CisgICAgICAgIC8vIENoZWNrIGtleWNoYWluCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworICAgICAgICAgICAgYXNzZXJ0X3RydWUodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktl
eWNoYWluKHRlc3RScElkLCBiYXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKSkpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShjcmVk
ZW50aWFsSUQpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIENoZWNrIHJlc3BvbmQKKyAgICAg
ICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIGNy
ZWRlbnRpYWxJRCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlhbC50eXBlLCAncHVi
bGljLWtleScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNy
ZWRlbnRpYWwucmF3SWQpLCBjcmVkZW50aWFsSUQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5
dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwgJ3si
dHlwZSI6IndlYmF1dGhuLmNyZWF0ZSIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoi
aHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7CisgICAgICAgIGFzc2VydF9ub3Rfb3duX3Byb3Bl
cnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKKwor
ICAgICAgICAvLyBDaGVjayBhdHRlc3RhdGlvbgorICAgICAgICBjb25zdCBhdHRlc3RhdGlvbk9i
amVjdCA9IENCT1IuZGVjb2RlKGNyZWRlbnRpYWwucmVzcG9uc2UuYXR0ZXN0YXRpb25PYmplY3Qp
OworICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJhcHBsZSIpOworICAg
ICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1
dGhEYXRhKGF0dGVzdGF0aW9uT2JqZWN0LmF1dGhEYXRhKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3
NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjkpOworICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDApOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9I
ZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwIik7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElE
LCBjcmVkZW50aWFsSUQpOworICAgICAgICAvLyBDaGVjayBzZWxmIGF0dGVzdGF0aW9uCisgICAg
ICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGljS2V5KGF1dGhEYXRhLnB1YmxpY0tleSkpOworICAg
ICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24pCisgICAgICAgICAgICBhc3NlcnRfb2JqZWN0X2Vx
dWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LCB7IH0pOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC5hbGcsIC03
KTsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC54
NWMubGVuZ3RoLCAyKTsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0YXRp
b25PYmplY3QuYXR0U3RtdC54NWNbMF0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRpb25D
ZXJ0aWZpY2F0ZUJhc2U2NCkpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdHRl
c3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Y1sxXSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RBdHRlc3Rh
dGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNl
NjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3Jl
ZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQp
OwotICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBv
dmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGNv
bnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKICAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCiAgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CiAgICAgICAgICAgICAgICAgbG9jYWw6IHsK
ICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsCiAgICAgICAg
ICAgICAgICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwKICAgICAgICAgICAgICAgICAg
ICAgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKLSAgICAgICAgICAgICAgICAg
ICAgdXNlckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2
NCwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDog
dGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVk
ZW50aWFsLCBpc05vbmVBdHRlc3RhdGlvbiA9IHRydWUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IC8vIENoZWNrIGtleWNoYWluCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
LSAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXN0UnVubmVyLmtleUV4aXN0c0luS2V5Y2hh
aW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpKTsKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
ICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxh
eU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAogICAg
ICAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgICAgICAvLyBDaGVjayByZXNwb25kCi0g
ICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFs
LmlkKSwgY3JlZGVudGlhbElEKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoY3JlZGVudGlh
bC50eXBlLCAncHVibGljLWtleScpOwotICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhu
ZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJhd0lkKSwgY3JlZGVudGlhbElEKTsKLSAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2Uu
Y2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoi
TVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKLSAgICAgICAg
ICAgIGFzc2VydF9ub3Rfb3duX3Byb3BlcnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9u
UmVzdWx0cygpLCAiYXBwaWQiKTsKLQotICAgICAgICAgICAgLy8gQ2hlY2sgYXR0ZXN0YXRpb24K
LSAgICAgICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVu
dGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7Ci0gICAgICAgICAgICBpZiAoaXNOb25l
QXR0ZXN0YXRpb24pCi0gICAgICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9i
amVjdC5mbXQsICJub25lIik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5mbXQsICJhcHBsZSIpOwotICAgICAgICAgICAg
Ly8gQ2hlY2sgYXV0aERhdGEKLSAgICAgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0
aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOwotICAgICAgICAgICAgYXNzZXJ0X2Vx
dWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRhLnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThj
Njg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKLSAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuZmxhZ3MsIDY5KTsKLSAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7Ci0gICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEuYWFndWlkKSwgIjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwIik7Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGF1
dGhEYXRhLmNyZWRlbnRpYWxJRCwgY3JlZGVudGlhbElEKTsKLSAgICAgICAgICAgIC8vIENoZWNr
IHNlbGYgYXR0ZXN0YXRpb24KLSAgICAgICAgICAgIGFzc2VydF90cnVlKGNoZWNrUHVibGljS2V5
KGF1dGhEYXRhLnB1YmxpY0tleSkpOwotICAgICAgICAgICAgaWYgKGlzTm9uZUF0dGVzdGF0aW9u
KQotICAgICAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0
LmF0dFN0bXQsIHsgfSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQuYWxnLCAtNyk7Ci0gICAgICAgICAg
ICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Yy5sZW5ndGgs
IDIpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0YXRpb25PYmpl
Y3QuYXR0U3RtdC54NWNbMF0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZp
Y2F0ZUJhc2U2NCkpOwotICAgICAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXR0ZXN0
YXRpb25PYmplY3QuYXR0U3RtdC54NWNbMV0sIEJhc2U2NFVSTC5wYXJzZSh0ZXN0QXR0ZXN0YXRp
b25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9
CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBj
cmVkZW50aWFsSUQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAg
ICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3Qi
LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwu
cGFyc2UoIk1USXpORFUyIiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0
ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQg
Y2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCB1
c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7CisgICAg
ICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIHBy
aXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQsCiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICBjaGVj
a1Jlc3VsdChjcmVkZW50aWFsKTsKICAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtaW5pbXVtIG9wdGlvbnMgaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewot
ICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJsb2NhbGhvc3QiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFz
ZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFu
ZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVz
ZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCi0gICAgICAgICAgICAgICAgICAgIHB1
YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAg
ICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50aWNhdG9yQXR0
YWNobWVudDogInBsYXRmb3JtIiB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsK
IAotICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVk
ZW50aWFsKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ3BsYXRmb3JtJyB9
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotCi0gICAgICAgIHByb21pc2VfdGVz
dCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAg
cHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVz
ZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBh
cnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwK
LSAgICAgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNw
b3J0czogWyJ1c2IiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0
cmFuc3BvcnRzOiBbImJsZSJdIH0KLSAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAg
cnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwu
cGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1l
OiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1Yktl
eUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAg
ICAgICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOiB7IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OiAicGxhdGZvcm0iIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICByZXR1
cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwg
PT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElEKTsK
KyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggYXV0aGVudGljYXRvclNlbGVjdGlvbiB7ICdwbGF0Zm9ybScgfSBpbiBhIG1vY2sgbG9jYWwg
YXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAg
ICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2
NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50
aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQg
PSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7CisgICAgICAgICAgICAgICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICAgICAg
YWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF0
dGVzdGF0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDog
cHJpdmF0ZUtleUJhc2U2NCwKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgY29uc3QgYW5vdGhlclByaXZhdGVLZXlCYXNlNjQgPSBh
d2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgYW5vdGhlckNy
ZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChhbm90aGVyUHJpdmF0ZUtl
eUJhc2U2NCk7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTcgfV0sCisgICAgICAgICAgICAgICAgZXhjbHVkZUNyZWRlbnRpYWxzOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogYW5vdGhlckNyZWRlbnRpYWxJ
RCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IGFub3RoZXJDcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0g
fSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBhbm90aGVy
Q3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImJsZSJdIH0KKyAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4oYW5vdGhlclByaXZh
dGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisKKyAg
ICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihj
cmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRl
bnRpYWxJRCk7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5
QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShhbm90aGVyQ3Jl
ZGVudGlhbElEKSk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhjbHVkZSBjcmVkZW50aWFsIGlkcyBidXQgbm90IHRy
YW5zcG9ydHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgICAg
IHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVu
dGlhbCA9PiB7Ci0gICAgICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWwgaWRzIGJ1dCBub3QgdHJhbnNwb3J0cyBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLQotICAgICAgICBwcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1
YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZTogImxvY2FsaG9zdCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVzZXJo
YW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNl
KHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAgICAg
ICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1d
LAotICAgICAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogIm5vbmUiCisgICAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQg
Z2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9
IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAg
Y29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKKyAgICAgICAgICAgICAgICBsb2NhbDog
eworICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH07CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKKyAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAg
IHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBu
YW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJM
LnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJL
ZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAg
ICAgICAgICAgYXR0ZXN0YXRpb246ICJub25lIgorICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBj
cmVkZW50aWFsSUQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBub25lIGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25z
dCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7Cisg
ICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChw
cml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVy
YXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsKKyAgICAgICAgICAgICAgICBsb2NhbDogeworICAgICAgICAgICAgICAgICAgICBhY2NlcHRB
dXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRp
b246IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVL
ZXlCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDogdGVz
dEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGludGVy
bWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRp
ZmljYXRlQmFzZTY0CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRp
b24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0KLSAgICAgICAgcHJvbWlzZV90
ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAg
ICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1
c2VyaGFuZGxlQmFzZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlO
YW1lOiAiQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCi0gICAgICAgICAg
ICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAt
NyB9XSwKLSAgICAgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJpbmRpcmVjdCIKKworICAg
ICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAg
ICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGlkOiBC
YXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRp
c3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAg
ICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwK
KyAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogImluZGlyZWN0IgorICAgICAgICAgICAgfQor
ICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChj
cmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24g
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0
ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQg
Y2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCB1
c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7CisgICAg
ICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcHJp
dmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgdXNl
ckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwKKyAg
ICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0
dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQKICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7Ci0gICAgICAgICAgICAgICAgICAgIGxvY2FsOiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFj
Y2VwdEF0dGVzdGF0aW9uOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtl
eUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJD
ZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0
QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NAotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAg
ICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgZmFsc2UpOwogICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGly
ZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotCi0gICAg
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0g
ICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlk
OiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIp
LAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiZGly
ZWN0IgorCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9j
YWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAg
ICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiZGlyZWN0IgorICAgICAg
ICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlh
bHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVj
a1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIGZhbHNlKTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVz
dGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQg
Z2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9
IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAg
Y29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKKyAgICAgICAgICAgICAgICBsb2NhbDog
eworICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAorICAgICAgICAgICAgICAg
ICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH07CisgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+
IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJh
c2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlz
cGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGNvbnN0IGFub3RoZXJQcml2YXRl
S2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNv
bnN0IGFub3RoZXJDcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQoYW5v
dGhlclByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4oYW5vdGhlclByaXZhdGVL
ZXlCYXNlNjQsIHRlc3RScElkLCBiYXNlNjRlbmNvZGUoQ0JPUi5lbmNvZGUoeyAiaWQiOiBCYXNl
NjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksICJuYW1lIjogdXNlcmhhbmRsZUJhc2U2NCB9
KSkpOworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50
aWFsLCBjcmVkZW50aWFsSUQpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHRlc3RSdW5uZXIu
a2V5RXhpc3RzSW5LZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0ZW5jb2RlKGFub3RoZXJDcmVkZW50
aWFsSUQpKSk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25z
dCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7Cisg
ICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChw
cml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVy
YXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsKKyAgICAgICAgICAgICAgICBsb2NhbDogeworICAgICAgICAgICAgICAgICAgICBhY2NlcHRB
dXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRp
b246IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVL
ZXlCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDogdGVz
dEF0dGVzdGF0aW9uQ2VydGlmaWNhdGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGludGVy
bWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRp
ZmljYXRlQmFzZTY0CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGRpcmVjdCBhdHRlc3Rh
dGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLSAgICB9KSgpOworCisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJh
c2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlz
cGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiZGlyZWN0IgorICAgICAgICAgICAgfQorICAg
ICAgICB9OworCisgICAgICAgIGNvbnN0IGFub3RoZXJQcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQg
Z2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGFub3RoZXJDcmVkZW50
aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQoYW5vdGhlclByaXZhdGVLZXlCYXNl
NjQpOworICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4oYW5vdGhlclByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElk
LCBiYXNlNjRlbmNvZGUoQ0JPUi5lbmNvZGUoeyAiaWQiOiBCYXNlNjRVUkwucGFyc2UodXNlcmhh
bmRsZUJhc2U2NCksICJuYW1lIjogdXNlcmhhbmRsZUJhc2U2NCB9KSkpOworCisgICAgICAgIHJl
dHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlh
bCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQs
IGZhbHNlKTsKKyAgICAgICAgICAgIGFzc2VydF9mYWxzZSh0ZXN0UnVubmVyLmtleUV4aXN0c0lu
S2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShhbm90aGVyQ3JlZGVudGlhbElEKSkpOwor
ICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBkdXBsaWNhdGUgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMiIp
OwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGQ3
OTg2YzhhOWJjNzljN2QxN2VhMDkzMTRjMTQ4MWEzZTEyZTMxNWUuLmQzZjRmNWQ3YWU5ZmFkZWM5
NDRkZTg4NzU4MTlhMjY1YjU0MzU0MDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQu
aHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMtZXhwZWN0
ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAot
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAyIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiAzIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNo
ZWQgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbZ2V0XV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZh
aWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXggZjAyYzI1NWU4ODI0MDQ3NGYxMjIy
YzEyYjA2NWM2YjlmOGU5OWYzMi4uODNlYjZiNjBiNmY5MGI2ZTdlZTRhZWY5ZThlMTYxM2JkOTY2
OWRhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbApAQCAtNCw2NCArNCw3MiBAQAogPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4vcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgogPHNjcmlwdD4KLSAgICAoYXN5bmMg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVz
ZXJoYW5kbGVCYXNlNjQoKTsKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2Nl
cHRBdXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwor
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAgIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRC
YXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNl
NjQpLCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQp
LCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpLCB0
cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAg
ICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMg
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CiAgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0
ZVByaXZhdGVLZXlCYXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQg
Y2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBj
cmVkZW50aWFsSURCYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwgY3Jl
ZGVudGlhbElEKSk7CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0
cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4K
ICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7
CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJh
dGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9u
OiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFsSWRC
YXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2NCB9IH0pOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0
ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVi
bGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJy
YXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRp
YWxJRCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0
eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0g
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3Jl
ZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImJsZSJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJp
bnRlcm5hbCJdIH0KLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAg
dGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBj
b25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgYWxsb3dDcmVkZW50aWFsczogWworICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJs
aWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCkgfQorICAg
ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfTsKIAotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3Bl
cmF0aW9uIHRpbWVkIG91dC4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3Iu
Iik7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0
aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAg
ICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpIH0K
LSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHBy
aXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhl
bigoKSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVu
dGlhbElEQmFzZTY0KTsKKyAgICAgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2Fs
IGF1dGhlbnRpY2F0b3IuIDJuZCIpOwogCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2
YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkgPT4g
ewotICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhh
bmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiAyIik7CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAg
ICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0
KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRp
YWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0
ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsIGNyZWRlbnRpYWxJRCkpOworICAg
ICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlk
ZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRB
dXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVk
Q3JlZGVudGlhbElkQmFzZTY0OiBjcmVkZW50aWFsSURCYXNlNjQgfSB9KTsKIAotICAgICAgICBw
cm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAg
ICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDog
MTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBjb25zdCBvcHRp
b25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgdGltZW91
dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKIAorICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHBy
aXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhl
bigoKSA9PiB7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0
ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJl
amVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0
aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5l
ci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHNp
bGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAzIik7Ci0gICAgfSko
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwg
Y3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IGYyN2Y3MTE5MjI3ZTgwZTM2MDEw
ODNjMmMwYjVlNDA5MDdkOGUyNjAuLmJkYjYwNzZjMmJjODg5Y2QwYTJlNGVjZjlhNzQ2ZWE5YzVi
M2UzMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1r
ZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1s
b2NhbC5odHRwcy5odG1sCkBAIC00LDc3ICs0LDg1IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsK
LSAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2
NCgpOworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0
ZXN0YXRpb246IGZhbHNlIH0gfSk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwu
cGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFy
c2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVz
dENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVybiBw
cm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmdldChvcHRpb25zKSwgIk5vIG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBw
bGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CiAg
ICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlC
YXNlNjQoKTsKICAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3Jl
ZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURC
YXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwgY3JlZGVudGlhbElEKSk7
CiAgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92
ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KICAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBm
YWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0
OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewot
ICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIz
NDU2IiksCi0gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0
cmFuc3BvcnRzOiBbInVzYiJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFs
SUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImludGVybmFs
Il0gfQotICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfTsKLQotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2Vk
RXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gbWF0Y2hlZCBj
cmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0
b3IuIik7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5v
IG1hdGNoZWQgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Cisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRp
b246IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2
NCB9IH0pOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAg
ICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7
IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0
KSB9Ci0gICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9OworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWworICAgICAgICAgICAgICAgICAg
ICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRs
ZUJhc2U2NCkgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
IAorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVy
LmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNl
ckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk5v
IG1hdGNoZWQgY3JlZGVudGlhbHMgYXJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBh
dXRoZW50aWNhdG9yLiIpLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4o
cHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAg
ICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91
bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2
NCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4gMm5kIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hh
aW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG5vIG1hdGNoZWQgY3JlZGVudGlhbHMg
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCIpOworCisgICAgcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2Vu
ZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3
YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29u
c3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAs
IGNyZWRlbnRpYWxJRCkpOworICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4g
VGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRp
b24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxz
LnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRB
dXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVk
Q3JlZGVudGlhbElkQmFzZTY0OiBjcmVkZW50aWFsSURCYXNlNjQgfSB9KTsKIAotICAgICAgICBw
cm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAg
ICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFz
Y2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKQor
ICAgICAgICAgICAgfQorICAgICAgICB9OwogCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtl
eUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiQ291bGRuJ3QgdmVyaWZ5IHVzZXIuIikudGhlbigoKSA9
PiB7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAg
dGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJ
ZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHMo
dCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyks
ICJDb3VsZG4ndCB2ZXJpZnkgdXNlci4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xl
YW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aG91dCB1c2Vy
IGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2
NCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3
aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAot
ICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0g
ewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAg
YWxsb3dDcmVkZW50aWFsczogWwotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElE
LCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6
ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJibGUiXSB9Ci0g
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7
CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAgIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRC
YXNlNjQpLCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlw
ZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNl
NjQpLCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQp
LCB0cmFuc3BvcnRzOiBbImJsZSJdIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAg
ICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7Ci0gICAgICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0gICAgfSkoKTsKKyAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCB0aW1lb3V0IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQt
c3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCmluZGV4IDkzNjBhZmI4ZjU1ODI3NTg0M2Y5MDAzNDU3
YzcwZTg3YzQzNzZjYmYuLjc4ZDRkN2IwNzZiMTkxYWU4ZDZiYmM1N2Y0Y2U2YWEzODM4MDE2Zjgg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5o
dHRwcy5odG1sCkBAIC00LDc1ICs0LDgwIEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRp
bC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsKLSAgICAg
ICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOwot
ICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5
QmFzZTY0KCk7Ci0gICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNy
ZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKLSAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNv
bmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVu
dCBjb25maWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9j
YWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxz
ZSwgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDogdXNlcmhhbmRsZUJhc2U2NCB9IH0pOwotCi0g
ICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7CisgICAgZnVuY3Rp
b24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFzZTY0
KQorICAgIHsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVz
dFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShjcmVkZW50aWFs
SUQpKTsKIAotICAgICAgICAgICAgIC8vIENoZWNrIHJlc3BvbmQKLSAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBjcmVkZW50aWFs
SUQpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMt
a2V5Jyk7Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNy
ZWRlbnRpYWwucmF3SWQpLCBjcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiks
ICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6
Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOwotICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2Vx
dWFscyhuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUpLCBCYXNl
NjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCkpOwotICAgICAgICAgICAgYXNzZXJ0X25vdF9v
d25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBp
ZCIpOworICAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgY3JlZGVudGlhbElEKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIGNy
ZWRlbnRpYWxJRCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNy
ZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uZ2V0
IiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQz
In0nKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50
aWFsLnJlc3BvbnNlLnVzZXJIYW5kbGUpLCBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVC
YXNlNjQpKTsKKyAgICAgICAgYXNzZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRD
bGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwogCi0gICAgICAgICAgICAvLyBDaGVj
ayBhdXRoRGF0YQotICAgICAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRoRGF0YShu
ZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhKSk7Ci0g
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhh
c2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1
Y2YzYmE4MzFkOTc2MyIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFn
cywgNSk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmNvdW50ZXIsIDApOwor
ICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQorICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29k
ZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRv
ckRhdGEpKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvSGV4U3RyaW5nKGF1dGhEYXRh
LnJwSWRIYXNoKSwgIjQ5OTYwZGU1ODgwZThjNjg3NDM0MTcwZjY0NzY2MDViOGZlNGFlYjlhMjg2
MzJjNzk5NWNmM2JhODMxZDk3NjMiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5m
bGFncywgNSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7CiAK
LSAgICAgICAgICAgIC8vIENoZWNrIHNpZ25hdHVyZQotICAgICAgICAgICAgcmV0dXJuIGNyeXB0
by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLCBCYXNlNjRVUkwucGFyc2UocHJpdmF0ZUtleUJhc2U2
NCkuc2xpY2UoMCwgNjUpLCB7IG5hbWU6ICJFQ0RTQSIsIG5hbWVkQ3VydmU6ICJQLTI1NiIgfSwg
ZmFsc2UsIFsndmVyaWZ5J10pLnRoZW4oIHB1YmxpY0tleSA9PiB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJzaGEtMjU2IiwgY3JlZGVudGlhbC5yZXNwb25z
ZS5jbGllbnREYXRhSlNPTikudGhlbiAoIGhhc2ggPT4gewotICAgICAgICAgICAgICAgICAgICAv
LyBjcmVkZW50aWFsLnJlc3BvbnNlLnNpZ25hdHVyZSBpcyBpbiBBU04uMSBhbmQgV2ViQ3J5cHRv
IGV4cGVjdCBzaWduYXR1cmVzIHByb3ZpZGVzIGluIHJ8cy4KLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGNyeXB0by5zdWJ0bGUudmVyaWZ5KHtuYW1lOiAiRUNEU0EiLCBoYXNoOiAiU0hBLTI1
NiJ9LCBwdWJsaWNLZXksIGV4dHJhY3RSYXdTaWduYXR1cmUoY3JlZGVudGlhbC5yZXNwb25zZS5z
aWduYXR1cmUpLCBjb25jYXRlbmF0ZUJ1ZmZlcnMoY3JlZGVudGlhbC5yZXNwb25zZS5hdXRoZW50
aWNhdG9yRGF0YSwgaGFzaCkpLnRoZW4oIHZlcmlmaWVkID0+IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGFzc2VydF90cnVlKHZlcmlmaWVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFz
c2VydF9ub3Rfb3duX3Byb3BlcnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0ZW5zaW9uUmVzdWx0
cygpLCAiYXBwaWQiKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIC8vIENoZWNr
IHNpZ25hdHVyZQorICAgICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIs
IEJhc2U2NFVSTC5wYXJzZShwcml2YXRlS2V5QmFzZTY0KS5zbGljZSgwLCA2NSksIHsgbmFtZTog
IkVDRFNBIiwgbmFtZWRDdXJ2ZTogIlAtMjU2IiB9LCBmYWxzZSwgWyd2ZXJpZnknXSkudGhlbigg
cHVibGljS2V5ID0+IHsKKyAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmRpZ2VzdCgi
c2hhLTI1NiIsIGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLnRoZW4gKCBoYXNo
ID0+IHsKKyAgICAgICAgICAgICAgICAvLyBjcmVkZW50aWFsLnJlc3BvbnNlLnNpZ25hdHVyZSBp
cyBpbiBBU04uMSBhbmQgV2ViQ3J5cHRvIGV4cGVjdCBzaWduYXR1cmVzIHByb3ZpZGVzIGluIHJ8
cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS52ZXJpZnkoe25hbWU6ICJF
Q0RTQSIsIGhhc2g6ICJTSEEtMjU2In0sIHB1YmxpY0tleSwgZXh0cmFjdFJhd1NpZ25hdHVyZShj
cmVkZW50aWFsLnJlc3BvbnNlLnNpZ25hdHVyZSksIGNvbmNhdGVuYXRlQnVmZmVycyhjcmVkZW50
aWFsLnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhLCBoYXNoKSkudGhlbiggdmVyaWZpZWQgPT4g
eworICAgICAgICAgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh2ZXJpZmllZCk7CisgICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9ub3Rfb3duX3Byb3BlcnR5KGNyZWRlbnRpYWwuZ2V0Q2xpZW50RXh0
ZW5zaW9uUmVzdWx0cygpLCAiYXBwaWQiKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KIAotICAgICAgICBwcm9taXNl
X3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAg
ICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVS
TC5wYXJzZSgiTVRJek5EVTIiKQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Cisg
ICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFz
ZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNy
ZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0
KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRl
bnRpYWxJRCk7CisgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBu
ZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRp
Y2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZENyZWRlbnRp
YWxJZEJhc2U2NDogY3JlZGVudGlhbElEQmFzZTY0IH0gfSk7CiAKLSAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlU
b0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsK
LSAgICAgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRo
ZW4oY3JlZGVudGlhbCA9PiB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNy
ZWRlbnRpYWwpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1Ymxp
Y0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6
TkRVMiIpCisgICAgICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0
KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFy
c2UoIk1USXpORFUyIiksCi0gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0
VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVu
dGlhbElELCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQotICAgICAgICAgICAgICAgICAgICBd
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihw
cml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpOwor
ICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4geworICAgICAgICAgICAgcmV0dXJuIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWws
IGNyZWRlbnRpYWxJRCwgcHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1v
Y2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4o
cHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAg
ICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKLSAgICB9KSgpOworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAg
ICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJh
c2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVk
ZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJh
c2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOworICAgICAgICAvLyBEZWZhdWx0IG1v
Y2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlm
ZmVyZW50IGNvbmZpZ3VyYXRpb24uCisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2NCB9
IH0pOworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFu
ZGxlQmFzZTY0KSwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBb
ImludGVybmFsIl0gfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVu
bmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0
VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICByZXR1
cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFzZTY0
KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGggbWF0Y2hlZCBhbGxvdyBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcmVzb3VyY2VzL3V0aWwuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNv
dXJjZXMvdXRpbC5qcwppbmRleCA2MWQ4ZjcyNWZmMmI1MTc4YWVhMTgzODhhNzU1MGUzYTI1NjM2
OWNkLi5iNjU1ZTJiMDQ4YTM5OWVhZDk5YzIwNTVmMDNhMzczYTRmNWIyMWM3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcworKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcwpAQCAtNSw2ICs1
LDcgQEAgY29uc3QgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCA9CiAgICAgIlJRPT0iOwogY29u
c3QgdGVzdFJwSWQgPSAibG9jYWxob3N0IjsKIGNvbnN0IHRlc3RVc2VyaGFuZGxlQmFzZTY0ID0g
IkFBRUNBd1FGQmdjSUNRPT0iOworY29uc3QgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQgPSAi
b21KcFpFb0FBUUlEQkFVR0J3Z0paRzVoYldWd1FVRkZRMEYzVVVaQ1oyTkpRMUU5UFE9PSI7CiBj
b25zdCB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCA9CiAgICAgIk1JSUI2akNDQVpD
Z0F3SUJBZ0lHQVdIQXhjanZNQW9HQ0NxR1NNNDlCQU1DTUZNeEp6QWxCZ05WQkFNTUhrSmgiICsK
ICAgICAiYzJsaklFRjBkR1Z6ZEdGMGFXOXVJRlZ6WlhJZ1UzVmlJRU5CTVRFVE1CRUdBMVVFQ2d3
S1FYQndiR1VnU1c1aiIgKwpAQCAtNDQ5LDcgKzQ1MCw3IEBAIGZ1bmN0aW9uIGNoZWNrVTJmR2V0
QXNzZXJ0aW9uUmVzdWx0KGNyZWRlbnRpYWwsIGlzQXBwSUQgPSBmYWxzZSwgYXBwSURIYXNoID0g
ImMyCiAKIGZ1bmN0aW9uIGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpCiB7Ci0gICAgbGV0IGJ1
ZmZlciA9IG5ldyBVaW50OEFycmF5KDE2KTsKKyAgICBsZXQgYnVmZmVyID0gbmV3IFVpbnQ4QXJy
YXkoOCk7CiAgICAgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhidWZmZXIpOwogICAgIHJldHVybiBi
dG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwgYnVmZmVyKSk7CiB9CkBAIC00ODYsMyAr
NDg3LDkgQEAgYXN5bmMgZnVuY3Rpb24gY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlC
YXNlNjQpIHsKICAgICBjb25zdCBwdWJsaWNLZXkgPSBwcml2YXRlS2V5LnNsaWNlKDAsIDY1KTsK
ICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoInNo
YS0xIiwgcHVibGljS2V5KSk7CiB9CisKK2Z1bmN0aW9uIGJhc2U2NGVuY29kZShiaW5hcnkpCit7
CisgICAgY29uc3QgdW5pdDhBcnJheSA9IG5ldyBVaW50OEFycmF5KGJpbmFyeSk7CisgICAgcmV0
dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLCB1bml0OEFycmF5KSk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393180</attachid>
            <date>2020-03-10 14:27:38 -0700</date>
            <delta_ts>2020-03-11 11:00:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183533-20200310142737.patch</filename>
            <type>text/plain</type>
            <size>142857</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjhjMTc2ZTgzMWQ1
ZjNmNDNiMDVlNjI5OTJkNGM1ZDU2Njk2Mi4uY2UyZWI0NmMxOWI0MDUzNTY0ODJhZDQ4MjA5MzYw
MGE4NzAxNzEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAzLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBGb3Jt
YWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0Nzky
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3Zl
cmVkIGJ5IG5ldyB0ZXN0IGNvbnRlbnRzIHdpdGhpbiBleGlzdGluZyBmaWxlcy4KKworICAgICAg
ICAqIE1vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhu
L0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oOgorICAgICAgICBNb2RpZmllcyB0aGUg
Y29uc3RydWN0b3JzIHRvIGFjY2VwdCB1c2VyRW50aXR5Lm5hbWUuCisKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmg6CisgICAgICAgIEFkZHMgYSBGSVhNRS4KKwor
ICAgICAgICAqIHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9j
YWxDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbjo6TG9jYWxDb25maWd1cmF0aW9uOjpkZWNvZGUp
OgorICAgICAgICAqIHRlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5p
ZGw6CisgICAgICAgIE1vZGlmaWVzIHRoZSB0ZXN0IGluZnJhIHRvIHVzZSBDcmVkZW50aWFsIElE
IGFzIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBjcmVkZW50aWFsIGluc3RlYWQgb2YKKyAg
ICAgICAgdGhlIG9yaWdpbmFsIGNvbWJpbmF0aW9uIG9mIFJQIElEIGFuZCB1c2VyIGhhbmRsZS4K
KwogMjAyMC0wMy0wNiAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjU3NzYwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1OWY2
NmYxZjc3YzkwZWYwMzc2NmVhYzBhMTFkMjVjYWIwNjcwMjBjLi4xNTUzMzFjOGM1ZDBhZmRhNzBi
MGE1M2Y5YmFiMWZmM2QxYjQ2OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIwLTAz
LTA5ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1
dGhuXSBGb3JtYWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS80MzM0NzkyNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGZvcm1hbGl6ZXMgdGhlIHNjaGVtYSBmb3IgdGhlIEtleWNoYWluIGFz
IGZvbGxvd3M6CisgICAgICAgIGtTZWNBdHRyTGFiZWw6IFJQIElECisgICAgICAgIGtTZWNBdHRy
QXBwbGljYXRpb25MYWJlbDogQ3JlZGVudGlhbCBJRCAoYXV0by1nZW4gYnkgS2V5Y2hhaW4pCisg
ICAgICAgIGtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHsgImlkIjogVXNlckVudGl0eS5pZCwgIm5h
bWUiOiBVc2VyRW50aXR5Lm5hbWUgfSAoQ0JPUiBlbmNvZGVkKQorICAgICAgICBOb3RlZCwgdGhl
IHZhbGUgb2Yga1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGJ5IHRoZSBLZXljaGFpbiwgd2hpY2ggaXMgYSBTSEEtMSBoYXNoIG9mCisgICAgICAgIHRo
ZSBwdWJsaWMga2V5LgorCisgICAgICAgIEFjY29yZGluZyB0byB0aGUgU3RlcCA3LiBmcm9tIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jb3AtbWFrZS1jcmVkLCB0aGUgZm9sbG93aW5n
IGZpZWxkcyBhcmUgbWFuZGF0b3J5CisgICAgICAgIDEuIHJwSWQgKHJwRW50aXR5LmlkKTsKKyAg
ICAgICAgMi4gdXNlckhhbmRsZSAodXNlckVudGl0eS5pZCksIHRoaXMgaXMgcmVxdWlyZWQgZm9y
IGF1dGhlbnRpY2F0b3JzIHRoYXQgc3VwcG9ydCByZXNpZGVudCBrZXlzOworICAgICAgICAzLiBj
cmVkZW50aWFsSWQuCisKKyAgICAgICAgU29tZSBvdGhlciBvcHRpb25hbCBmaWVsZHMgYXJlOgor
ICAgICAgICAoZnJvbSBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2RpY3RkZWYtcHVi
bGlja2V5Y3JlZGVudGlhbHJwZW50aXR5KQorICAgICAgICAxLiBycEVudGl0eS5uYW1lOworICAg
ICAgICAyLiBycEVuaXR0eS5pY29uOworICAgICAgICAoZnJvbSBodHRwczovL3d3dy53My5vcmcv
VFIvd2ViYXV0aG4vI2RpY3RkZWYtcHVibGlja2V5Y3JlZGVudGlhbHVzZXJlbnRpdHkpCisgICAg
ICAgIDMuIHVzZXJFbnRpdHkuZGlzcGxheU5hbWU7CisgICAgICAgIDQuIHVzZXJFbnRpdHkubmFt
ZTsKKyAgICAgICAgNS4gdXNlckVudGl0eS5pY29uOworICAgICAgICAoZnJvbSBodHRwczovL3d3
dy53My5vcmcvVFIvd2ViYXV0aG4vI3NpZ24tY291bnRlcikKKyAgICAgICAgNi4gc2lnbmF0dXJl
IGNvdW50ZXIuCisKKyAgICAgICAgQW1vbmcgdGhlIHNpeCBwb3NzaWJsZSBmaWVsZHMsIG9ubHkg
NC4gaXMgY2hvc2VuIHRvIHN0b3JlLiBIZXJlIGlzIHdoeToKKyAgICAgICAgRm9yIHJwRW50aXR5
LCBycEVudGl0eS5pZCB3aGljaCBpcyBlaXRoZXIgdGhlIGRvbWFpbiBvciB0aGUgZVRMRCArIDEg
b2YgdGhlIHdlYnNpdGUgaXMKKyAgICAgICAgc3VmZmljaWVudCBlbm91Z2ggdG8gZWl0aGVyIGNs
YXNzaWZ5IHRoZSBjcmVkZW50aWFsIG9yIHNlcnZpbmcgdGhlIFVJLiBBbHNvLCB0aGlzIGlzIHRo
ZSBvbmx5CisgICAgICAgIHRydXN0d29ydGh5IGluZm9ybWF0aW9uIHRoYXQgdGhlIFVzZXJBZ2Vu
dCBwcm9kdWNlLiBPdGhlcnMgY291bGQgcG90ZW50aWFsbHkgYmUgdXNlZCBieQorICAgICAgICBt
YWxpY2lvdXMgd2Vic2l0ZXMgZm9yIGF0dGFja2luZyB0aGUgS2V5Y2hhaW4gb3Igc3Bvb2Zpbmcv
cGhpc2hpbmcgdXNlcnMgd2hlbiBiZWluZyBkaXNwbGF5ZWQKKyAgICAgICAgaW4gdGhlIFVJLiBB
bHNvLCBycEVuaXR0eS5pY29uIGlzIGEgVVJMIHRvIHRoZSB3ZWJzaXRlJ3MgZmF2aWNvbiwgd2hp
Y2ggaWYgbm90IGltcGxlbWVudGVkCisgICAgICAgIGNvcnJlY3RseSBjYW4gYmUgdXNlZCBmb3Ig
dHJhY2tpbmcuCisKKyAgICAgICAgRm9yIHVzZXJFbnRpdHksIHVzZXJFbnRpdHkubmFtZSBpcyB0
aGUgaHVtYW4gcmVhZGFibGUgdmVyc2lvbiBvZiB1c2VyRW50aXR5LmlkLCBhbmQgdGhlcmVmb3Jl
CisgICAgICAgIGlzIGNob3NlbiB0byBzdG9yZSBzdWNoIHRoYXQgbGF0ZXIgb24gV2ViS2l0IGNh
biBwYXNzIGl0IHRvIFVJIGNsaWVudCB0byBoZWxwIHVzZXJzIGRpc2FtYmlndWF0ZQorICAgICAg
ICBkaWZmZXJlbnQgY3JlZGVudGlhbHMuIEFuZCBpdCBpcyBuZWNlc3NhcnkgYXMgdXNlckVudGl0
eS5pZCBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBodW1hbgorICAgICAgICByZWFkYWJsZS4gT3Ro
ZXJzIGFyZSBhYmFuZG9uZWQgZm9yIHRoZSB2ZXJ5IHNhbWUgcmVhc29uIGFzIGFib3ZlLgorCisg
ICAgICAgIEZvciBzaWduYXR1cmUgY291bnRlciwgdGhpcyBpcyBhbiBpbnRlcmVzZXRpbmcgY291
bnRlciBtZXRob2QgZm9yIFJQIHRvIGRldGVjdCBwcml2YXRlIGtleSBjbG9uaW5nLgorICAgICAg
ICBXaGlsZSBpdCBzb3VuZHMgcGxhdXNpYmxlIGluIHBhcGVyLCBpdCBkb2Vzbid0IHNlZW0gdG8g
YmUgdXNlZnVsIGluIHByYWN0aWNlLiBGb3IgQXBwbGUncyBwbGF0Zm9ybQorICAgICAgICBhdXRo
ZW50aWNhdG9yLCBwcml2YXRlIGtleXMgYXJlIHN0b3JlZCB3aXRoaW4gU0VQLiBJZiBhIHRoaXJk
IHBhcnR5IGNhbiBnZXQgYSBwcml2YXRlIGtleSBvdXQgZnJvbQorICAgICAgICB0aGUgU0VQIHdp
dGhvdXQgQXBwbGUgbm90aWNpbmcsIGFuZCBSUHMgbm90aWNlIGl0IGJlZm9yZSBBcHBsZS4gSXQg
c2VlbXMgdG8gYmUgYSBtdWNoIGJpZ2dlciBjb25jZXJuCisgICAgICAgIGZvciBBcHBsZSB0aGFu
IFJQcy4gUlBzIGhhdmUgbm8gcmVhc29ucyB0byBub3QgdHJ1c3QgQXBwbGUgd2lsbCBkbyBpdHMg
am9iLiBBbHNvLCBvdXIgcGxhdGZvcm0KKyAgICAgICAgYXV0aGVudGljYXRvcnMgd2lsbCBwcm92
aWRlIGF0dGVzdGF0aW9ucyBzdWNoIHRoYXQgUlAgY2FuIHRydXN0IHByaXZhdGUga2V5cyBhcmUg
YmVpbmcgaGVsZCBzZWN1cmVseQorICAgICAgICB3aXRoaW4gdGhlIFNFUC4gU28gdGhpcyBmaWVs
ZCBpcyBhYnNvbHV0ZWx5IHVzZWxlc3MuCisKKyAgICAgICAgSW4gdGVybXMgb2YgdGhlIHNjaGVt
YSwKKyAgICAgICAgMSkgUlAgSUQgaXMgbmVlZGVkIHRvIHF1ZXJ5IGFsbCBjcmVkZW50aWFscyBy
ZWxhdGVkLCBhbmQgdGhlcmVmb3JlIGl0IG5lZWRzIGEgY29sdW1uIGFuZCBrU2VjQXR0ckxhYmVs
CisgICAgICAgIGlzIHN1cHBvc2VkIHRvIGJlIGh1bWFuIHJlYWRhYmxlOworICAgICAgICAyKSBr
U2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwgaXMgdGhlIGF1dG8gZ2VuZXJhdGVkIHByb2dyYW1tYXRp
Y2FsIGlkZW50aWZpZXIgZm9yIGEgU2VjSXRlbSwgYW5kCisgICAgICAgIHRoZXJlZm9yZSBpcyBz
dWl0YWJsZSBhcyB0aGUgY3JlZGVudGlhbCBJRC4gR2l2ZW4gdGhlIGlucHV0IHRvIHRoZSBTSEEt
MSBpcyBnZW5lcmF0ZWQgYnkgdXMsIGFuZAorICAgICAgICBpdCBpcyBvbmx5IG5lZWRlZCB0byBi
ZSBwb3dlcmZ1bCBlbm91Z2ggdG8gYmUgdW5pcXVlIGFjcm9zcyB0aGUga2V5Y2hhaW4gd2l0aGlu
IGEgZGV2aWNlLCBhbmQgcG90ZW50aWFsbHkKKyAgICAgICAgdG8gYmUgdW5pcXVlIGFjcm9zcyBk
aWZmZXJlbnQgb3RoZXIgY3JlZGVudGlhbCBJRCBmb3IgdGhlIHNhbWUgdXNlci4gVGhlIFNIQS0x
IGNvbGxpc2lvbiBhdHRhY2sKKyAgICAgICAgZG9lc24ndCBzZWVtIHZhbGlkIGhlcmUuCisgICAg
ICAgIDMpIGtTZWNBdHRyQXBwbGljYXRpb25UYWcgaXMgdGhlIG9ubHkgb3RoZXIgY29sdW1uIEtl
eWNoYWluIGFsbG93cyBhcHBsaWNhdGlvbnMgdG8gbW9kaWZ5LiBUaGVyZWZvcmUsCisgICAgICAg
IFVzZXJFbnRpdHkuaWQgYW5kIFVzZXJFbnRpdHkubmFtZSBpcyBidW5kbGVkIHRvIHVzZSB0aGlz
IHNsb3QuIFRoZSByZWFzb24gdG8gdXNlIENCT1IgaGVyZSBpcyB0aGF0CisgICAgICAgIGl0IGlz
IG1vcmUgZnJpZW5kbHkgdGhlbiBKU09OIHRvIGVuY29kZSBiaW5hcmllcywgYW5kIGl0IGlzIHVz
ZWQgd2lkZWx5IGluIFdlYkF1dGhuLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW06CisgICAgICAgIChX
ZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvckludGVybmFsOjp0b0FycmF5QnVmZmVyKToKKyAgICAg
ICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OmdldEV4aXN0aW5nQ3JlZGVu
dGlhbHMpOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50
aWFsKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VD
cmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxB
dXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJBdHRlc3RlZCk6CisgICAg
ICAgIChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsIGNv
bnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2NrTG9j
YWxDb25uZWN0aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2NrTG9jYWxDb25uZWN0aW9uOjpm
aWx0ZXJSZXNwb25zZXMgY29uc3QpOgorCiAyMDIwLTAzLTA1ICBKaWV3ZW4gVGFuICA8amlld2Vu
X3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBEbyBub3QgcGVyZm9ybSBBdHRl
c3RhdGlvbiB3aXRoIHR5cGUgaXMgJ25vbmUnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZS5jcHAKaW5kZXggMzg4OTNlZTM2NjRlZWZiOTBlZDdiYTI0ZDNlNzdmODNiMzQzOTI3Zi4uMWMw
YzA0MWVjYjM3ZTkxODE2NmE1YWIzZWMwNGQ5ZWRmYWI1ZTBlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmNwcApAQCAtNDgsOSArNDgsOSBAQCBSZWY8QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlPiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShj
b25zdAogICAgIHJldHVybiBjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyYXdJZC5kYXRhKCks
IHJhd0lkLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoYXV0aGVudGljYXRvckRhdGEuZGF0
YSgpLCBhdXRoZW50aWNhdG9yRGF0YS5zaXplKCkpLCBBcnJheUJ1ZmZlcjo6Y3JlYXRlKHNpZ25h
dHVyZS5kYXRhKCksIHNpZ25hdHVyZS5zaXplKCkpLCBXVEZNb3ZlKHVzZXJoYW5kbGVCdWZmZXIp
LCBXVEY6Om51bGxvcHQpOwogfQogCi1SZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
PiBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+
JiYgcmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9s
UmVmIGFjY2Vzc0NvbnRyb2wpCitSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYg
cmF3SWQsIFJlZjxBcnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTdHJpbmcmJiBuYW1lLCBTZWNB
Y2Nlc3NDb250cm9sUmVmIGFjY2Vzc0NvbnRyb2wpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3Zl
KHVzZXJIYW5kbGUpLCBhY2Nlc3NDb250cm9sKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFdURk1vdmUocmF3SWQpLCBXVEZNb3ZlKHVz
ZXJIYW5kbGUpLCBXVEZNb3ZlKG5hbWUpLCBhY2Nlc3NDb250cm9sKSk7CiB9CiAKIHZvaWQgQXV0
aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpzZXRBdXRoZW50aWNhdG9yRGF0YShWZWN0b3I8
dWludDhfdD4mJiBhdXRoZW50aWNhdG9yRGF0YSkKQEAgLTY2LDkgKzY2LDEwIEBAIEF1dGhlbnRp
Y2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJl
ZjxBcnJheUJ1ZmZlcj4mCiB7CiB9CiAKLUF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwg
UmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNz
Q29udHJvbCkKK0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6QXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVy
PiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNz
Q29udHJvbCkKICAgICA6IEF1dGhlbnRpY2F0b3JSZXNwb25zZShXVEZNb3ZlKHJhd0lkKSkKICAg
ICAsIG1fdXNlckhhbmRsZShXVEZNb3ZlKHVzZXJIYW5kbGUpKQorICAgICwgbV9uYW1lKFdURk1v
dmUobmFtZSkpCiAgICAgLCBtX2FjY2Vzc0NvbnRyb2woYWNjZXNzQ29udHJvbCkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFz
c2VydGlvblJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5oCmluZGV4IDJiMzA5Y2Y5MDJhNjRlNWNhODdhNDk3
NGZiYTk4ZjI4M2MzNWRjNDAuLjVkY2QwMzc1MGYyZWFmYzAwYjMzNmYxYWE2OGFlYzliNDUyN2M3
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRvckFzc2VydGlvblJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuaApAQCAtMzcsNyArMzcsNyBAQCBj
bGFzcyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UgOiBwdWJsaWMgQXV0aGVudGljYXRv
clJlc3BvbnNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRp
b25SZXNwb25zZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVm
ZmVyPiYmIGF1dGhlbnRpY2F0b3JEYXRhLCBSZWY8QXJyYXlCdWZmZXI+JiYgc2lnbmF0dXJlLCBS
ZWZQdHI8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgT3B0aW9uYWw8QXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cz4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHJhd0lkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGF1dGhlbnRpY2F0b3JEYXRhLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
dXNlckhhbmRsZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgcmF3SWQsIFJlZjxB
cnJheUJ1ZmZlcj4mJiB1c2VySGFuZGxlLCBTZWNBY2Nlc3NDb250cm9sUmVmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gY3Jl
YXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVzZXJIYW5k
bGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwogICAgIHZpcnR1YWwgfkF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZSgpID0gZGVmYXVsdDsKIAogICAgIEFycmF5QnVm
ZmVyKiBhdXRoZW50aWNhdG9yRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0aGVudGljYXRvckRh
dGEuZ2V0KCk7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJlZjxBcnJh
eUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWZQdHI8QXJyYXlCdWZmZXI+JiYpOwot
ICAgIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZShSZWY8QXJyYXlCdWZmZXI+JiYsIFJl
ZjxBcnJheUJ1ZmZlcj4mJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CisgICAgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYm
LCBTdHJpbmcmJiwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAKICAgICBUeXBlIHR5cGUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBUeXBlOjpBc3NlcnRpb247IH0KICAgICBBdXRoZW50aWNhdG9yUmVz
cG9uc2VEYXRhIGRhdGEoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaAppbmRleCA2YTRjODNhYmEwMzFjMzhkMzc5ZTY2
YmM5M2VjNDdlNWYxOTMxNzYxLi41ZTUzODNmYWNmNWRmYmQyOWNmMTUzNTU3Y2E1OGIyOGRiOTk4
ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JP
UlZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JW
YWx1ZS5oCkBAIC0xNjQsNiArMTY0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaW1wbGUoKSBj
b25zdCB7IHJldHVybiB0eXBlKCkgPT0gVHlwZTo6U2ltcGxlVmFsdWU7IH0KICAgICBib29sIGlz
Qm9vbCgpIGNvbnN0IHsgcmV0dXJuIGlzU2ltcGxlKCkgJiYgKG1fc2ltcGxlVmFsdWUgPT0gU2lt
cGxlVmFsdWU6OlRydWVWYWx1ZSB8fCBtX3NpbXBsZVZhbHVlID09IFNpbXBsZVZhbHVlOjpGYWxz
ZVZhbHVlKTsgfQogCisgICAgLy8gRklYTUUoMTgzNTM1KTogQ29uc2lkZXJpbmcgYWRkaW5nICYm
IGdldHRlciBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgogICAgIC8vIFRoZXNlIHdpbGwgYWxsIGZh
dGFsbHkgYXNzZXJ0IGlmIHRoZSB0eXBlIGRvZXNuJ3QgbWF0Y2guCiAgICAgU2ltcGxlVmFsdWUg
Z2V0U2ltcGxlVmFsdWUoKSBjb25zdDsKICAgICBib29sIGdldEJvb2woKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmgKaW5kZXggNjI5NTU4ZjdmYmRmMDEyZjFlNjQxM2Y3OWU1NDc3NWEzY2Vk
MjU0MS4uNzljZjQ1ZjFhMjdkNmRkN2EyMzliZWRlMGY3MTRmZjFmYThjYjIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25D
b25maWd1cmF0aW9uLmgKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24gewogICAgICAgICBTdHJpbmcgcHJpdmF0ZUtleUJhc2U2NDsKICAg
ICAgICAgU3RyaW5nIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDsKICAgICAgICAgU3RyaW5nIGludGVy
bWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7Ci0gICAgICAgIFN0cmluZyBwcmVmZXJyZWRVc2Vy
aGFuZGxlQmFzZTY0OworICAgICAgICBTdHJpbmcgcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0
OwogCiAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFs
PExvY2FsQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImKTsKQEAgLTExMiw3ICsxMTIsNyBA
QCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbiB7CiB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogdm9pZCBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpM
b2NhbENvbmZpZ3VyYXRpb246OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAg
IGVuY29kZXIgPDwgYWNjZXB0QXV0aGVudGljYXRpb24gPDwgYWNjZXB0QXR0ZXN0YXRpb24gPDwg
cHJpdmF0ZUtleUJhc2U2NCA8PCB1c2VyQ2VydGlmaWNhdGVCYXNlNjQgPDwgaW50ZXJtZWRpYXRl
Q0FDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OworICAgIGVu
Y29kZXIgPDwgYWNjZXB0QXV0aGVudGljYXRpb24gPDwgYWNjZXB0QXR0ZXN0YXRpb24gPDwgcHJp
dmF0ZUtleUJhc2U2NCA8PCB1c2VyQ2VydGlmaWNhdGVCYXNlNjQgPDwgaW50ZXJtZWRpYXRlQ0FD
ZXJ0aWZpY2F0ZUJhc2U2NCA8PCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0xNTAsMTEgKzE1MCwxMSBAQCBPcHRpb25hbDxNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb24+IE1vY2tX
ZWJBdXRoZW50aQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJlc3VsdC5pbnRl
cm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0ID0gV1RGTW92ZSgqaW50ZXJtZWRpYXRlQ0FDZXJ0
aWZpY2F0ZUJhc2U2NCk7CiAKLSAgICBPcHRpb25hbDxTdHJpbmc+IHByZWZlcnJlZFVzZXJoYW5k
bGVCYXNlNjQ7Ci0gICAgZGVjb2RlciA+PiBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OwotICAg
IGlmICghcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCkKKyAgICBPcHRpb25hbDxTdHJpbmc+IHBy
ZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKKyAgICBkZWNvZGVyID4+IHByZWZlcnJlZENyZWRl
bnRpYWxJZEJhc2U2NDsKKyAgICBpZiAoIXByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICByZXN1bHQucHJlZmVycmVkVXNlcmhhbmRs
ZUJhc2U2NCA9IFdURk1vdmUoKnByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQpOworICAgIHJlc3Vs
dC5wcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQgPSBXVEZNb3ZlKCpwcmVmZXJyZWRDcmVkZW50
aWFsSWRCYXNlNjQpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRp
b24uaWRsCmluZGV4IGFkMTM5MzQ5YWQyZmMxNWNhZDgzZjZiMmQxNmIwODM4NjAzZGVlMzYuLjIw
OTk0MzFjNjA0MTA2NDRmZWUyOWU2NmExMzc3MjE4ZTFjOGRiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uLmlkbApAQCAtNzYsNyArNzYsNyBAQAogICAgIERPTVN0cmluZyBwcml2YXRlS2V5QmFz
ZTY0OwogICAgIERPTVN0cmluZyB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ7CiAgICAgRE9NU3RyaW5n
IGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ7Ci0gICAgRE9NU3RyaW5nIHByZWZlcnJl
ZFVzZXJoYW5kbGVCYXNlNjQ7CisgICAgRE9NU3RyaW5nIHByZWZlcnJlZENyZWRlbnRpYWxJZEJh
c2U2NDsKIH07CiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKaW5k
ZXggMjhhZWVjOGFkODQ0MDlmMDI0ZWUwNDIzZTY5MWY0YTg4MjZlZjUyYi4uMzUxOGM5YWZhNzhl
NGY2NzQwOTYxZmM4OTE3OGFmMWI4NjBiZDk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxB
dXRoZW50aWNhdG9yLmgKQEAgLTY3LDEwICs2NywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29u
dGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OkF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4mJiwgTG9jYWxDb25uZWN0aW9uOjpVc2VyVmVyaWZp
Y2F0aW9uLCBMQUNvbnRleHQgKik7CiAKICAgICB2b2lkIHJlY2VpdmVFeGNlcHRpb24oV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YSYmLCBXZWJBdXRoZW50aWNhdGlvblN0YXR1cyA9IFdlYkF1dGhlbnRp
Y2F0aW9uU3RhdHVzOjpMQUVycm9yKSBjb25zdDsKKyAgICB2b2lkIGRlbGV0ZUR1cGxpY2F0ZUNy
ZWRlbnRpYWwoKSBjb25zdDsKIAogICAgIFN0YXRlIG1fc3RhdGUgeyBTdGF0ZTo6SW5pdCB9Owog
ICAgIFVuaXF1ZVJlZjxMb2NhbENvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKyAgICAvLyBGSVhN
RSgxODM1MzQpOiBDb21iaW5lIHRoZXNlIHR3by4KICAgICBIYXNoU2V0PFJlZjxXZWJDb3JlOjpB
dXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiBtX2Fzc2VydGlvblJlc3BvbnNlczsKKyAg
ICBWZWN0b3I8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+IG1f
ZXhpc3RpbmdDcmVkZW50aWFsczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDQ3N2QzZDM0NTVjNWI3NzZj
NWU3ZjA5MDcwMzY3MjIyMmM3NWQ0MTAuLjE3OGMxMTI3NTE5ZDc3MDE2NmQ5MDA1ZGYzYWJmYjQw
OTlmMzc3MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAg
LTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgPFNlY3VyaXR5L1NlY0l0ZW0uaD4KICNpbXBvcnQgPFdl
YkNvcmUvQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0F1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL0NC
T1JSZWFkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9FeGNlcHRpb25EYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1B1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMuaD4KQEAgLTQ3LDYgKzQ4LDcgQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIENCT1IgPSBjYm9yOjpDQk9SVmFs
dWU7CiAKIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbCB7CiAKQEAgLTU1LDEy
ICs1NywxNiBAQCBjb25zdCB1aW50OF90IG1ha2VDcmVkZW50aWFsRmxhZ3MgPSAwYjAxMDAwMTAx
OyAvLyBVUCwgVVYgYW5kIEFUIGFyZSBzZXQuCiBjb25zdCB1aW50OF90IGdldEFzc2VydGlvbkZs
YWdzID0gMGIwMDAwMDEwMTsgLy8gVVAgYW5kIFVWIGFyZSBzZXQuCiAvLyBDcmVkZW50aWFsIElE
IGlzIGN1cnJlbnRseSBTSEEtMSBvZiB0aGUgY29ycmVzcG9uZGluZyBwdWJsaWMga2V5LgogY29u
c3QgdWludDE2X3QgY3JlZGVudGlhbElkTGVuZ3RoID0gMjA7Citjb25zdCBjaGFyKiBjb25zdCB1
c2VyRW50aXR5SWRLZXkgPSAiaWQiOworY29uc3QgY2hhciogY29uc3QgdXNlckVudGl0eU5hbWVL
ZXkgPSAibmFtZSI7Citjb25zdCB1aW50NjRfdCBjb3VudGVyID0gMDsKIAogc3RhdGljIGlubGlu
ZSBib29sIGVtcHR5VHJhbnNwb3J0c09yQ29udGFpbihjb25zdCBWZWN0b3I8QXV0aGVudGljYXRv
clRyYW5zcG9ydD4mIHRyYW5zcG9ydHMsIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQgdGFyZ2V0KQog
ewogICAgIHJldHVybiB0cmFuc3BvcnRzLmlzRW1wdHkoKSA/IHRydWUgOiB0cmFuc3BvcnRzLmNv
bnRhaW5zKHRhcmdldCk7CiB9CiAKKy8vIEZJWE1FKDE4MzUzNCk6IEZpbmQgYSBiZXR0ZXIgd2F5
IG9mIGNvbXBhcmluZyBjcmVkZW50aWFsIGlkLiBEb2luZyBpdCB3aXRoIGFycmF5IHNlZW1zIGZp
bmUgZ2l2ZW4gdGhlIGxpc3Qgc2hvdWxkIGJlIHNtYWxsLgogc3RhdGljIGlubGluZSBIYXNoU2V0
PFN0cmluZz4gcHJvZHVjZUhhc2hTZXQoY29uc3QgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxE
ZXNjcmlwdG9yPiYgY3JlZGVudGlhbERlc2NyaXB0b3JzKQogewogICAgIEhhc2hTZXQ8U3RyaW5n
PiByZXN1bHQ7CkBAIC05OCw2ICsxMDQsMTEgQEAgc3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZm
ZXI+IHRvQXJyYXlCdWZmZXIoTlNEYXRhICpkYXRhKQogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRh
Lmxlbmd0aCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiB0b0FycmF5QnVm
ZmVyKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKK3sKKyAgICByZXR1cm4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworfQorCiAvLyBGSVhNRSg8cmRh
cjovL3Byb2JsZW0vNjAxMDgxMzE+KTogUmVtb3ZlIHRoaXMgd2hpdGVsaXN0IG9uY2UgdGVzdGlu
ZyBpcyBjb21wbGV0ZS4KIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmluZz4mIHdoaXRlbGlzdGVk
UnBJZCgpCiB7CkBAIC0xMDksNiArMTIwLDU3IEBAIHN0YXRpYyBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIHdoaXRlbGlzdGVkUnBJZCgpCiAgICAgcmV0dXJuIHdoaXRlbGlzdGVkUnBJZDsKIH0KIAor
c3RhdGljIE9wdGlvbmFsPFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNl
Pj4+IGdldEV4aXN0aW5nQ3JlZGVudGlhbHMoY29uc3QgU3RyaW5nJiBycElkKQoreworICAgIC8v
IFNlYXJjaCBLZXljaGFpbiBmb3IgZXhpc3RpbmcgY3JlZGVudGlhbCBtYXRjaGVkIHRoZSBSUCBJ
RC4KKyAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKKyAgICAgICAgKGlkKWtTZWNDbGFzczog
KGlkKWtTZWNDbGFzc0tleSwKKyAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClrU2Vj
QXR0cktleUNsYXNzUHJpdmF0ZSwKKyAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJwSWQsCisg
ICAgICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRlczogQFlFUywKKyAgICAgICAgKGlkKWtTZWNN
YXRjaExpbWl0OiAoaWQpa1NlY01hdGNoTGltaXRBbGwsCisjaWYgSEFWRShEQVRBX1BST1RFQ1RJ
T05fS0VZQ0hBSU4pCisgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjog
QFlFUworI2Vsc2UKKyAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6IEBZRVMKKyNlbmRpZgor
ICAgIH07CisgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7CisgICAg
T1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9u
YXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKKyAgICBpZiAoc3RhdHVzICYmIHN0
YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJh
eVJlZik7CisgICAgTlNBcnJheSAqbnNBdHRyaWJ1dGVzQXJyYXkgPSAoTlNBcnJheSAqKWF0dHJp
YnV0ZXNBcnJheVJlZjsKKworICAgIFZlY3RvcjxSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlPj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5zQXR0
cmlidXRlc0FycmF5LmNvdW50KTsKKyAgICBmb3IgKE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyBp
biBuc0F0dHJpYnV0ZXNBcnJheSkgeworICAgICAgICBhdXRvIGRlY29kZWRSZXNwb25zZSA9IGNi
b3I6OkNCT1JSZWFkZXI6OnJlYWQodG9WZWN0b3IoYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBs
aWNhdGlvblRhZ10pKTsKKyAgICAgICAgaWYgKCFkZWNvZGVkUmVzcG9uc2UgfHwgIWRlY29kZWRS
ZXNwb25zZS0+aXNNYXAoKSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIGF1dG8m
IHJlc3BvbnNlTWFwID0gZGVjb2RlZFJlc3BvbnNlLT5nZXRNYXAoKTsKKworICAgICAgICBhdXRv
IGl0ID0gcmVzcG9uc2VNYXAuZmluZChDQk9SKHVzZXJFbnRpdHlJZEtleSkpOworICAgICAgICBp
ZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5zZWNvbmQuaXNCeXRlU3RyaW5nKCkp
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICAgICBhdXRvJiB1c2VySGFuZGxlID0gaXQt
PnNlY29uZC5nZXRCeXRlU3RyaW5nKCk7CisKKyAgICAgICAgaXQgPSByZXNwb25zZU1hcC5maW5k
KENCT1IodXNlckVudGl0eU5hbWVLZXkpKTsKKyAgICAgICAgaWYgKGl0ID09IHJlc3BvbnNlTWFw
LmVuZCgpIHx8ICFpdC0+c2Vjb25kLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAg
fQorICAgICAgICBhdXRvJiB1c2VybmFtZSA9IGl0LT5zZWNvbmQuZ2V0U3RyaW5nKCk7CisKKyAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2U6OmNyZWF0ZSh0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQXBwbGljYXRp
b25MYWJlbF0pLCB0b0FycmF5QnVmZmVyKHVzZXJIYW5kbGUpLCBTdHJpbmcodXNlcm5hbWUpLCAo
X19icmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFjY2Vz
c0NvbnRyb2xdKSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gTG9jYWxB
dXRoZW50aWNhdG9ySW50ZXJuYWwKIAogTG9jYWxBdXRoZW50aWNhdG9yOjpMb2NhbEF1dGhlbnRp
Y2F0b3IoVW5pcXVlUmVmPExvY2FsQ29ubmVjdGlvbj4mJiBjb25uZWN0aW9uKQpAQCAtMTI3LDYg
KzE4OSw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAg
Ly8gU2tpcCBTdGVwIDQtNSBhcyByZXF1aXJlUmVzaWRlbnRLZXkgYW5kIHJlcXVpcmVVc2VyVmVy
aWZpY2F0aW9uIGFyZSBlbmZvcmNlZC4KICAgICAvLyBTa2lwIFN0ZXAgOSBhcyBleHRlbnNpb25z
IGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KICAgICAvLyBTdGVwIDggaXMgaW1wbGljaXRseSBjYXB0
dXJlZCBieSBhbGwgVW5rbm93bkVycm9yIGV4Y2VwdGlvbiByZWNlaXZlUmVzcG9uZHMuCisgICAg
Ly8gU2tpcCBTdGVwIDEwIGFzIGNvdW50ZXIgaXMgY29uc3RhbnRseSAwLgogICAgIC8vIFN0ZXAg
Mi4KICAgICBpZiAobm90Rm91bmQgPT0gY3JlYXRpb25PcHRpb25zLnB1YktleUNyZWRQYXJhbXMu
ZmluZE1hdGNoaW5nKFtdIChhdXRvJiBwdWJLZXlDcmVkUGFyYW0pIHsKICAgICAgICAgcmV0dXJu
IHB1YktleUNyZWRQYXJhbS50eXBlID09IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNL
ZXkgJiYgcHViS2V5Q3JlZFBhcmFtLmFsZyA9PSBDT1NFOjpFUzI1NjsKQEAgLTEzNiwzNyArMTk5
LDIzIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjptYWtlQ3JlZGVudGlhbCgpCiAgICAgfQog
CiAgICAgLy8gU3RlcCAzLgorICAgIGF1dG8gZXhpc3RpbmdDcmVkZW50aWFscyA9IGdldEV4aXN0
aW5nQ3JlZGVudGlhbHMoY3JlYXRpb25PcHRpb25zLnJwLmlkKTsKKyAgICBpZiAoIWV4aXN0aW5n
Q3JlZGVudGlhbHMpIHsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwg
bWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IGV4aXN0aW5nIGNyZWRlbnRpYWxzIikgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV9leGlzdGluZ0NyZWRlbnRpYWxzID0gV1RGTW92ZSgq
ZXhpc3RpbmdDcmVkZW50aWFscyk7CisKICAgICBhdXRvIGV4Y2x1ZGVDcmVkZW50aWFsSWRzID0g
cHJvZHVjZUhhc2hTZXQoY3JlYXRpb25PcHRpb25zLmV4Y2x1ZGVDcmVkZW50aWFscyk7CiAgICAg
aWYgKCFleGNsdWRlQ3JlZGVudGlhbElkcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gU2VhcmNo
IEtleWNoYWluIGZvciB0aGUgUlAgSUQuCi0gICAgICAgIE5TRGljdGlvbmFyeSAqcXVlcnkgPSBA
ewotICAgICAgICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAg
ICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0g
ICAgICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogY3JlYXRpb25PcHRpb25zLnJwLmlkLAotICAg
ICAgICAgICAgKGlkKWtTZWNSZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAotICAgICAgICAgICAgKGlk
KWtTZWNNYXRjaExpbWl0OiAoaWQpa1NlY01hdGNoTGltaXRBbGwsCi0jaWYgSEFWRShEQVRBX1BS
T1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9u
S2V5Y2hhaW46IEBZRVMKLSNlbHNlCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTog
QFlFUwotI2VuZGlmCi0gICAgICAgIH07Ci0gICAgICAgIENGVHlwZVJlZiBhdHRyaWJ1dGVzQXJy
YXlSZWYgPSBudWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1h
dGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZhdHRyaWJ1dGVzQXJyYXlS
ZWYpOwotICAgICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQp
IHsKLSAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJp
bmcoIkNvdWxkbid0IHF1ZXJ5IEtleWNoYWluOiAiLCBzdGF0dXMpIH0pOworICAgICAgICBpZiAo
bm90Rm91bmQgIT0gbV9leGlzdGluZ0NyZWRlbnRpYWxzLmZpbmRNYXRjaGluZyhbJmV4Y2x1ZGVD
cmVkZW50aWFsSWRzXSAoYXV0byYgY3JlZGVudGlhbCkgeworICAgICAgICAgICAgYXV0byogcmF3
SWQgPSBjcmVkZW50aWFsLT5yYXdJZCgpOworICAgICAgICAgICAgQVNTRVJUKHJhd0lkKTsKKyAg
ICAgICAgICAgIHJldHVybiBleGNsdWRlQ3JlZGVudGlhbElkcy5jb250YWlucyhTdHJpbmcocmVp
bnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocmF3SWQtPmRhdGEoKSksIHJhd0lkLT5ieXRlTGVu
Z3RoKCkpKTsKKyAgICAgICAgfSkpIHsKKyAgICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBO
b3RBbGxvd2VkRXJyb3IsICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5
IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQg
YXV0aGVudGljYXRvci4iX3MgfSwgV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxBRXhjbHVkZUNy
ZWRlbnRpYWxzTWF0Y2hlZCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJyYXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJl
Zik7Ci0KLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gb2J0YWluIHVzZXIgY29uc2VudCBhbmQg
dGhlbiByZXR1cm4gZGlmZmVyZW50IGVycm9yIGFjY29yZGluZyB0byB0aGUgcmVzdWx0LgotICAg
ICAgICBmb3IgKE5TRGljdGlvbmFyeSAqbnNBdHRyaWJ1dGVzIGluIChOU0FycmF5ICopYXR0cmli
dXRlc0FycmF5UmVmKSB7Ci0gICAgICAgICAgICBOU0RhdGEgKm5zQ3JlZGVudGlhbElkID0gbnNB
dHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdOwotICAgICAgICAgICAgaWYg
KGV4Y2x1ZGVDcmVkZW50aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihuc0NyZWRlbnRpYWxJZC5ieXRlcyksIG5zQ3JlZGVudGlhbElkLmxlbmd0aCkp
KSB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwg
IkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVD
cmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaGVk
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAg
ICB9CiAKICAgICAvLyBTdGVwIDYuCkBAIC0yMjgsMzUgKzI3NywyMiBAQCB2b2lkIExvY2FsQXV0
aGVudGljYXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihT
ZWNBY2Nlc3NDbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUUoMTgzNTMz
KTogQSBzaW5nbGUga1NlY0NsYXNzS2V5IGl0ZW0gY291bGRuJ3Qgc3RvcmUgYWxsIG1ldGEgZGF0
YS4gVGhlIGZvbGxvd2luZyBzY2hlbWEgaXMgYSB0ZW50YXRpdmUgc29sdXRpb24KLSAgICAvLyB0
byBhY2NvbW1vZGF0ZSB0aGUgbW9zdCBpbXBvcnRhbnQgbWV0YSBkYXRhLCBpLmUuIFJQIElELCBD
cmVkZW50aWFsIElELCBhbmQgdXNlcmhhbmRsZS4KKyAgICAvLyBIZXJlIGlzIHRoZSBrZXljaGFp
biBzY2hlbWEuCiAgICAgLy8ga1NlY0F0dHJMYWJlbDogUlAgSUQKICAgICAvLyBrU2VjQXR0ckFw
cGxpY2F0aW9uTGFiZWw6IENyZWRlbnRpYWwgSUQgKGF1dG8tZ2VuIGJ5IEtleWNoYWluKQotICAg
IC8vIGtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHVzZXJoYW5kbGUKKyAgICAvLyBrU2VjQXR0ckFw
cGxpY2F0aW9uVGFnOiB7ICJpZCI6IFVzZXJFbnRpdHkuaWQsICJuYW1lIjogVXNlckVudGl0eS5u
YW1lIH0gKENCT1IgZW5jb2RlZCkKICAgICAvLyBOb3RlZCwgdGhlIHZhbGUgb2Yga1NlY0F0dHJB
cHBsaWNhdGlvbkxhYmVsIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHRoZSBLZXljaGFp
biwgd2hpY2ggaXMgYSBTSEEtMSBoYXNoIG9mCi0gICAgLy8gdGhlIHB1YmxpYyBrZXkuIFdlIGJv
cnJvdyBpdCBkaXJlY3RseSBmb3Igbm93IHRvIHdvcmthcm91bmQgdGhlIHN0YXRlZCBsaW1pdGF0
aW9ucy4KKyAgICAvLyB0aGUgcHVibGljIGtleS4KICAgICBjb25zdCBhdXRvJiBzZWNBdHRyTGFi
ZWwgPSBjcmVhdGlvbk9wdGlvbnMucnAuaWQ7Ci0gICAgYXV0byBzZWNBdHRyQXBwbGljYXRpb25U
YWcgPSB0b05TRGF0YShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CiAKLSAgICAvLyBT
dGVwIDcuNS4KLSAgICAvLyBGYWlsdXJlcyBhZnRlciB0aGlzIHBvaW50IGNvdWxkIGJsb2NrIHVz
ZXJzJyBhY2NvdW50cyBmb3JldmVyLiBTaG91bGQgd2UgZm9sbG93IHRoZSBzcGVjPwotICAgIE5T
RGljdGlvbmFyeSogZGVsZXRlUXVlcnkgPSBAewotICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQp
a1NlY0NsYXNzS2V5LAotICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAot
ICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZzogc2VjQXR0ckFwcGxpY2F0aW9uVGFn
LmdldCgpLAotI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQotICAgICAgICAoaWQp
a1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKLSNlbHNlCi0gICAgICAgIChpZClr
U2VjQXR0ck5vTGVnYWN5OiBAWUVTCi0jZW5kaWYKLSAgICB9OwotICAgIE9TU3RhdHVzIHN0YXR1
cyA9IFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkZWxldGVRdWVyeSk7
Ci0gICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kKSB7Ci0gICAg
ICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0
IGRlbGV0ZSBvbGRlciBjcmVkZW50aWFsOiAiLCBzdGF0dXMpIH0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgdXNlckVudGl0eU1hcDsKKyAg
ICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZSh1c2VyRW50aXR5SWRLZXkpXSA9IGNib3I6
OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CisgICAgdXNlckVudGl0
eU1hcFtjYm9yOjpDQk9SVmFsdWUodXNlckVudGl0eU5hbWVLZXkpXSA9IGNib3I6OkNCT1JWYWx1
ZShjcmVhdGlvbk9wdGlvbnMudXNlci5uYW1lKTsKKyAgICBhdXRvIHVzZXJFbnRpdHkgPSBjYm9y
OjpDQk9SV3JpdGVyOjp3cml0ZShjYm9yOjpDQk9SVmFsdWUoV1RGTW92ZSh1c2VyRW50aXR5TWFw
KSkpOworICAgIEFTU0VSVCh1c2VyRW50aXR5KTsKKyAgICBhdXRvIHNlY0F0dHJBcHBsaWNhdGlv
blRhZyA9IHRvTlNEYXRhKCp1c2VyRW50aXR5KTsKIAotICAgIC8vIFN0ZXAgNy4xLTcuNC4KKyAg
ICAvLyBTdGVwIDcuCiAgICAgLy8gVGhlIGFib3ZlLXRvLWNyZWF0ZSBwcml2YXRlIGtleSB3aWxs
IGJlIGluc2VydGVkIGludG8ga2V5Y2hhaW4gd2hpbGUgdXNpbmcgU0VQLgogICAgIGF1dG8gcHJp
dmF0ZUtleSA9IG1fY29ubmVjdGlvbi0+Y3JlYXRlQ3JlZGVudGlhbFByaXZhdGVLZXkoY29udGV4
dCwgYWNjZXNzQ29udHJvbFJlZiwgc2VjQXR0ckxhYmVsLCBzZWNBdHRyQXBwbGljYXRpb25UYWcu
Z2V0KCkpOwogICAgIGlmICghcHJpdmF0ZUtleSkgewpAQCAtMjY0LDU4ICszMDAsNTQgQEAgdm9p
ZCBMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJp
ZmljYXRpb24oU2VjQWNjZXNzQ28KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIFJldGFp
blB0cjxDRkRhdGFSZWY+IHB1YmxpY0tleURhdGFSZWY7CisgICAgeworICAgICAgICBhdXRvIHB1
YmxpY0tleSA9IGFkb3B0Q0YoU2VjS2V5Q29weVB1YmxpY0tleShwcml2YXRlS2V5LmdldCgpKSk7
CisgICAgICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOworICAgICAgICBwdWJsaWNL
ZXlEYXRhUmVmID0gYWRvcHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJs
aWNLZXkuZ2V0KCksICZlcnJvclJlZikpOworICAgICAgICBhdXRvIHJldGFpbkVycm9yID0gYWRv
cHRDRihlcnJvclJlZik7CisgICAgICAgIGlmIChlcnJvclJlZikgeworICAgICAgICAgICAgcmVj
ZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZXhwb3J0
IHRoZSBwdWJsaWMga2V5OiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVk
RGVzY3JpcHRpb24pKSB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlQoKChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpKS5sZW5ndGggPT0gKDEg
KyAyICogRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpKTsgLy8gMDQgfCBYIHwgWQorICAgIH0KKyAg
ICBOU0RhdGEgKm5zUHVibGljS2V5RGF0YSA9IChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdl
dCgpOworCisgICAgLy8gUXVlcnkgY3JlZGVudGlhbElkIGluIHRoZSBrZXljaGFpbiBjb3VsZCBi
ZSByYWN5IGFzIGl0IGlzIHRoZSBvbmx5IHVuaXF1ZSBpZGVudGlmaWVyCisgICAgLy8gb2YgdGhl
IGtleSBpdGVtLiBJbnN0ZWFkIHdlIGNhbGN1bGF0ZSB0aGF0LCBhbmQgZXhhbWluZSBpdHMgZXF1
YWl0eSBpbiBERUJVRyBidWlsZC4KICAgICBWZWN0b3I8dWludDhfdD4gY3JlZGVudGlhbElkOwog
ICAgIHsKKyAgICAgICAgYXV0byBkaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRlKFBB
TDo6Q3J5cHRvRGlnZXN0OjpBbGdvcml0aG06OlNIQV8xKTsKKyAgICAgICAgZGlnZXN0LT5hZGRC
eXRlcyhuc1B1YmxpY0tleURhdGEuYnl0ZXMsIG5zUHVibGljS2V5RGF0YS5sZW5ndGgpOworICAg
ICAgICBjcmVkZW50aWFsSWQgPSBkaWdlc3QtPmNvbXB1dGVIYXNoKCk7CisKKyNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIE5TRGljdGlvbmFyeSAqY3JlZGVudGlhbElkUXVlcnkgPSBAewogICAgICAg
ICAgICAgKGlkKWtTZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKICAgICAgICAgICAgIChpZClr
U2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAgICAgICAg
ICAoaWQpa1NlY0F0dHJMYWJlbDogc2VjQXR0ckxhYmVsLAotICAgICAgICAgICAgKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25UYWc6IHNlY0F0dHJBcHBsaWNhdGlvblRhZy5nZXQoKSwKLSAgICAgICAg
ICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRlczogQFlFUywKKyAgICAgICAgICAgIChpZClrU2Vj
QXR0ckFwcGxpY2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRpYWxJZCkuZ2V0KCksCiAjaWYg
SEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCiAgICAgICAgICAgICAoaWQpa1NlY1VzZURh
dGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCiAgICAgICAgICAgICAoaWQpa1NlY0F0
dHJOb0xlZ2FjeTogQFlFUwogI2VuZGlmCiAgICAgICAgIH07Ci0gICAgICAgIENGVHlwZVJlZiBh
dHRyaWJ1dGVzUmVmID0gbnVsbHB0cjsKLSAgICAgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRl
bUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNyZWRlbnRpYWxJZFF1ZXJ5
LCAmYXR0cmlidXRlc1JlZik7Ci0gICAgICAgIGlmIChzdGF0dXMpIHsKLSAgICAgICAgICAgIHJl
Y2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGdldCBD
cmVkZW50aWFsIElEOiAiLCBzdGF0dXMpIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgIGF1dG8gcmV0YWluQXR0cmlidXRlcyA9IGFkb3B0Q0YoYXR0cmlidXRlc1Jl
Zik7Ci0KLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgPSAoTlNEaWN0aW9uYXJ5
ICopYXR0cmlidXRlc1JlZjsKLSAgICAgICAgY3JlZGVudGlhbElkID0gdG9WZWN0b3IobnNBdHRy
aWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKTsKKyAgICAgICAgT1NTdGF0dXMg
c3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWNy
ZWRlbnRpYWxJZFF1ZXJ5LCBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKCFzdGF0dXMpOworI2Vu
ZGlmIC8vIE5ERUJVRwogICAgIH0KIAotICAgIC8vIFN0ZXAgMTAuCi0gICAgLy8gRklYTUUoMTgz
NTMzKTogc3RvcmUgdGhlIGNvdW50ZXIuCi0gICAgdWludDMyX3QgY291bnRlciA9IDA7Ci0KICAg
ICAvLyBTdGVwIDExLiBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI2F0dGVzdGVkLWNy
ZWRlbnRpYWwtZGF0YQogICAgIC8vIGNyZWRlbnRpYWxQdWJsaWNLZXkKICAgICBWZWN0b3I8dWlu
dDhfdD4gY29zZVB1YmxpY0tleTsKICAgICB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+
IHB1YmxpY0tleURhdGFSZWY7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gcHVibGljS2V5
ID0gYWRvcHRDRihTZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkuZ2V0KCkpKTsKLSAgICAg
ICAgICAgIENGRXJyb3JSZWYgZXJyb3JSZWYgPSBudWxscHRyOwotICAgICAgICAgICAgcHVibGlj
S2V5RGF0YVJlZiA9IGFkb3B0Q0YoU2VjS2V5Q29weUV4dGVybmFsUmVwcmVzZW50YXRpb24ocHVi
bGljS2V5LmdldCgpLCAmZXJyb3JSZWYpKTsKLSAgICAgICAgICAgIGF1dG8gcmV0YWluRXJyb3Ig
PSBhZG9wdENGKGVycm9yUmVmKTsKLSAgICAgICAgICAgIGlmIChlcnJvclJlZikgewotICAgICAg
ICAgICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNv
dWxkbid0IGV4cG9ydCB0aGUgcHVibGljIGtleTogIiwgU3RyaW5nKCgoTlNFcnJvciopZXJyb3JS
ZWYpLmxvY2FsaXplZERlc2NyaXB0aW9uKSkgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNTRVJUKCgoTlNEYXRhICopcHVibGljS2V5RGF0
YVJlZi5nZXQoKSkubGVuZ3RoID09ICgxICsgMiAqIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKSk7
IC8vIDA0IHwgWCB8IFkKLSAgICAgICAgfQotCiAgICAgICAgIC8vIENPU0UgRW5jb2RpbmcKICAg
ICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHgoRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpOwotICAgICAg
ICBbKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkgZ2V0Qnl0ZXM6IHguZGF0YSgpIHJh
bmdlOk5TTWFrZVJhbmdlKDEsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CisgICAgICAgIFtu
c1B1YmxpY0tleURhdGEgZ2V0Qnl0ZXM6IHguZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEsIEVT
MjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB5KEVTMjU2
RmllbGRFbGVtZW50TGVuZ3RoKTsKLSAgICAgICAgWyhOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVm
LmdldCgpIGdldEJ5dGVzOiB5LmRhdGEoKSByYW5nZTpOU01ha2VSYW5nZSgxICsgRVMyNTZGaWVs
ZEVsZW1lbnRMZW5ndGgsIEVTMjU2RmllbGRFbGVtZW50TGVuZ3RoKV07CisgICAgICAgIFtuc1B1
YmxpY0tleURhdGEgZ2V0Qnl0ZXM6IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEgKyBFUzI1
NkZpZWxkRWxlbWVudExlbmd0aCwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKICAgICAgICAg
Y29zZVB1YmxpY0tleSA9IGVuY29kZUVTMjU2UHVibGljS2V5QXNDQk9SKFdURk1vdmUoeCksIFdU
Rk1vdmUoeSkpOwogICAgIH0KICAgICAvLyBGSVhNRShyZGFyOi8vcHJvYmxlbS8zODMyMDUxMik6
IERlZmluZSBBcHBsZSBBQUdVSUQuCkBAIC0zMjYsNiArMzU4LDggQEAgdm9pZCBMb2NhbEF1dGhl
bnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVzZXJWZXJpZmljYXRpb24oU2Vj
QWNjZXNzQ28KIAogICAgIC8vIFNraXAgQXBwbGUgQXR0ZXN0YXRpb24gZm9yIG5vbmUgYXR0ZXN0
YXRpb24sIGFuZCBub24gd2hpdGVsaXN0ZWQgUlAgSUQgZm9yIG5vdy4KICAgICBpZiAoY3JlYXRp
b25PcHRpb25zLmF0dGVzdGF0aW9uID09IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6
Ok5vbmUgfHwgIXdoaXRlbGlzdGVkUnBJZCgpLmNvbnRhaW5zKGNyZWF0aW9uT3B0aW9ucy5ycC5p
ZCkpIHsKKyAgICAgICAgZGVsZXRlRHVwbGljYXRlQ3JlZGVudGlhbCgpOworCiAgICAgICAgIGF1
dG8gYXR0ZXN0YXRpb25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0
aERhdGEpLCAiIiwgeyB9LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lKTsK
ICAgICAgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9uc2U6
OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTM3MCw2ICs0MDQsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGludWVN
YWtlQ3JlZGVudGlhbEFmdGVyQXR0ZXN0ZWQoVmVjdG9yPHVpbnQ4X3Q+JiYgYwogICAgIH0KICAg
ICBhdXRvIGF0dGVzdGF0aW9uT2JqZWN0ID0gYnVpbGRBdHRlc3RhdGlvbk9iamVjdChXVEZNb3Zl
KGF1dGhEYXRhKSwgImFwcGxlIiwgV1RGTW92ZShhdHRlc3RhdGlvblN0YXRlbWVudE1hcCksIGNy
ZWF0aW9uT3B0aW9ucy5hdHRlc3RhdGlvbik7CiAKKyAgICBkZWxldGVEdXBsaWNhdGVDcmVkZW50
aWFsKCk7CiAgICAgcmVjZWl2ZVJlc3BvbmQoQXV0aGVudGljYXRvckF0dGVzdGF0aW9uUmVzcG9u
c2U6OmNyZWF0ZShjcmVkZW50aWFsSWQsIGF0dGVzdGF0aW9uT2JqZWN0KSk7CiB9CiAKQEAgLTM4
Myw2ICs0MTgsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Z2V0QXNzZXJ0aW9uKCkKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGltcGxlbWVudHMgaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1
dGhuLyNvcC1nZXQtYXNzZXJ0aW9uIGFzIG9mIDUgRGVjZW1iZXIgMjAxNy4KICAgICAvLyBTa2lw
IFN0ZXAgMiBhcyByZXF1aXJlVXNlclZlcmlmaWNhdGlvbiBpcyBlbmZvcmNlZC4KICAgICAvLyBT
a2lwIFN0ZXAgOCBhcyBleHRlbnNpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHlldC4KKyAgICAvLyBT
a2lwIFN0ZXAgOSBhcyBjb3VudGVyIGlzIGNvbnN0YW50bHkgMC4KICAgICAvLyBTdGVwIDEyIGlz
IGltcGxpY2l0bHkgY2FwdHVyZWQgYnkgYWxsIFVua25vd25FcnJvciBleGNlcHRpb24gY2FsbGJh
Y2tzLgogICAgIC8vIFN0ZXAgMy01LiBVbmxpa2UgdGhlIHNwZWMsIGlmIGFuIGFsbG93IGxpc3Qg
aXMgcHJvdmlkZWQgYW5kIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBiZXR3ZWVuIGV4aXN0aW5n
IG9uZXMgYW5kIHRoZSBhbGxvdyBsaXN0LCB3ZSBhbHdheXMgcmV0dXJuIE5vdEFsbG93ZWRFcnJv
ci4KICAgICBhdXRvIGFsbG93Q3JlZGVudGlhbElkcyA9IHByb2R1Y2VIYXNoU2V0KHJlcXVlc3RP
cHRpb25zLmFsbG93Q3JlZGVudGlhbHMpOwpAQCAtMzkyLDUxICs0MjgsMzIgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6OmdldEFzc2VydGlvbigpCiAgICAgfQogCiAgICAgLy8gU2VhcmNoIEtl
eWNoYWluIGZvciB0aGUgUlAgSUQuCi0gICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9IEB7Ci0gICAg
ICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCi0gICAgICAgIChpZClrU2VjQXR0
cktleUNsYXNzOiAoaWQpa1NlY0F0dHJLZXlDbGFzc1ByaXZhdGUsCi0gICAgICAgIChpZClrU2Vj
QXR0ckxhYmVsOiByZXF1ZXN0T3B0aW9ucy5ycElkLAotICAgICAgICAoaWQpa1NlY1JldHVybkF0
dHJpYnV0ZXM6IEBZRVMsCi0gICAgICAgIChpZClrU2VjTWF0Y2hMaW1pdDogKGlkKWtTZWNNYXRj
aExpbWl0QWxsLAotI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQotICAgICAgICAo
aWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKLSNlbHNlCi0gICAgICAgIChp
ZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCi0jZW5kaWYKLSAgICB9OwotICAgIENGVHlwZVJlZiBh
dHRyaWJ1dGVzQXJyYXlSZWYgPSBudWxscHRyOwotICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0
ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0
ZXNBcnJheVJlZik7Ci0gICAgaWYgKHN0YXR1cyAmJiBzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZv
dW5kKSB7Ci0gICAgICAgIHJlY2VpdmVFeGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJp
bmcoIkNvdWxkbid0IHF1ZXJ5IEtleWNoYWluOiAiLCBzdGF0dXMpIH0pOworICAgIGF1dG8gZXhp
c3RpbmdDcmVkZW50aWFscyA9IGdldEV4aXN0aW5nQ3JlZGVudGlhbHMocmVxdWVzdE9wdGlvbnMu
cnBJZCk7CisgICAgaWYgKCFleGlzdGluZ0NyZWRlbnRpYWxzKSB7CisgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkNvdWxkbid0IGdldCBleGlzdGlu
ZyBjcmVkZW50aWFscyIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gcmV0
YWluQXR0cmlidXRlc0FycmF5ID0gYWRvcHRDRihhdHRyaWJ1dGVzQXJyYXlSZWYpOworICAgIG1f
ZXhpc3RpbmdDcmVkZW50aWFscyA9IFdURk1vdmUoKmV4aXN0aW5nQ3JlZGVudGlhbHMpOwogCi0g
ICAgTlNBcnJheSAqaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSBuaWw7Ci0gICAg
aWYgKHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuaXNFbXB0eSgpKQotICAgICAgICBp
bnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcyA9IChOU0FycmF5ICopYXR0cmlidXRlc0Fy
cmF5UmVmOwotICAgIGVsc2UgewotICAgICAgICBOU011dGFibGVBcnJheSAqcmVzdWx0ID0gW05T
TXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmFsbG93Q3JlZGVudGlhbElkcy5zaXplKCld
OwotICAgICAgICBmb3IgKE5TRGljdGlvbmFyeSAqbnNBdHRyaWJ1dGVzIGluIChOU0FycmF5ICop
YXR0cmlidXRlc0FycmF5UmVmKSB7Ci0gICAgICAgICAgICBOU0RhdGEgKm5zQ3JlZGVudGlhbElk
ID0gbnNBdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdOwotICAgICAgICAg
ICAgaWYgKGFsbG93Q3JlZGVudGlhbElkcy5jb250YWlucyhTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBjaGFyKj4obnNDcmVkZW50aWFsSWQuYnl0ZXMpLCBuc0NyZWRlbnRpYWxJZC5sZW5n
dGgpKSkKLSAgICAgICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpuc0F0dHJpYnV0ZXNdOwor
ICAgIGZvciAoYXV0byYgY3JlZGVudGlhbCA6IG1fZXhpc3RpbmdDcmVkZW50aWFscykgeworICAg
ICAgICBpZiAoYWxsb3dDcmVkZW50aWFsSWRzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgYXV0
byBhZGRSZXN1bHQgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy5hZGQoY3JlZGVudGlhbC5jb3B5UmVm
KCkpOworICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgYXV0
byogcmF3SWQgPSBjcmVkZW50aWFsLT5yYXdJZCgpOworICAgICAgICBpZiAoYWxsb3dDcmVkZW50
aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihyYXdJ
ZC0+ZGF0YSgpKSwgcmF3SWQtPmJ5dGVMZW5ndGgoKSkpKSB7CisgICAgICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChjcmVkZW50aWFsLmNvcHlSZWYoKSk7
CisgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50
cnkpOwogICAgICAgICB9Ci0gICAgICAgIGludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1dGVz
ID0gcmVzdWx0OwogICAgIH0KLSAgICBpZiAoIWludGVyc2VjdGVkQ3JlZGVudGlhbHNBdHRyaWJ1
dGVzLmNvdW50KSB7CisgICAgaWYgKG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmlzRW1wdHkoKSkgewog
ICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiTm8gbWF0Y2hlZCBj
cmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0
b3IuIl9zIH0sIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzOjpMQU5vQ3JlZGVudGlhbCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBTdGVwIDYtNy4gVXNlciBjb25zZW50IGlzIGlt
cGxpY2l0bHkgYWNxdWlyZWQgYnkgc2VsZWN0aW5nIHJlc3BvbnNlcy4KLSAgICBmb3IgKE5TRGlj
dGlvbmFyeSAqYXR0cmlidXRlIDogaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMpIHsK
LSAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX2Fzc2VydGlvblJlc3BvbnNlcy5hZGQoQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUoCi0gICAgICAgICAgICB0b0FycmF5QnVm
ZmVyKGF0dHJpYnV0ZVsoaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksCi0gICAgICAgICAg
ICB0b0FycmF5QnVmZmVyKGF0dHJpYnV0ZVsoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ10pLAot
ICAgICAgICAgICAgKF9fYnJpZGdlIFNlY0FjY2Vzc0NvbnRyb2xSZWYpYXR0cmlidXRlWyhpZClr
U2VjQXR0ckFjY2Vzc0NvbnRyb2xdKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0
LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQogICAgIG1fY29ubmVjdGlvbi0+ZmlsdGVy
UmVzcG9uc2VzKG1fYXNzZXJ0aW9uUmVzcG9uc2VzKTsKIAogICAgIGlmIChhdXRvKiBvYnNlcnZl
ciA9IHRoaXMtPm9ic2VydmVyKCkpIHsKQEAgLTQ4NCwxMCArNTAxLDcgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmNvbnRpbnVlR2V0QXNzZXJ0aW9uQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFJl
ZjxXZWJDb3JlOjoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFN0ZXAgOS0xMC4K
LSAgICAvLyBGSVhNRSgxODM1MzMpOiBEdWUgdG8gdGhlIHN0YXRlZCBLZXljaGFpbiBsaW1pdGF0
aW9ucywgd2UgY2FuJ3Qgc2F2ZSB0aGUgY291bnRlciB2YWx1ZS4KLSAgICAvLyBUaGVyZWZvcmUs
IGl0IGlzIGFsd2F5cyB6ZXJvLgotICAgIHVpbnQzMl90IGNvdW50ZXIgPSAwOworICAgIC8vIFN0
ZXAgMTAuCiAgICAgYXV0byBhdXRoRGF0YSA9IGJ1aWxkQXV0aERhdGEoV1RGOjpnZXQ8UHVibGlj
S2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpLnJwSWQs
IGdldEFzc2VydGlvbkZsYWdzLCBjb3VudGVyLCB7IH0pOwogCiAgICAgLy8gU3RlcCAxMS4KQEAg
LTU0MSw2ICs1NTUsMzMgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0b3I6OnJlY2VpdmVFeGNlcHRp
b24oRXhjZXB0aW9uRGF0YSYmIGV4Y2VwdGlvbiwgV2ViQXV0aGVudGkKICAgICByZXR1cm47CiB9
CiAKK3ZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpkZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCkg
Y29uc3QKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgTG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw7
CisKKyAgICBhdXRvJiBjcmVhdGlvbk9wdGlvbnMgPSBXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zPihyZXF1ZXN0RGF0YSgpLm9wdGlvbnMpOworICAgIG1fZXhpc3Rp
bmdDcmVkZW50aWFscy5maW5kTWF0Y2hpbmcoW2NyZWF0aW9uT3B0aW9uc10gKGF1dG8mIGNyZWRl
bnRpYWwpIHsKKyAgICAgICAgYXV0byogdXNlckhhbmRsZSA9IGNyZWRlbnRpYWwtPnVzZXJIYW5k
bGUoKTsKKyAgICAgICAgQVNTRVJUKHVzZXJIYW5kbGUpOworICAgICAgICBpZiAobWVtY21wKHVz
ZXJIYW5kbGUtPmRhdGEoKSwgY3JlYXRpb25PcHRpb25zLnVzZXIuaWRWZWN0b3IuZGF0YSgpLCB1
c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIE5TRGljdGlvbmFyeSogZGVsZXRlUXVlcnkgPSBAeworICAgICAgICAgICAgKGlkKWtT
ZWNDbGFzczogKGlkKWtTZWNDbGFzc0tleSwKKyAgICAgICAgICAgIChpZClrU2VjQXR0ckFwcGxp
Y2F0aW9uTGFiZWw6IHRvTlNEYXRhKGNyZWRlbnRpYWwtPnJhd0lkKCkpLmdldCgpLAorI2lmIEhB
VkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQorICAgICAgICAgICAgKGlkKWtTZWNVc2VEYXRh
UHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQorICAgICAgICAgICAgKGlkKWtTZWNBdHRy
Tm9MZWdhY3k6IEBZRVMKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBPU1N0YXR1cyBzdGF0
dXMgPSBTZWNJdGVtRGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkp
OworICAgICAgICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpCisg
ICAgICAgICAgICBMT0dfRVJST1IobWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9sZGVyIGNy
ZWRlbnRpYWw6ICJfcywgc3RhdHVzKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVVRITikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQpp
bmRleCBiMWM5ODc0NzlmNGQ3Y2MxYTc0ODc1OTEzMWM4NjI0M2ViNjc2ZTY3Li5iNWNhZDA3YzE2
NzVjMmNjZGI4MTJmYzFjNzUxNzM2NmI5ZmE4MTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9jay9Nb2Nr
TG9jYWxDb25uZWN0aW9uLm1tCkBAIC0xMTUsMTYgKzExNSwxNiBAQCB2b2lkIE1vY2tMb2NhbENv
bm5lY3Rpb246OmdldEF0dGVzdGF0aW9uKFNlY0tleVJlZiwgTlNEYXRhICosIE5TRGF0YSAqLCBB
dHRlc3RhdAogCiB2b2lkIE1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyhIYXNo
U2V0PFJlZjxXZWJDb3JlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiYgcmVzcG9u
c2VzKSBjb25zdAogewotICAgIGNvbnN0IGF1dG8mIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQg
PSBtX2NvbmZpZ3VyYXRpb24ubG9jYWwtPnByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Ci0gICAg
aWYgKHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQuaXNFbXB0eSgpKQorICAgIGNvbnN0IGF1dG8m
IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCA9IG1fY29uZmlndXJhdGlvbi5sb2NhbC0+cHJl
ZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0OworICAgIGlmIChwcmVmZXJyZWRDcmVkZW50aWFsSWRC
YXNlNjQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGl0ciA9IHJlc3Bv
bnNlcy5iZWdpbigpOwogICAgIGZvciAoOyBpdHIgIT0gcmVzcG9uc2VzLmVuZCgpOyArK2l0cikg
ewotICAgICAgICBhdXRvKiB1c2VySGFuZGxlID0gaXRyLT5nZXQoKS51c2VySGFuZGxlKCk7Ci0g
ICAgICAgIEFTU0VSVCh1c2VySGFuZGxlKTsKLSAgICAgICAgYXV0byB1c2VyaGFuZGxlQmFzZTY0
ID0gYmFzZTY0RW5jb2RlKHVzZXJIYW5kbGUtPmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0
aCgpKTsKLSAgICAgICAgaWYgKHVzZXJoYW5kbGVCYXNlNjQgPT0gcHJlZmVycmVkVXNlcmhhbmRs
ZUJhc2U2NCkKKyAgICAgICAgYXV0byogcmF3SWQgPSBpdHItPmdldCgpLnJhd0lkKCk7CisgICAg
ICAgIEFTU0VSVChyYXdJZCk7CisgICAgICAgIGF1dG8gcmF3SWRCYXNlNjQgPSBiYXNlNjRFbmNv
ZGUocmF3SWQtPmRhdGEoKSwgcmF3SWQtPmJ5dGVMZW5ndGgoKSk7CisgICAgICAgIGlmIChyYXdJ
ZEJhc2U2NCA9PSBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQpCiAgICAgICAgICAgICBicmVh
azsKICAgICB9CiAgICAgYXV0byByZXNwb25zZSA9IHJlc3BvbnNlcy50YWtlKGl0cik7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjE3NmFhNGYz
Y2JjOTM4YWFkZjAyMDYzNzZkZDM2MzZhODhmNmI0OC4uZTFlNzdlYTdhMTc5MTJlOGY0MzMxNzE4
NDQ0NzI5ZGQ3ZGJlNWEwZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAzLTA5ICBKaWV3ZW4gVGFuICA8amll
d2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBGb3JtYWxpemUgdGhlIEtl
eWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0NzkyNj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllcyB0aGUgdGVz
dCBpbmZyYSB0byB1c2UgQ3JlZGVudGlhbCBJRCBhcyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgZm9y
IGEgY3JlZGVudGlhbCBpbnN0ZWFkIG9mCisgICAgICAgIHRoZSBvcmlnaW5hbCBjb21iaW5hdGlv
biBvZiBSUCBJRCBhbmQgdXNlciBoYW5kbGUuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmNsZWFuVXBLZXljaGFpbik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
OmtleUV4aXN0c0luS2V5Y2hhaW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmNsZWFuVXBLZXljaGFpbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjprZXlFeGlz
dHNJbktleWNoYWluKToKKwogMjAyMC0wMy0wNiAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNh
ZGFAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBfV0tSZXNvdXJjZUxvYWRJbmZvLnJlc291cmNl
VHlwZSBTUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCA3NDljOTdm
Zjk2YzMyN2FmZTY4YTcwNWI3ZjQwYjRmODcwMWExMjc4Li5hYzExYTU4NjNjYjFjNWEyMWFkN2Q5
ZjRjYWU2MzRhYWYyMjIxMDJkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1t
CkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyBTdHJpbmcgdGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2
NCA9CiAgICAgIkJEai96eFNrektnYUJ1UzNjZFdERjU1OG9mOEFhSXBnRnBzakYvUW0xNzQ5VkJK
UGdxVUl3ZmhXSEo5MW5iN1UiCiAgICAgIlBINzZjMCtXRk96WktzbFB5eUZzZTRnb0dJVzJSN2s5
VkhMUEVabDVuZm5CZ0VWRmg1emV2Ky94cEhRSXZ1cTYiCiAgICAgIlJRPT0iOwotc3RhdGljIFN0
cmluZyB0ZXN0VXNlcmhhbmRsZUJhc2U2NCA9ICJBQUVDQXdRRkJnY0lDUT09IjsKK3N0YXRpYyBT
dHJpbmcgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQgPSAib21KcFpFb0FBUUlEQkFVR0J3Z0pa
RzVoYldWd1FVRkZRMEYzVVVaQ1oyTkpRMUU5UFE9PSI7CiAKIEBpbnRlcmZhY2UgVGVzdFdlYkF1
dGhlbnRpY2F0aW9uUGFuZWxEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tXZWJBdXRoZW50aWNhdGlv
blBhbmVsRGVsZWdhdGU+CiBAZW5kCkBAIC0xMjE0LDcgKzEyMTQsNyBAQCBURVNUKFdlYkF1dGhl
bnRpY2F0aW9uUGFuZWwsIExBRHVwbGljYXRlQ3JlZGVudGlhbCkKICAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVsVUlEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0g
ICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0
LCAiIiwgdGVzdFVzZXJoYW5kbGVCYXNlNjQpKTsKKyAgICBBU1NFUlRfVFJVRShhZGRLZXlUb0tl
eWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICIiLCB0ZXN0VXNlckVudGl0eUJ1bmRs
ZUJhc2U2NCkpOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6dGVzdFVSTC5nZXQoKV1dOwogICAgIFV0aWw6OnJ1bigmd2ViQXV0aGVudGljYXRp
b25QYW5lbFVwZGF0ZUxBRXhjbHVkZUNyZWRlbnRpYWxzTWF0Y2hlZCk7CiAgICAgY2xlYW5VcEtl
eWNoYWluKCIiKTsKQEAgLTEzMDUsNyArMTMwNSw3IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25Q
YW5lbCwgTEFHZXRBc3NlcnRpb24pCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0
V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIEFTU0VSVF9UUlVFKGFk
ZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyaGFu
ZGxlQmFzZTY0KSk7CisgICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQ
cml2YXRlS2V5QmFzZTY0LCAiIiwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpKTsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwu
Z2V0KCldXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAIlN1Y2NlZWRlZCEiXTsKICAg
ICBjaGVja1BhbmVsKFtkZWxlZ2F0ZSBwYW5lbF0sIEAiIiwgQFthZG9wdE5TKFtbTlNOdW1iZXIg
YWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0VVNCXSkuZ2V0
KCksIGFkb3B0TlMoW1tOU051bWJlciBhbGxvY10gaW5pdFdpdGhJbnQ6X1dLV2ViQXV0aGVudGlj
YXRpb25UcmFuc3BvcnRJbnRlcm5hbF0pLmdldCgpXSwgX1dLV2ViQXV0aGVudGljYXRpb25UeXBl
R2V0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDQ5MDFlMDg2ZWQxOWY1MjBkYTAw
OGYxNDBlMmVkNjljNmIzYzYxZDAuLjEzMDI3MTBmNjRlNWI3OTM4NWQwM2E5NjIyYjZlNmRiZmZk
ZTk2ZDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNDA0LDggKzQwNCw4IEBAIGlu
dGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIC8vIFdlYkF1dGhuCiAgICAgdm9pZCBhZGRUZXN0
S2V5VG9LZXljaGFpbihET01TdHJpbmcgcHJpdmF0ZUtleUJhc2U2NCwgRE9NU3RyaW5nIGF0dHJM
YWJlbCwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKLSAgICB2b2lkIGNsZWFuVXBL
ZXljaGFpbihET01TdHJpbmcgYXR0ckxhYmVsLCBvcHRpb25hbCBET01TdHJpbmcgYXBwbGljYXRp
b25UYWdCYXNlNjQpOwotICAgIGJvb2xlYW4ga2V5RXhpc3RzSW5LZXljaGFpbihET01TdHJpbmcg
YXR0ckxhYmVsLCBET01TdHJpbmcgYXBwbGljYXRpb25UYWdCYXNlNjQpOworICAgIHZvaWQgY2xl
YW5VcEtleWNoYWluKERPTVN0cmluZyBhdHRyTGFiZWwsIG9wdGlvbmFsIERPTVN0cmluZyBhcHBs
aWNhdGlvbkxhYmVsQmFzZTY0KTsKKyAgICBib29sZWFuIGtleUV4aXN0c0luS2V5Y2hhaW4oRE9N
U3RyaW5nIGF0dHJMYWJlbCwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpOwogCiAg
ICAgLy8gQWQgQ2xpY2sgQXR0cmlidXRpb24KICAgICB2b2lkIGNsZWFyQWRDbGlja0F0dHJpYnV0
aW9uKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcAppbmRleCA4MmRkNmFhZTI2MWY4ODhhMWUzMmJlYjY2OWM2MmQwN2ZmNjBj
ZWU5Li4yZTk4Y2Y1ZDU2YWUxNmExY2YwNjI2MWQ0OTIwZDhjZmY2ZmNkMzliIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAK
QEAgLTI3ODgsNyArMjc4OCw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YWRkVGVzdEtleVRvS2V5Y2hh
aW4oSlNTdHJpbmdSZWYgcHJpdmF0ZUtleUJhc2U2NCwgSlNTdHJpbmdSZWYKICAgICBXS0J1bmRs
ZVBvc3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRs
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQog
Ci12b2lkIFRlc3RSdW5uZXI6OmNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWws
IEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KQordm9pZCBUZXN0UnVubmVyOjpjbGVh
blVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlv
bkxhYmVsQmFzZTY0KQogewogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4+IGtl
eXM7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLVHlwZVJlZj4+IHZhbHVlczsKQEAgLTI3OTYs
OSArMjc5Niw5IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2xlYW5VcEtleWNoYWluKEpTU3RyaW5nUmVm
IGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25UCiAgICAga2V5cy5hcHBlbmQoYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXR0ckxhYmVsIikpKTsKICAgICB2
YWx1ZXMuYXBwZW5kKHRvV0soYXR0ckxhYmVsKSk7CiAKLSAgICBpZiAoYXBwbGljYXRpb25UYWdC
YXNlNjQpIHsKLSAgICAgICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiQXBwbGljYXRpb25UYWciKSkpOwotICAgICAgICB2YWx1ZXMuYXBwZW5kKHRv
V0soYXBwbGljYXRpb25UYWdCYXNlNjQpKTsKKyAgICBpZiAoYXBwbGljYXRpb25MYWJlbEJhc2U2
NCkgeworICAgICAgICBrZXlzLmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJBcHBsaWNhdGlvbkxhYmVsIikpKTsKKyAgICAgICAgdmFsdWVzLmFwcGVuZCh0b1dL
KGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpKTsKICAgICB9CiAKICAgICBWZWN0b3I8V0tTdHJpbmdS
ZWY+IHJhd0tleXM7CkBAIC0yODE3LDcgKzI4MTcsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OmNsZWFu
VXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9u
VAogICAgIFdLQnVuZGxlUG9zdFN5bmNocm9ub3VzTWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSwg
bnVsbHB0cik7CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6a2V5RXhpc3RzSW5LZXljaGFpbihKU1N0
cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KQorYm9v
bCBUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNoYWluKEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwg
SlNTdHJpbmdSZWYgYXBwbGljYXRpb25MYWJlbEJhc2U2NCkKIHsKICAgICBWZWN0b3I8V0tSZXRh
aW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwogICAgIFZlY3RvcjxXS1JldGFpblB0cjxXS1R5cGVS
ZWY+PiB2YWx1ZXM7CkBAIC0yODI1LDggKzI4MjUsOCBAQCBib29sIFRlc3RSdW5uZXI6OmtleUV4
aXN0c0luS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNh
dAogICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkF0dHJMYWJlbCIpKSk7CiAgICAgdmFsdWVzLmFwcGVuZCh0b1dLKGF0dHJMYWJlbCkpOwogCi0g
ICAga2V5cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXBw
bGljYXRpb25UYWciKSkpOwotICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhcHBsaWNhdGlvblRhZ0Jh
c2U2NCkpOworICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkFwcGxpY2F0aW9uTGFiZWwiKSkpOworICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhcHBs
aWNhdGlvbkxhYmVsQmFzZTY0KSk7CiAKICAgICBWZWN0b3I8V0tTdHJpbmdSZWY+IHJhd0tleXM7
CiAgICAgVmVjdG9yPFdLVHlwZVJlZj4gcmF3VmFsdWVzOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCAwYjEyNDgxZDdkMTky
YmQ2YjJlNDYwNDg4NWE1YWIzNDRmYzViYmJkLi5kYTBhZDFmYmE5YjkyNDg3MTNkMDRmMWFiYTE0
ZTFmNjYwOGI4M2E3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNTEyLDggKzUxMiw4IEBAIHB1YmxpYzoKIAogICAgIC8v
IEZJWE1FKDE4OTg3NikKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKEpTU3RyaW5nUmVm
IHByaXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBw
bGljYXRpb25UYWdCYXNlNjQpOwotICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKEpTU3RyaW5nUmVm
IGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwotICAgIGJvb2wg
a2V5RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFw
cGxpY2F0aW9uVGFnQmFzZTY0KTsKKyAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1Jl
ZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpOworICAgIGJv
b2wga2V5RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVm
IGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpOwogCiAgICAgdW5zaWduZWQgbG9uZyBzZXJ2ZXJUcnVz
dEV2YWx1YXRpb25DYWxsYmFja0NhbGxzQ291bnQoKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCmluZGV4IGYzYWE4OGFjNjI5MTg5ZWMxMzdkMmQ5Mjk0YmZlMjk0Y2I1
ODQ0ZmMuLjU3M2I3MmNmYmNmYmVjZGMwMzAwOGNkMjQzZTE5MDJjMDhhNDA4MTAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTMxMiw4ICszMTIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZyhkb3Vi
bGUgc2Vjb25kcyk7CiAKICAgICB2b2lkIGFkZFRlc3RLZXlUb0tleWNoYWluKGNvbnN0IFN0cmlu
ZyYgcHJpdmF0ZUtleUJhc2U2NCwgY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmlu
ZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOwotICAgIHZvaWQgY2xlYW5VcEtleWNoYWluKGNvbnN0
IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsK
LSAgICBib29sIGtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNv
bnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpOworICAgIHZvaWQgY2xlYW5VcEtleWNo
YWluKGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTGFi
ZWxCYXNlNjQpOworICAgIGJvb2wga2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0
dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIE5TU3RyaW5nICpvdmVycmlkZGVuQ2FsZW5kYXJJZGVudGlmaWVy
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4
IDQxNmY2ZWYxYTcxM2VlOGI0ZmVhZTkwZTlmOWZmMzgwZjBkOTllNDQuLmY4Y2NlMjdmYzQ2MTdl
YTc2YzZiNTM3NzU0Y2M0NjJjZDllMGVjMTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwCkBAIC0xNzIzLDEwICsxNzIzLDEwIEBAIFdLUmV0YWluUHRyPFdLVHlw
ZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhdHRyTGFiZWxLZXkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdHRyTGFiZWwiKSk7CiAgICAg
ICAgIFdLU3RyaW5nUmVmIGF0dHJMYWJlbFdLID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdL
RGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkodGVzdERpY3Rpb25hcnksIGF0dHJMYWJlbEtleS5nZXQo
KSkpOwogCi0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBhcHBsaWNhdGlvblRhZ0tl
eSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxpY2F0aW9uVGFn
IikpOwotICAgICAgICBXS1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ1dLID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkodGVzdERpY3Rpb25hcnksIGFw
cGxpY2F0aW9uVGFnS2V5LmdldCgpKSk7CisgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
PiBhcHBsaWNhdGlvbkxhYmVsS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZygiQXBwbGljYXRpb25MYWJlbCIpKTsKKyAgICAgICAgV0tTdHJpbmdSZWYgYXBwbGljYXRp
b25MYWJlbFdLID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkodGVzdERpY3Rpb25hcnksIGFwcGxpY2F0aW9uTGFiZWxLZXkuZ2V0KCkpKTsKIAotICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY2xlYW5VcEtleWNoYWluKHRvV1RGU3Ry
aW5nKGF0dHJMYWJlbFdLKSwgYXBwbGljYXRpb25UYWdXSyA/IHRvV1RGU3RyaW5nKGFwcGxpY2F0
aW9uVGFnV0spIDogU3RyaW5nKCkpOworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuY2xlYW5VcEtleWNoYWluKHRvV1RGU3RyaW5nKGF0dHJMYWJlbFdLKSwgYXBwbGljYXRpb25M
YWJlbFdLID8gdG9XVEZTdHJpbmcoYXBwbGljYXRpb25MYWJlbFdLKSA6IFN0cmluZygpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xNzM3LDEwICsxNzM3LDEwIEBAIFdL
UmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91
c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBh
dHRyTGFiZWxLZXkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdHRy
TGFiZWwiKSk7CiAgICAgICAgIFdLU3RyaW5nUmVmIGF0dHJMYWJlbFdLID0gc3RhdGljX2Nhc3Q8
V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkodGVzdERpY3Rpb25hcnksIGF0
dHJMYWJlbEtleS5nZXQoKSkpOwogCi0gICAgICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBh
cHBsaWNhdGlvblRhZ0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkFwcGxpY2F0aW9uVGFnIikpOwotICAgICAgICBXS1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ1dL
ID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkodGVz
dERpY3Rpb25hcnksIGFwcGxpY2F0aW9uVGFnS2V5LmdldCgpKSk7CisgICAgICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBhcHBsaWNhdGlvbkxhYmVsS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXBwbGljYXRpb25MYWJlbCIpKTsKKyAgICAgICAgV0tTdHJp
bmdSZWYgYXBwbGljYXRpb25MYWJlbFdLID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGlj
dGlvbmFyeUdldEl0ZW1Gb3JLZXkodGVzdERpY3Rpb25hcnksIGFwcGxpY2F0aW9uTGFiZWxLZXku
Z2V0KCkpKTsKIAotICAgICAgICBib29sIGtleUV4aXN0c0luS2V5Y2hhaW4gPSBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkua2V5RXhpc3RzSW5LZXljaGFpbih0b1dURlN0cmluZyhhdHRyTGFi
ZWxXSyksIHRvV1RGU3RyaW5nKGFwcGxpY2F0aW9uVGFnV0spKTsKKyAgICAgICAgYm9vbCBrZXlF
eGlzdHNJbktleWNoYWluID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmtleUV4aXN0c0lu
S2V5Y2hhaW4odG9XVEZTdHJpbmcoYXR0ckxhYmVsV0spLCB0b1dURlN0cmluZyhhcHBsaWNhdGlv
bkxhYmVsV0spKTsKICAgICAgICAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiByZXN1bHQgPSBhZG9w
dFdLKFdLQm9vbGVhbkNyZWF0ZShrZXlFeGlzdHNJbktleWNoYWluKSk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IGYyZTNhNjZjNzg4MDEwM2M4MDg0YTlkODk0NWZm
NDA4ZmRiMmUzMTYuLmZjMWQ1MWI3NDljOGIzMjFmZTRmN2EyMjU1N2I4MWFkOWU2YjkwMTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KQEAgLTQzMCw3ICs0MzAsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjphZGRUZXN0S2V5
VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQsIGNvbnN0CiAgICAgQVNT
RVJUX1VOVVNFRChzdGF0dXMsICFzdGF0dXMpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpj
bGVhblVwS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25UYWdCYXNlNjQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4o
Y29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25MYWJlbEJh
c2U2NCkKIHsKICAgICBhdXRvIGRlbGV0ZVF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rp
b25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBbZGVsZXRlUXVlcnkgc2V0T2JqZWN0OihpZClrU2Vj
Q2xhc3NLZXkgZm9yS2V5OihpZClrU2VjQ2xhc3NdOwpAQCAtNDQwLDE5ICs0NDAsMTkgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0ckxhYmVs
LCBjb25zdCBTdHJpbmcmIGFwcGwKICNlbHNlCiAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDpA
WUVTIGZvcktleTooaWQpa1NlY0F0dHJOb0xlZ2FjeV07CiAjZW5kaWYKLSAgICBpZiAoISFhcHBs
aWNhdGlvblRhZ0Jhc2U2NCkKLSAgICAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDphZG9wdE5T
KFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25U
YWdCYXNlNjQgb3B0aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0
ZXJzXSkuZ2V0KCkgZm9yS2V5OihpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXTsKKyAgICBpZiAo
ISFhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KQorICAgICAgICBbZGVsZXRlUXVlcnkgc2V0T2JqZWN0
OmFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzphcHBs
aWNhdGlvbkxhYmVsQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtu
b3duQ2hhcmFjdGVyc10pLmdldCgpIGZvcktleTooaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVs
XTsKIAogICAgIFNlY0l0ZW1EZWxldGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkZWxldGVR
dWVyeS5nZXQoKSk7CiB9CiAKLWJvb2wgVGVzdENvbnRyb2xsZXI6OmtleUV4aXN0c0luS2V5Y2hh
aW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdC
YXNlNjQpCitib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0
cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpCiB7
CiAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9IEB7CiAgICAgICAgIChpZClrU2VjQ2xhc3M6IChp
ZClrU2VjQ2xhc3NLZXksCiAgICAgICAgIChpZClrU2VjQXR0cktleUNsYXNzOiAoaWQpa1NlY0F0
dHJLZXlDbGFzc1ByaXZhdGUsCiAgICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBhdHRyTGFiZWws
Ci0gICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiBhZG9wdE5TKFtbTlNEYXRhIGFs
bG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25UYWdCYXNlNjQgb3B0
aW9uczpOU0RhdGFCYXNlNjREZWNvZGluZ0lnbm9yZVVua25vd25DaGFyYWN0ZXJzXSkuZ2V0KCks
CisgICAgICAgIChpZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWw6IGFkb3B0TlMoW1tOU0RhdGEg
YWxsb2NdIGluaXRXaXRoQmFzZTY0RW5jb2RlZFN0cmluZzphcHBsaWNhdGlvbkxhYmVsQmFzZTY0
IG9wdGlvbnM6TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdl
dCgpLAogI2lmIEhBVkUoREFUQV9QUk9URUNUSU9OX0tFWUNIQUlOKQogICAgICAgICAoaWQpa1Nl
Y1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hhaW46IEBZRVMKICNlbHNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWUwZGIzZDBi
NGM4NDA2YjBiNTVhNGVkZGMxOWY2ZjIwMmMyZjY5ZS4uNWRlMjBjM2Y4YzUyODhjZjI2N2E2NDFi
YjYwMzE2ODkzYWZkNDdiZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAzLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBGb3Jt
YWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0Nzky
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcg
dGVzdHMgYXJlIGFkZGVkIGFuZCBhbGwgdGVzdHMgYXJlIG1vZGlmaWVkIHRvIHVzZSBDcmVkZW50
aWFsIElEIHRvIGlkZW50aWZ5IGEgY3JlZGVudGlhbCBpbnN0ZWFkCisgICAgICAgIG9mIHsgUlAg
SUQsIHVzZXIgaGFuZGxlIH0uCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0
dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9j
YWwuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sOgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1s
b2NhbC1zaWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMu
aHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Z2V0LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRo
bi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAyMC0wMy0w
NSAgSmlld2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRo
bl0gRG8gbm90IHBlcmZvcm0gQXR0ZXN0YXRpb24gd2l0aCB0eXBlIGlzICdub25lJwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1
cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA2Njc5NDFmZGM4MTc0ZmUw
ODk2MzVlZTE3MzdiZGVlMDk0NGY5NjFjLi5iNjNmZDc0YmU1N2FlMDg3NjliYTViZjNlZDk2M2E2
MDMzOWRkNWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNy
ZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApA
QCAtMSw4ICsxLDggQEAKIAotUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3
aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gMyAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxl
bnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gNCAKLVBBU1MgUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4gNSAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4g
NiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRl
ZCBwdWJsaWMga2V5IGNyZWRlbnRpYWwgcGFyYW1ldGVycyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0
Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAK
K1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1
ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCAKK1BBU1Mg
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRob3V0IHByaXZhdGUga2V5cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgYXR0
ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50
Lmh0dHBzLmh0bWwKaW5kZXggNGRjZjRhMjk0ZDlmZTczYzdjMjE2ZjhmZDE5NGUzMjY2N2E3Njhl
Ni4uY2IyZDAyNjgzMGZlMmE4ODU1ODBlZTUxMDliOGRjYWE2M2NiMDcxNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0
ZS1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1z
aWxlbnQuaHR0cHMuaHRtbApAQCAtNCwxNTIgKzQsMTU4IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNv
dXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigp
IHsKLSAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJh
c2U2NCgpOworICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRv
IG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAo
d2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRB
dXRoZW50aWNhdGlvbjogZmFsc2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworCisg
ICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQi
LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxl
QmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJy
YXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6
ICJwdWJsaWMta2V5IiwgYWxnOiAtMzUgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1
NyB9XSwgLy8gRVMzODQsIFJTMjU2CisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMga2V5IGNyZWRlbnRpYWwgcGFyYW1ldGVy
cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVy
YXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2Fp
dCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7Ci0gICAgICAgIC8vIERl
ZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkg
bmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCi0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmln
dXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7Ci0KLSAgICAgICAgcHJv
bWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNl
NjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAg
ICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
YWxnOiAtMzUgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMzODQs
IFJTMjU2Ci0gICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCi0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
Ik9wZXJhdGlvbiB0aW1lZCBvdXQuIik7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNv
ZGUoY3JlZGVudGlhbElEKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAg
ICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAg
ICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4
YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1
c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFz
ZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlU
b1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFy
YW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAg
ICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0
VVJMLnBhcnNlKHRlc3RDcmVkZW50aWFsSWRCYXNlNjQpIH1dLAotICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAg
ICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNl
NjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAg
ICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBp
ZDogY3JlZGVudGlhbElEIH1dLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwg
dGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2Vy
aGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90
QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9w
ZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBL
ZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZh
aWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIiKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0
KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1d
IHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25z
dCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7Cisg
ICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChw
cml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFz
ZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCk7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewot
ICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVz
ZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhh
bmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4i
LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6
IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5
Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAg
ICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbInVz
YiJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6
IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6
IFsiYmxlIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXki
LCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQotICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAg
ICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAg
ICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2Vl
ZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5k
bGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVk
ZW50aWFsczogWworICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6
IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAorICAgICAgICAgICAgICAgICAg
ICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJu
ZmMiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNy
ZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJibGUiXSB9LAorICAgICAgICAgICAgICAgICAgICB7
IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJpbnRl
cm5hbCJdIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEw
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtl
eUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVuKCgp
ID0+IHsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RS
cElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0
cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRp
b25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGgg
c2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDMiKTsKKyAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlh
bElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2Nh
bCBhdXRoZW50aWNhdG9yLiAybmQiKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0g
ICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTog
ewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNl
ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNl
cmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpv
aG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVu
Z2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHVi
S2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGlt
ZWQgb3V0LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gNCIpOwor
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVk
IiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRs
ZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3Rz
KHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlv
bnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAg
ICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxl
LmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjog
ewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJh
bXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAg
ICAgdGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNl
dE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVl
LCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlIH0gfSk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFs
bG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4gNSIpOworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9
IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4g
QXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0
VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9o
biIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lp
VG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1z
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGlt
ZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9u
Q29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhl
bnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBwcml2YXRlIGtleXMg
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0
KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpv
aG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFy
c2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAot
ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAg
ICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsg
c2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUs
IGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJo
YW5kbGVCYXNlNjQpOworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29u
c3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwor
ICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQo
cHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJh
c2U2NGVuY29kZShjcmVkZW50aWFsSUQpOworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Cisg
ICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxl
c2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJo
YW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWlu
dDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sg
dHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGF0dGVzdGF0
aW9uOiAiZGlyZWN0IiwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9mYWxzZSh0ZXN0UnVubmVyLmtleUV4aXN0
c0luS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpKTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxl
bnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gNiIpOwotICAgIH0pKCk7
CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRG
YWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlLCBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0IH0g
fSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRl
bnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4
NjM0ZjJjMjZkMjllY2ZhMTA1NTRlNDE4MzNkZDhiODZkMmI3OGEzLi42YTEwMjVhYjA0M2RkNTQ5
NTdiODgyNDNlNDhlODc4NWM2OThmZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0
cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTUsNiArNSw2IEBAIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrCiBQQVNTIFB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2Nh
bCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aG91dCBwcml2YXRlIGtleXMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9uIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdz
IFtbY3JlYXRlXV0gZGVsZXRpbmcgb2xkIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBub3QgZGVs
ZXRpbmcgb2xkIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogUEFT
UyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0
cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVu
dGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IDBhNWFiZTI4ODU2OWFl
YzdiY2U5OTc2ZTk3YjRlYjI4NTJlMmViODQuLjU3MGFjMDhmNGIwZGVlMGRkMTg5NTE3MWJiZTk3
OWVkMDk4OWI1NWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVh
dGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCkBAIC00LDE5MyArNCwyMDUgQEAKIDxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgKGFzeW5j
IGZ1bmN0aW9uKCkgewotICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVV
c2VyaGFuZGxlQmFzZTY0KCk7CisgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRl
c3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9u
LgorICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisKKyAgICBwcm9taXNl
X3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAor
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC0zNSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMjU3IH1dLCAvLyBF
UzM4NCwgUlMyNTYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RTdXBwb3J0ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucyksICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBk
b2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJz
LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVuc3Vw
cG9ydGVkIHB1YmxpYyBrZXkgY3JlZGVudGlhbCBwYXJhbWV0ZXJzIGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAg
ICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0
KCk7CiAgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRp
YWxJRChwcml2YXRlS2V5QmFzZTY0KTsKLSAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3Vy
YXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25m
aWd1cmF0aW9uLgotICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsg
YWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9
KTsKLQotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRp
b25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAg
ICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC0zNSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAt
MjU3IH1dLCAvLyBFUzM4NCwgUlMyNTYKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
OwotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RTdXBwb3J0ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJUaGUgcGxhdGZvcm0g
YXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1Ymxp
Y0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMga2V5IGNyZWRlbnRpYWwg
cGFyYW1ldGVycyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICAgICAgY29u
c3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCk7CiAKLSAg
ICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
LSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
LSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCB9XQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAg
ICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAg
ICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIs
CisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVC
YXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTog
InB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50
aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElEIH1dCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwg
dGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Y3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRy
eSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVk
IGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFp
bihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBt
YXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxh
dGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJw
SWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1hdGNoZWQgZXhjbHVkZSBjcmVkZW50aWFscyBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1
YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9o
biBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJz
ZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1l
OiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNo
YWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0g
ICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogWwotICAgICAgICAgICAgICAg
ICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9y
dHM6IFsidXNiIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1r
ZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJh
bnNwb3J0czogWyJibGUiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9Ci0g
ICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Owor
ICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJh
c2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBj
cmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2
NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVk
ZW50aWFsSUQpOworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAor
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogWwor
ICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJ
RCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJw
dWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAorICAg
ICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwg
dHJhbnNwb3J0czogWyJibGUiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJs
aWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0KKyAg
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5
Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFz
ZTY0KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3Ii
LCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNy
ZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3Qg
aW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1
bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNl
cmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJB
dCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3Jl
ZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iKS50
aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2Vy
aGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCIpOworICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCBjcmVkZW50aWFsSURCYXNlNjQpOworICAg
ICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBt
YXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3Iu
IDJuZCIpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20i
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBb
eyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0KLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRu
J3QgdmVyaWZ5IHVzZXIuIik7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tj
cmVhdGVdXSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4iKTsKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFw
cGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVz
ZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4i
LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dCisgICAgICAgICAgICB9CisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHZlcmlmeSB1
c2VyLiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0
IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAotICAgICAg
ICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAg
ICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
LSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAg
ICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0
aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwotICAgICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgY3JlYXRlIHByaXZhdGUga2V5
LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91
dCBwcml2YXRlIGtleXMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgcHJv
bWlzZV90ZXN0KHQgPT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAg
cHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAg
bmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
dXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAg
ICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0
KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEy
MzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgYWxnOiAtNyB9XQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246
IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICByZXR1cm4gcHJv
bWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyksICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIik7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0ZSBrZXlzIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGlj
S2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFw
cGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVz
ZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJK
b2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1
YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAg
ICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJkaXJlY3QiCi0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9u
OiBmYWxzZSwgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCB9IH0pOwotICAgICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3Iu
Y3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgYXR0ZXN0OiBUaGUgb3BlcmF0
aW9uIGNvdWxkbid0IGNvbXBsZXRlLiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVh
blVwS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0
dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIHByb21pc2Vf
dGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0
IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQg
PSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAg
IGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOwog
Ci0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJw
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgYWxnOiAtNyB9XQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNj
ZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwot
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtl
eUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOworICAgICAgICBjb25zdCBvcHRp
b25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
Sm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNl
KHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTog
YXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQ
YXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAg
ICBhdHRlc3RhdGlvbjogImRpcmVjdCIKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxz
LmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iKS50aGVuKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAg
ICAgICAgICAgIGFzc2VydF9mYWxzZSh0ZXN0UnVubmVyLmtleUV4aXN0c0luS2V5Y2hhaW4odGVz
dFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gZGVsZXRpbmcgb2xkIGNyZWRlbnRpYWwg
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgICAgIH07CisgICAgICAgIGlm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRo
ZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjog
dHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRl
S2V5QmFzZTY0IH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93
bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0
IGF0dGVzdDogVGhlIG9wZXJhdGlvbiBjb3VsZG4ndCBjb21wbGV0ZS4iKS50aGVuKCgpID0+IHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAg
ICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhv
dXQgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAg
ICAgcHJvbWlzZV90ZXN0KGZ1bmN0aW9uKHQpIHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJw
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBpZDogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0g
ICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5
IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAsCi0gICAgICAg
ICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFj
aG1lbnQ6ICJjcm9zcy1wbGF0Zm9ybSIgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRl
S2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNv
bnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5
QmFzZTY0KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2Rl
KGNyZWRlbnRpYWxJRCk7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAg
ICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3Rh
dGlvbjogZmFsc2UgfSB9KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAi
Tm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
Ik9wZXJhdGlvbiB0aW1lZCBvdXQuIik7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3Iu
Iik7Ci0gICAgfSkoKTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVz
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogdGVzdFVzZXJoYW5kbGVCYXNlNjQsCisg
ICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgi
MTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dl
YkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQs
IHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
cHJvbWlzZVJlamVjdHModCwgIlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucyksICJDb3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIikudGhlbigoKSA9
PiB7CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAg
YXNzZXJ0X3RydWUodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRlc3RScElkLCBjcmVk
ZW50aWFsSURCYXNlNjQpKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXlj
aGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIG5vdCBkZWxldGluZyBvbGQgY3JlZGVu
dGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVz
dChmdW5jdGlvbih0KSB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBu
YW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1
c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgICAgIGlkOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAsCisgICAgICAgICAgICAgICAg
YXV0aGVudGljYXRvclNlbGVjdGlvbjogeyBhdXRoZW50aWNhdG9yQXR0YWNobWVudDogImNyb3Nz
LXBsYXRmb3JtIiB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxz
ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNl
UmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4iKTsKIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1jcmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXgg
ZmFkYWMyMTFhN2NlMDdmMjVhNWQyMGFjOWVlYjIyOTA2YzcwZmVmNy4uNjUxMDk4MDQ2NGVmZThk
MDYzOGU5OTRmYzkyOTYxODkxYjE5NWZmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0
dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJs
aWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0
CkBAIC01LDQgKzUsNiBAQCBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWwgaWRzIGJ1dCBubwogUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVd
XSB3aXRoIGluZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9y
LiAKIFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0
ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlD
cmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVkZW50aWFsIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3Jl
YXRlXV0gd2l0aCBkdXBsaWNhdGUgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gMiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1
Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAppbmRleCA4YWFmNWFmYjllMzE3MDliNmUyNDVmODc4NDJj
ZDZhZTgzYWJjZjljLi5iZDMwNzYxNTNmMWJmOTA5MGQyOTg0MDM4NGYwMzdjMjk4OGM4NWMyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9j
YWwuaHR0cHMuaHRtbApAQCAtNSwyMDggKzUsMzQxIEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJj
ZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvY2Jvci5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsKLSAgICAgICAgY29u
c3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgIGZ1
bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgaXNOb25lQXR0ZXN0
YXRpb24gPSB0cnVlKQorICAgIHsKKyAgICAgICAgLy8gQ2hlY2sga2V5Y2hhaW4KKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXN0UnVu
bmVyLmtleUV4aXN0c0luS2V5Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShjcmVkZW50aWFs
SUQpKSk7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwg
YmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hl
Y2sgcmVzcG9uZAorICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShj
cmVkZW50aWFsLmlkKSwgY3JlZGVudGlhbElEKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVk
ZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIGNyZWRlbnRpYWxJRCk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoYnl0ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xp
ZW50RGF0YUpTT04pLCAneyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJ
ek5EVTIiLCJvcmlnaW4iOiJodHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNz
ZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRz
KCksICJhcHBpZCIpOworCisgICAgICAgIC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgICAgIGNv
bnN0IGF0dGVzdGF0aW9uT2JqZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5h
dHRlc3RhdGlvbk9iamVjdCk7CisgICAgICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKKyAgICAg
ICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9uZSIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZt
dCwgImFwcGxlIik7CisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1
dGhEYXRhID0gZGVjb2RlQXV0aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAi
NDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4
MzFkOTc2MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA2OSk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5hYWd1aWQpLCAiMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdXRo
RGF0YS5jcmVkZW50aWFsSUQsIGNyZWRlbnRpYWxJRCk7CisgICAgICAgIC8vIENoZWNrIHNlbGYg
YXR0ZXN0YXRpb24KKyAgICAgICAgYXNzZXJ0X3RydWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEu
cHVibGljS2V5KSk7CisgICAgICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKKyAgICAgICAgICAg
IGFzc2VydF9vYmplY3RfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVj
dC5hdHRTdG10LmFsZywgLTcpOworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlv
bk9iamVjdC5hdHRTdG10Lng1Yy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5
X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Y1swXSwgQmFzZTY0VVJMLnBhcnNl
KHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0KSk7CisgICAgICAgICAgICBhc3NlcnRf
YXJyYXlfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjWzFdLCBCYXNlNjRVUkwu
cGFyc2UodGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQpKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgY29u
c3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwog
ICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQo
cHJpdmF0ZUtleUJhc2U2NCk7Ci0gICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9u
LiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJh
dGlvbi4KKyAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRs
ZUJhc2U2NCgpOwogICAgICAgICBpZiAod2luZG93LmludGVybmFscykKICAgICAgICAgICAgIGlu
dGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKICAgICAgICAg
ICAgICAgICBsb2NhbDogewogICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlv
bjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAog
ICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAot
ICAgICAgICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlv
bkNlcnRpZmljYXRlQmFzZTY0LAotICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVDQUNl
cnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2
NAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwogCi0gICAgICAgIGZ1bmN0aW9u
IGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gQ2hlY2sga2V5Y2hhaW4KLSAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRlc3RSdW5uZXIu
a2V5RXhpc3RzSW5LZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCkpOwotICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxl
QmFzZTY0KTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJs
b2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogewor
ICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAg
ICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwK
KyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIs
IGFsZzogLTcgfV0sCiAgICAgICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgICAgIC8v
IENoZWNrIHJlc3BvbmQKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJM
LnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBjcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgYXNzZXJ0
X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgICAgICBhc3Nl
cnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBjcmVkZW50
aWFsSUQpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3Jl
ZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVh
dGUiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0
NDMifScpOwotICAgICAgICAgICAgYXNzZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5n
ZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwotCi0gICAgICAgICAgICAvLyBD
aGVjayBhdHRlc3RhdGlvbgotICAgICAgICAgICAgY29uc3QgYXR0ZXN0YXRpb25PYmplY3QgPSBD
Qk9SLmRlY29kZShjcmVkZW50aWFsLnJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAg
ICAgICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgIm5vbmUiKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgImFwcGxl
Iik7Ci0gICAgICAgICAgICAvLyBDaGVjayBhdXRoRGF0YQotICAgICAgICAgICAgY29uc3QgYXV0
aERhdGEgPSBkZWNvZGVBdXRoRGF0YShhdHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7Ci0gICAg
ICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gp
LCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2Yz
YmE4MzFkOTc2MyIpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywg
NjkpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCAwKTsKLSAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5hYWd1aWQp
LCAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKLSAgICAgICAgICAgIGFzc2Vy
dF9hcnJheV9lcXVhbHMoYXV0aERhdGEuY3JlZGVudGlhbElELCBjcmVkZW50aWFsSUQpOwotICAg
ICAgICAgICAgLy8gQ2hlY2sgc2VsZiBhdHRlc3RhdGlvbgotICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7Ci0gICAgICAgICAgICBpZiAo
aXNOb25lQXR0ZXN0YXRpb24pCi0gICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMo
YXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdCwgeyB9KTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC5hbGcs
IC03KTsKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0
dFN0bXQueDVjLmxlbmd0aCwgMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Y1swXSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RB
dHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0KSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1Y1sxXSwgQmFzZTY0VVJMLnBh
cnNlKHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0KSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1v
Y2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7
Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tl
eTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZTogImxvY2FsaG9zdCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVC
YXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJo
YW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBs
ZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAgICAgICAgICAg
cHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2
NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7
CisgICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNl
NjQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAgICAgICAgICAg
ICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRy
dWUsCisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwKKyAgICAg
ICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICByZXR1cm4gbmF2aWdh
dG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAg
ICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0g
b3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLQotICAgICAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAg
ICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWU6IHVzZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0
VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlz
cGxheU5hbWU6ICJBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKLSAgICAg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOiB7
IGF1dGhlbnRpY2F0b3JBdHRhY2htZW50OiAicGxhdGZvcm0iIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9OwogCi0gICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgICAg
IGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rp
b24geyAncGxhdGZvcm0nIH0gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0KLSAg
ICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
LSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
LSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3Jl
ZGVudGlhbElELCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJu
ZmMiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlk
OiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfQotICAgICAgICAgICAgICAgICAg
ICBdCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxo
b3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAg
ICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAg
ICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6
IC03IH1dLAorICAgICAgICAgICAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb246IHsgYXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ6ICJwbGF0Zm9ybSIgfQorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMp
LnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFs
LCBjcmVkZW50aWFsSUQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ3BsYXRmb3JtJyB9
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFz
eW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJh
dGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0
IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3Qg
dXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKKyAgICAgICAgICAgICAgICBsb2NhbDogeworICAg
ICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBw
cml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH07CisgICAgICAgICAgICB9KTsKKworICAgICAgICBjb25zdCBhbm90aGVyUHJp
dmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAg
ICBjb25zdCBhbm90aGVyQ3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElE
KGFub3RoZXJQcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAg
ICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAg
ICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJh
c2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxl
QmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJy
YXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6
ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVu
dGlhbHM6IFsKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBh
bm90aGVyQ3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAg
ICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogYW5vdGhlckNyZWRlbnRpYWxJRCwgdHJh
bnNwb3J0czogWyJuZmMiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IGFub3RoZXJDcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfQorICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXlj
aGFpbihhbm90aGVyUHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVu
ZGxlQmFzZTY0KTsKKworICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0
ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQo
Y3JlZGVudGlhbCwgY3JlZGVudGlhbElEKTsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHRl
c3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0
ZW5jb2RlKGFub3RoZXJDcmVkZW50aWFsSUQpKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRp
YWwgaWRzIGJ1dCBub3QgdHJhbnNwb3J0cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4i
KTsKIAotICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0
aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChj
cmVkZW50aWFsKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbCBpZHMgYnV0
IG5vdCB0cmFuc3BvcnRzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotCi0gICAg
ICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0g
ICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlk
OiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIp
LAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAibm9u
ZSIKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVL
ZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29u
c3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlC
YXNlNjQpOworICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFu
ZGxlQmFzZTY0KCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAg
ICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQs
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0pOwogCi0g
ICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwpOworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2Fs
aG9zdCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAgICAgICAg
ICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XSwKKyAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogIm5vbmUiCisgICAgICAgICAg
ICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5j
cmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVz
dWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRpb24gaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZh
dGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3Vs
YXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCB1c2VyaGFu
ZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAg
ICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtl
eUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgdXNlckNlcnRp
ZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwKKyAgICAgICAg
ICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0
aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggbm9uZSBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLQot
ICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0g
ewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDog
ewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5E
VTIiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjog
ImluZGlyZWN0IgorCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6
IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAg
ICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAg
ICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUy
IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiaW5kaXJlY3Qi
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAg
ICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgZmFsc2UpOworICAgICAg
ICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRp
cmVjdCBhdHRlc3RhdGlvbiBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2
NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7
CisgICAgICAgIGNvbnN0IHVzZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNl
NjQoKTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5h
bHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAgICAgICAgICAg
ICAgbG9jYWw6IHsKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRy
dWUsCisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAorICAgICAg
ICAgICAgICAgICAgICB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbkNlcnRp
ZmljYXRlQmFzZTY0LAorICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVDQUNlcnRpZmlj
YXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NAogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsKLSAgICAgICAgICAgICAgICAgICAgbG9jYWw6IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IHRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgdXNlckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZp
Y2F0ZUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZUNBQ2VydGlm
aWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggaW5kaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIik7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29u
c3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAg
ICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3Qi
LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwu
cGFyc2UoIk1USXpORFUyIiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6
IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAg
YXR0ZXN0YXRpb246ICJkaXJlY3QiCisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0
LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNl
NjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJz
ZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246
ICJkaXJlY3QiCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsK
KyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgZmFsc2Up
OworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7
CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVL
ZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29u
c3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlC
YXNlNjQpOworICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFu
ZGxlQmFzZTY0KCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAg
ICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0
aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQs
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0pOwogCi0g
ICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50
aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwsIGZhbHNlKTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1Ymxp
Y0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAg
ICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgY29u
c3QgYW5vdGhlclByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNl
NjQoKTsKKyAgICAgICAgY29uc3QgYW5vdGhlckNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0
ZUNyZWRlbnRpYWxJRChhbm90aGVyUHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFp
bihhbm90aGVyUHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIGJhc2U2NGVuY29kZShDQk9SLmVu
Y29kZSh7ICJpZCI6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwgIm5hbWUiOiB1
c2VyaGFuZGxlQmFzZTY0IH0pKSk7CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNo
ZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICBhc3NlcnRf
ZmFsc2UodGVzdFJ1bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRlc3RScElkLCBiYXNlNjRlbmNv
ZGUoYW5vdGhlckNyZWRlbnRpYWxJRCkpKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZHVwbGljYXRlIGNyZWRlbnRpYWwgaW4gYSBt
b2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9
PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZh
dGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3Vs
YXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCB1c2VyaGFu
ZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAg
ICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ICBhY2NlcHRBdHRlc3RhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtl
eUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgdXNlckNlcnRp
ZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwKKyAgICAgICAg
ICAgICAgICAgICAgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0
aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdp
dGggZGlyZWN0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwot
ICAgIH0pKCk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1Ymxp
Y0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjog
eworICAgICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAg
ICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIi
KSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJkaXJlY3QiCisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgYW5vdGhlclByaXZhdGVL
ZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29u
c3QgYW5vdGhlckNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChhbm90
aGVyUHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihhbm90aGVyUHJpdmF0ZUtl
eUJhc2U2NCwgdGVzdFJwSWQsIGJhc2U2NGVuY29kZShDQk9SLmVuY29kZSh7ICJpZCI6IEJhc2U2
NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwgIm5hbWUiOiB1c2VyaGFuZGxlQmFzZTY0IH0p
KSk7CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwsIGNyZWRlbnRpYWxJRCwgZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHRlc3RS
dW5uZXIua2V5RXhpc3RzSW5LZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0ZW5jb2RlKGFub3RoZXJD
cmVkZW50aWFsSUQpKSk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiAyIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1z
aWxlbnQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4v
cHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggZDc5ODZjOGE5YmM3OWM3ZDE3ZWEwOTMxNGMxNDgxYTNlMTJlMzE1ZS4u
ZDNmNGY1ZDdhZTlmYWRlYzk0NGRlODg3NTgxOWEyNjViNTQzNTQwMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNp
bGVudC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLVBBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwg
YXV0aGVudGljYXRvci4gCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
c2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIgCi1QQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIDMgCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dl
dF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hl
ZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMm5kIAorUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1v
Y2sgbG9jYWwgYXV0aGVudGljYXRvci4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxl
bnQuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXkt
Y3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCBmMDJj
MjU1ZTg4MjQwNDc0ZjEyMjJjMTJiMDY1YzZiOWY4ZTk5ZjMyLi44M2ViNmI2MGI2ZjkwYjZlN2Vl
NGFlZjllOGUxNjEzYmQ5NjY5ZGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0
dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1j
cmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCkBAIC00LDY0ICs0
LDcyIEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsKLSAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJh
c2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgIHByb21pc2VfdGVzdCh0ID0+
IHsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRy
dWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRp
b246IGZhbHNlIH0gfSk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAg
IHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJy
YXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVz
dENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENy
ZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRl
bnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAgICAgICAgICAg
ICAgXSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAg
ICB9OworCisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0
Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2
NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7
CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJ0b2EoU3RyaW5nLmZyb21DaGFy
Q29kZS5hcHBseSgwLCBjcmVkZW50aWFsSUQpKTsKICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNv
bmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVu
dCBjb25maWd1cmF0aW9uLgogICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAg
ICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2ls
ZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBh
Y2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJo
YW5kbGVCYXNlNjQgfSB9KTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNj
ZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZl
cnJlZENyZWRlbnRpYWxJZEJhc2U2NDogY3JlZGVudGlhbElEQmFzZTY0IH0gfSk7CiAKLSAgICAg
ICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAg
ICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdl
OiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIGFsbG93
Q3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1r
ZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJh
bnNwb3J0czogWyJuZmMiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElE
LCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQotICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYi
KSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAg
ICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFu
ZGxlQmFzZTY0KSB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0
OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OwogCi0gICAgICAgICAgICByZXR1cm4gcHJv
bWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5n
ZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwotICAgICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4iKTsKLQotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAg
ICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewot
ICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYi
KSwKLSAgICAgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWwotICAgICAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodXNl
cmhhbmRsZUJhc2U2NCkgfQotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVz
dEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5
QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWlu
KHRlc3RScElkLCBjcmVkZW50aWFsSURCYXNlNjQpOworICAgICAgICAgICAgfSk7CisgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFs
cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMm5kIik7CiAKLSAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RL
ZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0
KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9y
IiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWlu
KHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUg
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIiKTsKKyAgICBwcm9taXNlX3Rlc3QoYXN5
bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0
ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQg
Y2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBj
cmVkZW50aWFsSURCYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwgY3Jl
ZGVudGlhbElEKSk7CisgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0
cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4K
KyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0
TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUs
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2NCB9
IH0pOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAg
ICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAg
ICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OwogCisgICAg
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVz
dEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5
QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxv
d2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9u
IHRpbWVkIG91dC4iKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHBy
aXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAg
IHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNy
ZWRlbnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJh
c2U2NCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIDMiKTsKLSAgICB9KSgpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtl
eWNoYWluKHRlc3RScElkLCBjcmVkZW50aWFsSURCYXNlNjQpOworICAgICAgICB9KTsKKyAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1sb2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggZjI3
ZjcxMTkyMjdlODBlMzYwMTA4M2MyYzBiNWU0MDkwN2Q4ZTI2MC4uYmRiNjA3NmMyYmM4ODljZDBh
MmU0ZWNmOWE3NDZlYTljNWIzZTMxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKQEAgLTQsNzcgKzQsODUgQEAKIDxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgKGFz
eW5jIGZ1bmN0aW9uKCkgewotICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJh
dGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBp
ZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246
IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKworICAgICAgICBjb25zdCBv
cHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxs
b3dDcmVkZW50aWFsczogWworICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5
IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0
czogWyJ1c2IiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5Iiwg
aWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czog
WyJuZmMiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJi
bGUiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJh
c2U2NFVSTC5wYXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJpbnRl
cm5hbCJdIH0KKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZp
Z2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBh
cmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIik7CisgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50
aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVz
dChhc3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdl
bmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBh
d2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNv
bnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgw
LCBjcmVkZW50aWFsSUQpKTsKICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24u
IFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0
aW9uLgogICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0
QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJl
ZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKLQotICAgICAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAg
ICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lp
VG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50
aWFsczogWwotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlk
OiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRz
OiBbIm5mYyJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5
IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJibGUiXSB9LAotICAgICAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5z
cG9ydHM6IFsiaW50ZXJuYWwiXSB9Ci0gICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVj
dHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9u
cyksICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0
YWNoZWQgYXV0aGVudGljYXRvci4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4iKTsKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNl
LCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDog
Y3JlZGVudGlhbElEQmFzZTY0IH0gfSk7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewot
ICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIz
NDU2IiksCi0gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNl
KHVzZXJoYW5kbGVCYXNlNjQpIH0KLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAg
ICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50
OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBh
cnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgfQorICAgICAgICB9OwogCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwg
dGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBs
YXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRU
ZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJh
c2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBtYXRjaGVkIGNy
ZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRv
ci4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElk
LCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGlj
S2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBubyBtYXRjaGVkIGNyZWRlbnRpYWxzIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAybmQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAg
ICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0
Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMm5kIik7CisK
KyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlC
YXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3Qg
Y3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNl
NjQpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBidG9hKFN0cmluZy5mcm9t
Q2hhckNvZGUuYXBwbHkoMCwgY3JlZGVudGlhbElEKSk7CisgICAgICAgIC8vIERlZmF1bHQgbW9j
ayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZm
ZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246
IGZhbHNlLCBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2NCB9
IH0pOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9w
dGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpCi0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAg
ICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4
QXJyYXkoIjEyMzQ1NiIpCisgICAgICAgICAgICB9CisgICAgICAgIH07CiAKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9L
ZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdGVzdFVzZXJFbnRpdHlCdW5kbGVC
YXNlNjQpOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJv
ciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJDb3VsZG4ndCB2ZXJpZnkg
dXNlci4iKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
LSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVL
ZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmdldChvcHRpb25zKSwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiIpLnRoZW4oKCkgPT4gewot
ICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tn
ZXRdXSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4i
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwg
Y3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiIpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAg
IGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAg
ICAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czog
WyJ1c2IiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIs
IGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3Bv
cnRzOiBbImJsZSJdIH0KLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAg
ICAgdGltZW91dDogMTAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAg
IHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJy
YXkoIjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVz
dENyZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENy
ZWRlbnRpYWxJZEJhc2U2NCksIHRyYW5zcG9ydHM6IFsiYmxlIl0gfQorICAgICAgICAgICAgICAg
IF0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKIAotICAgICAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVk
IG91dC4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGgg
dGltZW91dCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLSAgICB9KSgpOworICAg
ICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRv
ci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAg
IH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1s
b2NhbC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggOTM2MGFmYjhm
NTU4Mjc1ODQzZjkwMDM0NTdjNzBlODdjNDM3NmNiZi4uNzhkNGQ3YjA3NmIxOTFhZThkNmJiYzU3
ZjRjZTZhYTM4MzgwMTZmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0
aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdl
dC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKQEAgLTQsNzUgKzQsODAgQEAKIDxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3Jj
PSIuL3Jlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgKGFzeW5jIGZ1
bmN0aW9uKCkgewotICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2Vy
aGFuZGxlQmFzZTY0KCk7Ci0gICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBn
ZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKLSAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0g
YXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwotICAgICAgICAv
LyBEZWZhdWx0IG1vY2sgY29uZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0
aGV5IG5lZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKQotICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNv
bmZpZ3VyYXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxl
QmFzZTY0IH0gfSk7Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFz
ZTY0KTsKKyAgICBmdW5jdGlvbiBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQs
IHByaXZhdGVLZXlCYXNlNjQpCisgICAgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0
ZW5jb2RlKGNyZWRlbnRpYWxJRCkpOwogCi0gICAgICAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAot
ICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlh
bC5pZCksIGNyZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRp
YWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMo
bmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yYXdJZCksIGNyZWRlbnRpYWxJRCk7Ci0gICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNl
LmNsaWVudERhdGFKU09OKSwgJ3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1U
SXpORFUyIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7Ci0gICAgICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2Uu
dXNlckhhbmRsZSksIEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSk7Ci0gICAgICAg
ICAgICBhc3NlcnRfbm90X293bl9wcm9wZXJ0eShjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lv
blJlc3VsdHMoKSwgImFwcGlkIik7CisgICAgICAgICAvLyBDaGVjayByZXNwb25kCisgICAgICAg
IGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBjcmVk
ZW50aWFsSUQpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1Ymxp
Yy1rZXknKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVk
ZW50aWFsLnJhd0lkKSwgY3JlZGVudGlhbElEKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRl
c1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5
cGUiOiJ3ZWJhdXRobi5nZXQiLCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBz
Oi8vbG9jYWxob3N0Ojk0NDMifScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBV
aW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSksIEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCkpOworICAgICAgICBhc3NlcnRfbm90X293bl9wcm9wZXJ0
eShjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSwgImFwcGlkIik7CiAKLSAg
ICAgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCi0gICAgICAgICAgICBjb25zdCBhdXRoRGF0YSA9
IGRlY29kZUF1dGhEYXRhKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVu
dGljYXRvckRhdGEpKTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmlu
ZyhhdXRoRGF0YS5ycElkSGFzaCksICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1Yjhm
ZTRhZWI5YTI4NjMyYzc5OTVjZjNiYTgzMWQ5NzYzIik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGF1dGhEYXRhLmZsYWdzLCA1KTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERh
dGEuY291bnRlciwgMCk7CisgICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0
IGF1dGhEYXRhID0gZGVjb2RlQXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNw
b25zZS5hdXRoZW50aWNhdG9yRGF0YSkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9I
ZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3
NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2MyIpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA1KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0
YS5jb3VudGVyLCAwKTsKIAotICAgICAgICAgICAgLy8gQ2hlY2sgc2lnbmF0dXJlCi0gICAgICAg
ICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIEJhc2U2NFVSTC5wYXJz
ZShwcml2YXRlS2V5QmFzZTY0KS5zbGljZSgwLCA2NSksIHsgbmFtZTogIkVDRFNBIiwgbmFtZWRD
dXJ2ZTogIlAtMjU2IiB9LCBmYWxzZSwgWyd2ZXJpZnknXSkudGhlbiggcHVibGljS2V5ID0+IHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoInNoYS0yNTYiLCBj
cmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKS50aGVuICggaGFzaCA9PiB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIGNyZWRlbnRpYWwucmVzcG9uc2Uuc2lnbmF0dXJlIGlzIGluIEFT
Ti4xIGFuZCBXZWJDcnlwdG8gZXhwZWN0IHNpZ25hdHVyZXMgcHJvdmlkZXMgaW4gcnxzLgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gY3J5cHRvLnN1YnRsZS52ZXJpZnkoe25hbWU6ICJFQ0RT
QSIsIGhhc2g6ICJTSEEtMjU2In0sIHB1YmxpY0tleSwgZXh0cmFjdFJhd1NpZ25hdHVyZShjcmVk
ZW50aWFsLnJlc3BvbnNlLnNpZ25hdHVyZSksIGNvbmNhdGVuYXRlQnVmZmVycyhjcmVkZW50aWFs
LnJlc3BvbnNlLmF1dGhlbnRpY2F0b3JEYXRhLCBoYXNoKSkudGhlbiggdmVyaWZpZWQgPT4gewot
ICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodmVyaWZpZWQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYXNzZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRDbGll
bnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwotICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgLy8gQ2hlY2sgc2lnbmF0dXJlCisgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxl
LmltcG9ydEtleSgicmF3IiwgQmFzZTY0VVJMLnBhcnNlKHByaXZhdGVLZXlCYXNlNjQpLnNsaWNl
KDAsIDY1KSwgeyBuYW1lOiAiRUNEU0EiLCBuYW1lZEN1cnZlOiAiUC0yNTYiIH0sIGZhbHNlLCBb
J3ZlcmlmeSddKS50aGVuKCBwdWJsaWNLZXkgPT4geworICAgICAgICAgICAgcmV0dXJuIGNyeXB0
by5zdWJ0bGUuZGlnZXN0KCJzaGEtMjU2IiwgY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRh
SlNPTikudGhlbiAoIGhhc2ggPT4geworICAgICAgICAgICAgICAgIC8vIGNyZWRlbnRpYWwucmVz
cG9uc2Uuc2lnbmF0dXJlIGlzIGluIEFTTi4xIGFuZCBXZWJDcnlwdG8gZXhwZWN0IHNpZ25hdHVy
ZXMgcHJvdmlkZXMgaW4gcnxzLgorICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxl
LnZlcmlmeSh7bmFtZTogIkVDRFNBIiwgaGFzaDogIlNIQS0yNTYifSwgcHVibGljS2V5LCBleHRy
YWN0UmF3U2lnbmF0dXJlKGNyZWRlbnRpYWwucmVzcG9uc2Uuc2lnbmF0dXJlKSwgY29uY2F0ZW5h
dGVCdWZmZXJzKGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEsIGhhc2gpKS50
aGVuKCB2ZXJpZmllZCA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHZlcmlm
aWVkKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVu
dGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwogICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQog
Ci0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMg
PSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIGNo
YWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpCi0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfTsKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNv
bnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsK
KyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElE
KHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBi
YXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKTsKKyAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZp
Z3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBj
b25maWd1cmF0aW9uLgorICAgICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAg
IGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6
IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwg
cHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0OiBjcmVkZW50aWFsSURCYXNlNjQgfSB9KTsKIAot
ICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RS
dW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVz
ZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgICAgICBjb25zdCBvcHRpb25zID0gewor
ICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNl
NjRVUkwucGFyc2UoIk1USXpORFUyIikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKIAotICAg
ICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewot
ICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVu
Z2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAgICAgICAgICAgYWxs
b3dDcmVkZW50aWFsczogWwotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksIHRyYW5zcG9ydHM6
IFsiaW50ZXJuYWwiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGlj
LWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9Ci0gICAg
ICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRl
c3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0
eUJ1bmRsZUJhc2U2NCk7CisgICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0
KG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tS
ZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAg
ICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11
bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCi0gICAgICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRU
ZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJh
c2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja1Jl
c3VsdChjcmVkZW50aWFsKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0aCBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEg
bW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotICAgIH0pKCk7CisgICAgcHJvbWlzZV90ZXN0
KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2Vu
ZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3
YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29u
c3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCk7CisgICAg
ICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRl
IGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBh
Y2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDogY3Jl
ZGVudGlhbElEQmFzZTY0IH0gfSk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAg
ICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJM
LnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwu
cGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfSwK
KyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFs
SUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAgICAgICAgICAgICAgXQorICAgICAg
ICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2
NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJu
IG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsK
KyAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQs
IHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aCBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBs
b2NhbCBhdXRoZW50aWNhdG9yLiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCmluZGV4IDYxZDhmNzI1ZmYyYjUxNzhhZWEx
ODM4OGE3NTUwZTNhMjU2MzY5Y2QuLmI2NTVlMmIwNDhhMzk5ZWFkOTljMjA1NWYwM2EzNzNhNGY1
YjIxYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNl
cy91dGlsLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91
dGlsLmpzCkBAIC01LDYgKzUsNyBAQCBjb25zdCB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0K
ICAgICAiUlE9PSI7CiBjb25zdCB0ZXN0UnBJZCA9ICJsb2NhbGhvc3QiOwogY29uc3QgdGVzdFVz
ZXJoYW5kbGVCYXNlNjQgPSAiQUFFQ0F3UUZCZ2NJQ1E9PSI7Citjb25zdCB0ZXN0VXNlckVudGl0
eUJ1bmRsZUJhc2U2NCA9ICJvbUpwWkVvQUFRSURCQVVHQndnSlpHNWhiV1Z3UVVGRlEwRjNVVVpD
WjJOSlExRTlQUT09IjsKIGNvbnN0IHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0ID0K
ICAgICAiTUlJQjZqQ0NBWkNnQXdJQkFnSUdBV0hBeGNqdk1Bb0dDQ3FHU000OUJBTUNNRk14SnpB
bEJnTlZCQU1NSGtKaCIgKwogICAgICJjMmxqSUVGMGRHVnpkR0YwYVc5dUlGVnpaWElnVTNWaUlF
TkJNVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqIiArCkBAIC00NDksNyArNDUwLDcgQEAgZnVu
Y3Rpb24gY2hlY2tVMmZHZXRBc3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgaXNBcHBJRCA9IGZh
bHNlLCBhcHBJREhhc2ggPSAiYzIKIAogZnVuY3Rpb24gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0
KCkKIHsKLSAgICBsZXQgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICAgIGxldCBidWZm
ZXIgPSBuZXcgVWludDhBcnJheSg4KTsKICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGJ1ZmZl
cik7CiAgICAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLCBidWZmZXIp
KTsKIH0KQEAgLTQ4NiwzICs0ODcsOSBAQCBhc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVDcmVkZW50
aWFsSUQocHJpdmF0ZUtleUJhc2U2NCkgewogICAgIGNvbnN0IHB1YmxpY0tleSA9IHByaXZhdGVL
ZXkuc2xpY2UoMCwgNjUpOwogICAgIHJldHVybiBuZXcgVWludDhBcnJheShhd2FpdCBjcnlwdG8u
c3VidGxlLmRpZ2VzdCgic2hhLTEiLCBwdWJsaWNLZXkpKTsKIH0KKworZnVuY3Rpb24gYmFzZTY0
ZW5jb2RlKGJpbmFyeSkKK3sKKyAgICBjb25zdCB1bml0OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXko
YmluYXJ5KTsKKyAgICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsIHVu
aXQ4QXJyYXkpKTsKK30K
</data>
<flag name="review"
          id="408559"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393289</attachid>
            <date>2020-03-11 14:52:36 -0700</date>
            <delta_ts>2020-03-11 15:42:15 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183533-20200311145235.patch</filename>
            <type>text/plain</type>
            <size>142611</size>
            <attacher name="Jiewen Tan">jiewen_tan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWVhYjhjMTc2ZTgzMWQ1
ZjNmNDNiMDVlNjI5OTJkNGM1ZDU2Njk2Mi4uMDYyMjZjNzEyMjg3N2NkZjI0ZTU0M2E3OGQxMzA2
ZTA4OGI1Zjc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTAzLTA5ICBKaWV3
ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkF1dGhuXSBGb3Jt
YWxpemUgdGhlIEtleWNoYWluIHNjaGVtYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNTMzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MzM0Nzky
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIENvdmVy
ZWQgYnkgbmV3IHRlc3QgY29udGVudHMgd2l0aGluIGV4aXN0aW5nIGZpbGVzLgorCisgICAgICAg
ICogTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRo
ZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmg6CisgICAgICAgIE1vZGlmaWVzIHRoZSBj
b25zdHJ1Y3RvcnMgdG8gYWNjZXB0IHVzZXJFbnRpdHkubmFtZS4KKworICAgICAgICAqIE1vZHVs
ZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaDoKKyAgICAgICAgQWRkcyBhIEZJWE1FLgorCisg
ICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2Nh
bENvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uOjpMb2NhbENvbmZpZ3VyYXRpb246OmRlY29kZSk6
CisgICAgICAgICogdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlk
bDoKKyAgICAgICAgTW9kaWZpZXMgdGhlIHRlc3QgaW5mcmEgdG8gdXNlIENyZWRlbnRpYWwgSUQg
YXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGNyZWRlbnRpYWwgaW5zdGVhZCBvZgorICAg
ICAgICB0aGUgb3JpZ2luYWwgY29tYmluYXRpb24gb2YgUlAgSUQgYW5kIHVzZXIgaGFuZGxlLgor
CiAyMDIwLTAzLTA2ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyNTc3NjAuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5ZjY2
ZjFmNzdjOTBlZjAzNzY2ZWFjMGExMWQyNWNhYjA2NzAyMGMuLjNhY2VmZWUwNWUzYWQxZTg0YTFl
N2ExMmRmMmYxMTk0ZDAyYTRmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjAtMDMt
MDkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0
aG5dIEZvcm1hbGl6ZSB0aGUgS2V5Y2hhaW4gc2NoZW1hCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM1MzMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzQzMzQ3OTI2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBmb3JtYWxpemVzIHRoZSBzY2hlbWEgZm9yIHRoZSBLZXljaGFpbiBhcyBm
b2xsb3dzOgorICAgICAgICBrU2VjQXR0ckxhYmVsOiBSUCBJRAorICAgICAgICBrU2VjQXR0ckFw
cGxpY2F0aW9uTGFiZWw6IENyZWRlbnRpYWwgSUQgKGF1dG8tZ2VuIGJ5IEtleWNoYWluKQorICAg
ICAgICBrU2VjQXR0ckFwcGxpY2F0aW9uVGFnOiB7ICJpZCI6IFVzZXJFbnRpdHkuaWQsICJuYW1l
IjogVXNlckVudGl0eS5uYW1lIH0gKENCT1IgZW5jb2RlZCkKKyAgICAgICAgTm90ZWQsIHRoZSB2
YWxlIG9mIGtTZWNBdHRyQXBwbGljYXRpb25MYWJlbCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRl
ZCBieSB0aGUgS2V5Y2hhaW4sIHdoaWNoIGlzIGEgU0hBLTEgaGFzaCBvZgorICAgICAgICB0aGUg
cHVibGljIGtleS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gdGhlIFN0ZXAgNy4gZnJvbSBodHRw
czovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLW1ha2UtY3JlZCwgdGhlIGZvbGxvd2luZyBm
aWVsZHMgYXJlIG1hbmRhdG9yeQorICAgICAgICAxLiBycElkIChycEVudGl0eS5pZCk7CisgICAg
ICAgIDIuIHVzZXJIYW5kbGUgKHVzZXJFbnRpdHkuaWQpLCB0aGlzIGlzIHJlcXVpcmVkIGZvciBh
dXRoZW50aWNhdG9ycyB0aGF0IHN1cHBvcnQgcmVzaWRlbnQga2V5czsKKyAgICAgICAgMy4gY3Jl
ZGVudGlhbElkLgorCisgICAgICAgIFNvbWUgb3RoZXIgb3B0aW9uYWwgZmllbGRzIGFyZToKKyAg
ICAgICAgKGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYmF1dGhuLyNkaWN0ZGVmLXB1Ymxp
Y2tleWNyZWRlbnRpYWxycGVudGl0eSkKKyAgICAgICAgMS4gcnBFbnRpdHkubmFtZTsKKyAgICAg
ICAgMi4gcnBFbml0dHkuaWNvbjsKKyAgICAgICAgKGZyb20gaHR0cHM6Ly93d3cudzMub3JnL1RS
L3dlYmF1dGhuLyNkaWN0ZGVmLXB1YmxpY2tleWNyZWRlbnRpYWx1c2VyZW50aXR5KQorICAgICAg
ICAzLiB1c2VyRW50aXR5LmRpc3BsYXlOYW1lOworICAgICAgICA0LiB1c2VyRW50aXR5Lm5hbWU7
CisgICAgICAgIDUuIHVzZXJFbnRpdHkuaWNvbjsKKyAgICAgICAgKGZyb20gaHR0cHM6Ly93d3cu
dzMub3JnL1RSL3dlYmF1dGhuLyNzaWduLWNvdW50ZXIpCisgICAgICAgIDYuIHNpZ25hdHVyZSBj
b3VudGVyLgorCisgICAgICAgIEFtb25nIHRoZSBzaXggcG9zc2libGUgZmllbGRzLCBvbmx5IDQu
IGlzIGNob3NlbiB0byBzdG9yZS4gSGVyZSBpcyB3aHk6CisgICAgICAgIEZvciBycEVudGl0eSwg
cnBFbnRpdHkuaWQgd2hpY2ggaXMgZWl0aGVyIHRoZSBkb21haW4gb3IgdGhlIGVUTEQgKyAxIG9m
IHRoZSB3ZWJzaXRlIGlzCisgICAgICAgIHN1ZmZpY2llbnQgZW5vdWdoIHRvIGVpdGhlciBjbGFz
c2lmeSB0aGUgY3JlZGVudGlhbCBvciBzZXJ2aW5nIHRoZSBVSS4gQWxzbywgdGhpcyBpcyB0aGUg
b25seQorICAgICAgICB0cnVzdHdvcnRoeSBpbmZvcm1hdGlvbiB0aGF0IHRoZSBVc2VyQWdlbnQg
cHJvZHVjZS4gT3RoZXJzIGNvdWxkIHBvdGVudGlhbGx5IGJlIHVzZWQgYnkKKyAgICAgICAgbWFs
aWNpb3VzIHdlYnNpdGVzIGZvciBhdHRhY2tpbmcgdGhlIEtleWNoYWluIG9yIHNwb29maW5nL3Bo
aXNoaW5nIHVzZXJzIHdoZW4gYmVpbmcgZGlzcGxheWVkCisgICAgICAgIGluIHRoZSBVSS4gQWxz
bywgcnBFbml0dHkuaWNvbiBpcyBhIFVSTCB0byB0aGUgd2Vic2l0ZSdzIGZhdmljb24sIHdoaWNo
IGlmIG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBjb3JyZWN0bHkgY2FuIGJlIHVzZWQgZm9yIHRy
YWNraW5nLgorCisgICAgICAgIEZvciB1c2VyRW50aXR5LCB1c2VyRW50aXR5Lm5hbWUgaXMgdGhl
IGh1bWFuIHJlYWRhYmxlIHZlcnNpb24gb2YgdXNlckVudGl0eS5pZCwgYW5kIHRoZXJlZm9yZQor
ICAgICAgICBpcyBjaG9zZW4gdG8gc3RvcmUgc3VjaCB0aGF0IGxhdGVyIG9uIFdlYktpdCBjYW4g
cGFzcyBpdCB0byBVSSBjbGllbnQgdG8gaGVscCB1c2VycyBkaXNhbWJpZ3VhdGUKKyAgICAgICAg
ZGlmZmVyZW50IGNyZWRlbnRpYWxzLiBBbmQgaXQgaXMgbmVjZXNzYXJ5IGFzIHVzZXJFbnRpdHku
aWQgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgaHVtYW4KKyAgICAgICAgcmVhZGFibGUuIE90aGVy
cyBhcmUgYWJhbmRvbmVkIGZvciB0aGUgdmVyeSBzYW1lIHJlYXNvbiBhcyBhYm92ZS4KKworICAg
ICAgICBXZSBoYXJkIGNvZGUgYSB6ZXJvIHZhbHVlIGZvciAnc2lnbmF0dXJlIGNvdW50ZXInLiBX
aGlsZSB0aGlzIGlzIGEgdGhlb3JldGljYWxseSBpbnRlcmVzdGluZworICAgICAgICB0ZWNobmlx
dWUgZm9yIGEgUlAgdG8gZGV0ZWN0IHByaXZhdGUga2V5IGNsb25pbmcsIGl0IGlzIHVubGlrZWx5
IHRvIGJlIHVzZWZ1bCBpbiBwcmFjdGljZS4KKyAgICAgICAgV2Ugc3RvcmUgdGhlIHByaXZhdGUg
a2V5cyBpbiBvdXIgU0VQLiBUaGlzIGNvdW50ZXIgd291bGQgb25seSBiZSBhIG1lYW5pbmdmdWwg
cHJvdGVjdGlvbiBpZgorICAgICAgICBhZHZlcnNhcmllcyB3ZXJlIGFibGUgdG8gZXh0cmFjdCBw
cml2YXRlIGtleSBkYXRhIGZyb20gdGhlIFNFUCB3aXRob3V0IEFwcGxlIG5vdGljaW5nLCBidXQK
KyAgICAgICAgd2VyZSBub3QgYWJsZSB0byBtYW5pcHVsYXRlIHRoaXMgY291bnRlciB0byBmb29s
IHRoZSBSUC4KKworICAgICAgICBJbiB0ZXJtcyBvZiB0aGUgc2NoZW1hLAorICAgICAgICAxKSBS
UCBJRCBpcyBuZWVkZWQgdG8gcXVlcnkgYWxsIGNyZWRlbnRpYWxzIHJlbGF0ZWQsIGFuZCB0aGVy
ZWZvcmUgaXQgbmVlZHMgYSBjb2x1bW4gYW5kIGtTZWNBdHRyTGFiZWwKKyAgICAgICAgaXMgc3Vw
cG9zZWQgdG8gYmUgaHVtYW4gcmVhZGFibGU7CisgICAgICAgIDIpIGtTZWNBdHRyQXBwbGljYXRp
b25MYWJlbCBpcyB0aGUgYXV0byBnZW5lcmF0ZWQgcHJvZ3JhbW1hdGljYWwgaWRlbnRpZmllciBm
b3IgYSBTZWNJdGVtLCBhbmQKKyAgICAgICAgdGhlcmVmb3JlIGlzIHN1aXRhYmxlIGFzIHRoZSBj
cmVkZW50aWFsIElELiBHaXZlbiB0aGUgaW5wdXQgdG8gdGhlIFNIQS0xIGlzIGdlbmVyYXRlZCBi
eSB1cywgYW5kCisgICAgICAgIGl0IGlzIG9ubHkgbmVlZGVkIHRvIGJlIHBvd2VyZnVsIGVub3Vn
aCB0byBiZSB1bmlxdWUgYWNyb3NzIHRoZSBrZXljaGFpbiB3aXRoaW4gYSBkZXZpY2UsIGFuZCBw
b3RlbnRpYWxseQorICAgICAgICB0byBiZSB1bmlxdWUgYWNyb3NzIGRpZmZlcmVudCBvdGhlciBj
cmVkZW50aWFsIElEIGZvciB0aGUgc2FtZSB1c2VyLiBUaGUgU0hBLTEgY29sbGlzaW9uIGF0dGFj
aworICAgICAgICBkb2Vzbid0IHNlZW0gdmFsaWQgaGVyZS4KKyAgICAgICAgMykga1NlY0F0dHJB
cHBsaWNhdGlvblRhZyBpcyB0aGUgb25seSBvdGhlciBjb2x1bW4gS2V5Y2hhaW4gYWxsb3dzIGFw
cGxpY2F0aW9ucyB0byBtb2RpZnkuIFRoZXJlZm9yZSwKKyAgICAgICAgVXNlckVudGl0eS5pZCBh
bmQgVXNlckVudGl0eS5uYW1lIGlzIGJ1bmRsZWQgdG8gdXNlIHRoaXMgc2xvdC4gVGhlIHJlYXNv
biB0byB1c2UgQ0JPUiBoZXJlIGlzIHRoYXQKKyAgICAgICAgaXQgaXMgbW9yZSBmcmllbmRseSB0
aGVuIEpTT04gdG8gZW5jb2RlIGJpbmFyaWVzLCBhbmQgaXQgaXMgdXNlZCB3aWRlbHkgaW4gV2Vi
QXV0aG4uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRo
ZW50aWNhdG9ySW50ZXJuYWw6OnRvQXJyYXlCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpMb2Nh
bEF1dGhlbnRpY2F0b3JJbnRlcm5hbDo6Z2V0RXhpc3RpbmdDcmVkZW50aWFscyk6CisgICAgICAg
IChXZWJLaXQ6OkxvY2FsQXV0aGVudGljYXRvcjo6bWFrZUNyZWRlbnRpYWwpOgorICAgICAgICAo
V2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlclVz
ZXJWZXJpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1dGhlbnRpY2F0b3I6OmNv
bnRpbnVlTWFrZUNyZWRlbnRpYWxBZnRlckF0dGVzdGVkKToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24pOgorICAgICAgICAoV2ViS2l0OjpMb2NhbEF1
dGhlbnRpY2F0b3I6OmRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwgY29uc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24ubW06
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tMb2NhbENvbm5lY3Rpb246OmZpbHRlclJlc3BvbnNlcyBj
b25zdCk6CisKIDIwMjAtMDMtMDUgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbV2ViQXV0aG5dIERvIG5vdCBwZXJmb3JtIEF0dGVzdGF0aW9uIHdpdGggdHlw
ZSBpcyAnbm9uZScKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlLmNwcAppbmRleCAzODg5
M2VlMzY2NGVlZmI5MGVkN2JhMjRkM2U3N2Y4M2IzNDM5MjdmLi4xYzBjMDQxZWNiMzdlOTE4MTY2
YTVhYjNlYzA0ZDllZGZhYjVlMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL0F1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
Y3BwCkBAIC00OCw5ICs0OCw5IEBAIFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+
IEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGNvbnN0CiAgICAgcmV0dXJu
IGNyZWF0ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJhd0lkLmRhdGEoKSwgcmF3SWQuc2l6ZSgpKSwg
QXJyYXlCdWZmZXI6OmNyZWF0ZShhdXRoZW50aWNhdG9yRGF0YS5kYXRhKCksIGF1dGhlbnRpY2F0
b3JEYXRhLnNpemUoKSksIEFycmF5QnVmZmVyOjpjcmVhdGUoc2lnbmF0dXJlLmRhdGEoKSwgc2ln
bmF0dXJlLnNpemUoKSksIFdURk1vdmUodXNlcmhhbmRsZUJ1ZmZlciksIFdURjo6bnVsbG9wdCk7
CiB9CiAKLVJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFy
cmF5QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYgYWNjZXNzQ29udHJv
bCkKK1JlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IEF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZTo6Y3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5
QnVmZmVyPiYmIHVzZXJIYW5kbGUsIFN0cmluZyYmIG5hbWUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYg
YWNjZXNzQ29udHJvbCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUodXNlckhhbmRsZSksIGFj
Y2Vzc0NvbnRyb2wpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UoV1RGTW92ZShyYXdJZCksIFdURk1vdmUodXNlckhhbmRsZSksIFdURk1v
dmUobmFtZSksIGFjY2Vzc0NvbnRyb2wpKTsKIH0KIAogdm9pZCBBdXRoZW50aWNhdG9yQXNzZXJ0
aW9uUmVzcG9uc2U6OnNldEF1dGhlbnRpY2F0b3JEYXRhKFZlY3Rvcjx1aW50OF90PiYmIGF1dGhl
bnRpY2F0b3JEYXRhKQpAQCAtNjYsOSArNjYsMTAgQEAgQXV0aGVudGljYXRvckFzc2VydGlvblJl
c3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYK
IHsKIH0KIAotQXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNz
ZXJ0aW9uUmVzcG9uc2UoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+
JiYgdXNlckhhbmRsZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQorQXV0aGVu
dGljYXRvckFzc2VydGlvblJlc3BvbnNlOjpBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uo
UmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwg
U3RyaW5nJiYgbmFtZSwgU2VjQWNjZXNzQ29udHJvbFJlZiBhY2Nlc3NDb250cm9sKQogICAgIDog
QXV0aGVudGljYXRvclJlc3BvbnNlKFdURk1vdmUocmF3SWQpKQogICAgICwgbV91c2VySGFuZGxl
KFdURk1vdmUodXNlckhhbmRsZSkpCisgICAgLCBtX25hbWUoV1RGTW92ZShuYW1lKSkKICAgICAs
IG1fYWNjZXNzQ29udHJvbChhY2Nlc3NDb250cm9sKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlLmgKaW5kZXggMmIzMDljZjkwMmE2NGU1Y2E4N2E0OTc0ZmJhOThmMjgzYzM1ZGM0
MC4uNWRjZDAzNzUwZjJlYWZjMDBiMzM2ZjFhYTY4YWVjOWI0NTI3Yzc4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9BdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZS5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0
b3JBc3NlcnRpb25SZXNwb25zZSA6IHB1YmxpYyBBdXRoZW50aWNhdG9yUmVzcG9uc2UgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVh
dGUoUmVmPEFycmF5QnVmZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgYXV0aGVudGlj
YXRvckRhdGEsIFJlZjxBcnJheUJ1ZmZlcj4mJiBzaWduYXR1cmUsIFJlZlB0cjxBcnJheUJ1ZmZl
cj4mJiB1c2VySGFuZGxlLCBPcHRpb25hbDxBdXRoZW50aWNhdGlvbkV4dGVuc2lvbnNDbGllbnRP
dXRwdXRzPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZT4gY3JlYXRlKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmF3SWQsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgYXV0aGVudGljYXRvckRhdGEsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgc2lnbmF0dXJlLCAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1c2VySGFuZGxlKTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25z
ZT4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiByYXdJZCwgUmVmPEFycmF5QnVmZmVyPiYmIHVz
ZXJIYW5kbGUsIFNlY0FjY2Vzc0NvbnRyb2xSZWYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWY8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiBjcmVhdGUoUmVmPEFycmF5QnVm
ZmVyPiYmIHJhd0lkLCBSZWY8QXJyYXlCdWZmZXI+JiYgdXNlckhhbmRsZSwgU3RyaW5nJiYgbmFt
ZSwgU2VjQWNjZXNzQ29udHJvbFJlZik7CiAgICAgdmlydHVhbCB+QXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlKCkgPSBkZWZhdWx0OwogCiAgICAgQXJyYXlCdWZmZXIqIGF1dGhlbnRpY2F0
b3JEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9hdXRoZW50aWNhdG9yRGF0YS5nZXQoKTsgfQpAQCAt
NTYsNyArNTYsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgQXV0aGVudGljYXRvckFzc2Vy
dGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8
QXJyYXlCdWZmZXI+JiYsIFJlZlB0cjxBcnJheUJ1ZmZlcj4mJik7Ci0gICAgQXV0aGVudGljYXRv
ckFzc2VydGlvblJlc3BvbnNlKFJlZjxBcnJheUJ1ZmZlcj4mJiwgUmVmPEFycmF5QnVmZmVyPiYm
LCBTZWNBY2Nlc3NDb250cm9sUmVmKTsKKyAgICBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9u
c2UoUmVmPEFycmF5QnVmZmVyPiYmLCBSZWY8QXJyYXlCdWZmZXI+JiYsIFN0cmluZyYmLCBTZWNB
Y2Nlc3NDb250cm9sUmVmKTsKIAogICAgIFR5cGUgdHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IFR5cGU6OkFzc2VydGlvbjsgfQogICAgIEF1dGhlbnRpY2F0b3JSZXNwb25zZURhdGEgZGF0YSgp
IGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9jYm9yL0NCT1JWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9y
L0NCT1JWYWx1ZS5oCmluZGV4IDZhNGM4M2FiYTAzMWMzOGQzNzllNjZiYzkzZWM0N2U1ZjE5MzE3
NjEuLjVlNTM4M2ZhY2Y1ZGZiZDI5Y2YxNTM1NTdjYTU4YjI4ZGI5OTg4NDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmgKQEAgLTE2NCw2
ICsxNjQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NpbXBsZSgpIGNvbnN0IHsgcmV0dXJuIHR5
cGUoKSA9PSBUeXBlOjpTaW1wbGVWYWx1ZTsgfQogICAgIGJvb2wgaXNCb29sKCkgY29uc3QgeyBy
ZXR1cm4gaXNTaW1wbGUoKSAmJiAobV9zaW1wbGVWYWx1ZSA9PSBTaW1wbGVWYWx1ZTo6VHJ1ZVZh
bHVlIHx8IG1fc2ltcGxlVmFsdWUgPT0gU2ltcGxlVmFsdWU6OkZhbHNlVmFsdWUpOyB9CiAKKyAg
ICAvLyBGSVhNRSgxODM1MzUpOiBDb25zaWRlcmluZyBhZGRpbmcgJiYgZ2V0dGVyIGZvciBiZXR0
ZXIgcGVyZm9ybWFuY2UuCiAgICAgLy8gVGhlc2Ugd2lsbCBhbGwgZmF0YWxseSBhc3NlcnQgaWYg
dGhlIHR5cGUgZG9lc24ndCBtYXRjaC4KICAgICBTaW1wbGVWYWx1ZSBnZXRTaW1wbGVWYWx1ZSgp
IGNvbnN0OwogICAgIGJvb2wgZ2V0Qm9vbCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApp
bmRleCA2Mjk1NThmN2ZiZGYwMTJmMWU2NDEzZjc5ZTU0Nzc1YTNjZWQyNTQxLi43OWNmNDVmMWEy
N2Q2ZGQ3YTIzOWJlZGUwZjcxNGZmMWZhOGNiMjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaApA
QCAtNjcsNyArNjcsNyBAQCBzdHJ1Y3QgTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
biB7CiAgICAgICAgIFN0cmluZyBwcml2YXRlS2V5QmFzZTY0OwogICAgICAgICBTdHJpbmcgdXNl
ckNlcnRpZmljYXRlQmFzZTY0OwogICAgICAgICBTdHJpbmcgaW50ZXJtZWRpYXRlQ0FDZXJ0aWZp
Y2F0ZUJhc2U2NDsKLSAgICAgICAgU3RyaW5nIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Cisg
ICAgICAgIFN0cmluZyBwcmVmZXJyZWRDcmVkZW50aWFsSWRCYXNlNjQ7CiAKICAgICAgICAgdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TG9jYWxDb25maWd1cmF0
aW9uPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMTEyLDcgKzExMiw3IEBAIHN0cnVjdCBNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlv
bjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBhY2Nl
cHRBdXRoZW50aWNhdGlvbiA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBwcml2YXRlS2V5QmFzZTY0
IDw8IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFz
ZTY0IDw8IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7CisgICAgZW5jb2RlciA8PCBhY2NlcHRB
dXRoZW50aWNhdGlvbiA8PCBhY2NlcHRBdHRlc3RhdGlvbiA8PCBwcml2YXRlS2V5QmFzZTY0IDw8
IHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NCA8PCBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0
IDw8IHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4KQEAgLTE1MCwxMSArMTUwLDExIEBAIE9wdGlvbmFsPE1vY2tXZWJBdXRoZW50aWNhdGlv
bkNvbmZpZ3VyYXRpb246OkxvY2FsQ29uZmlndXJhdGlvbj4gTW9ja1dlYkF1dGhlbnRpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmVzdWx0LmludGVybWVkaWF0ZUNBQ2VydGlm
aWNhdGVCYXNlNjQgPSBXVEZNb3ZlKCppbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0KTsK
IAotICAgIE9wdGlvbmFsPFN0cmluZz4gcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKLSAgICBk
ZWNvZGVyID4+IHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ7Ci0gICAgaWYgKCFwcmVmZXJyZWRV
c2VyaGFuZGxlQmFzZTY0KQorICAgIE9wdGlvbmFsPFN0cmluZz4gcHJlZmVycmVkQ3JlZGVudGlh
bElkQmFzZTY0OworICAgIGRlY29kZXIgPj4gcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0Owor
ICAgIGlmICghcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0KQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwotICAgIHJlc3VsdC5wcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0ID0gV1RGTW92
ZSgqcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCk7CisgICAgcmVzdWx0LnByZWZlcnJlZENyZWRl
bnRpYWxJZEJhc2U2NCA9IFdURk1vdmUoKnByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NCk7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5pZGwKaW5kZXggYWQx
MzkzNDlhZDJmYzE1Y2FkODNmNmIyZDE2YjA4Mzg2MDNkZWUzNi4uMjA5OTQzMWM2MDQxMDY0NGZl
ZTI5ZTY2YTEzNzcyMThlMWM4ZGJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9Nb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaWRsCkBAIC03
Niw3ICs3Niw3IEBACiAgICAgRE9NU3RyaW5nIHByaXZhdGVLZXlCYXNlNjQ7CiAgICAgRE9NU3Ry
aW5nIHVzZXJDZXJ0aWZpY2F0ZUJhc2U2NDsKICAgICBET01TdHJpbmcgaW50ZXJtZWRpYXRlQ0FD
ZXJ0aWZpY2F0ZUJhc2U2NDsKLSAgICBET01TdHJpbmcgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2
NDsKKyAgICBET01TdHJpbmcgcHJlZmVycmVkQ3JlZGVudGlhbElkQmFzZTY0OwogfTsKIAogWwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29j
b2EvTG9jYWxBdXRoZW50aWNhdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaAppbmRleCAyOGFlZWM4YWQ4NDQw
OWYwMjRlZTA0MjNlNjkxZjRhODgyNmVmNTJiLi4zNTE4YzlhZmE3OGU0ZjY3NDA5NjFmYzg5MTc4
YWYxYjg2MGJkOTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRo
ZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IuaApA
QCAtNjcsMTAgKzY3LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb250aW51ZUdldEFzc2VydGlv
bkFmdGVyVXNlclZlcmlmaWNhdGlvbihSZWY8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlv
blJlc3BvbnNlPiYmLCBMb2NhbENvbm5lY3Rpb246OlVzZXJWZXJpZmljYXRpb24sIExBQ29udGV4
dCAqKTsKIAogICAgIHZvaWQgcmVjZWl2ZUV4Y2VwdGlvbihXZWJDb3JlOjpFeGNlcHRpb25EYXRh
JiYsIFdlYkF1dGhlbnRpY2F0aW9uU3RhdHVzID0gV2ViQXV0aGVudGljYXRpb25TdGF0dXM6OkxB
RXJyb3IpIGNvbnN0OworICAgIHZvaWQgZGVsZXRlRHVwbGljYXRlQ3JlZGVudGlhbCgpIGNvbnN0
OwogCiAgICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJbml0IH07CiAgICAgVW5pcXVlUmVmPExv
Y2FsQ29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIC8vIEZJWE1FKDE4MzUzNCk6IENvbWJp
bmUgdGhlc2UgdHdvLgogICAgIEhhc2hTZXQ8UmVmPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4+IG1fYXNzZXJ0aW9uUmVzcG9uc2VzOworICAgIFZlY3RvcjxSZWY8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPj4gbV9leGlzdGluZ0NyZWRlbnRp
YWxzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3Iu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2Nh
bEF1dGhlbnRpY2F0b3IubW0KaW5kZXggNDc3ZDNkMzQ1NWM1Yjc3NmM1ZTdmMDkwNzAzNjcyMjIy
Yzc1ZDQxMC4uMTc4YzExMjc1MTlkNzcwMTY2ZDkwMDVkZjNhYmZiNDA5OWYzNzcxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9j
YWxBdXRoZW50aWNhdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQpAQCAtMzEsNiArMzEsNyBAQAog
I2ltcG9ydCA8U2VjdXJpdHkvU2VjSXRlbS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNh
dG9yQXNzZXJ0aW9uUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRvckF0
dGVzdGF0aW9uUmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvQ0JPUlJlYWRlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9DQk9SV3JpdGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V4Y2VwdGlvbkRh
dGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cy5oPgpAQCAtNDcsNiArNDgsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwordXNpbmcgQ0JPUiA9IGNib3I6OkNCT1JWYWx1ZTsKIAogbmFtZXNwYWNl
IExvY2FsQXV0aGVudGljYXRvckludGVybmFsIHsKIApAQCAtNTUsMTIgKzU3LDE2IEBAIGNvbnN0
IHVpbnQ4X3QgbWFrZUNyZWRlbnRpYWxGbGFncyA9IDBiMDEwMDAxMDE7IC8vIFVQLCBVViBhbmQg
QVQgYXJlIHNldC4KIGNvbnN0IHVpbnQ4X3QgZ2V0QXNzZXJ0aW9uRmxhZ3MgPSAwYjAwMDAwMTAx
OyAvLyBVUCBhbmQgVVYgYXJlIHNldC4KIC8vIENyZWRlbnRpYWwgSUQgaXMgY3VycmVudGx5IFNI
QS0xIG9mIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkuCiBjb25zdCB1aW50MTZfdCBjcmVk
ZW50aWFsSWRMZW5ndGggPSAyMDsKK2NvbnN0IGNoYXIqIGNvbnN0IHVzZXJFbnRpdHlJZEtleSA9
ICJpZCI7Citjb25zdCBjaGFyKiBjb25zdCB1c2VyRW50aXR5TmFtZUtleSA9ICJuYW1lIjsKK2Nv
bnN0IHVpbnQ2NF90IGNvdW50ZXIgPSAwOwogCiBzdGF0aWMgaW5saW5lIGJvb2wgZW1wdHlUcmFu
c3BvcnRzT3JDb250YWluKGNvbnN0IFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiYgdHJh
bnNwb3J0cywgQXV0aGVudGljYXRvclRyYW5zcG9ydCB0YXJnZXQpCiB7CiAgICAgcmV0dXJuIHRy
YW5zcG9ydHMuaXNFbXB0eSgpID8gdHJ1ZSA6IHRyYW5zcG9ydHMuY29udGFpbnModGFyZ2V0KTsK
IH0KIAorLy8gRklYTUUoMTgzNTM0KTogRmluZCBhIGJldHRlciB3YXkgb2YgY29tcGFyaW5nIGNy
ZWRlbnRpYWwgaWQuIERvaW5nIGl0IHdpdGggYXJyYXkgc2VlbXMgZmluZSBnaXZlbiB0aGUgbGlz
dCBzaG91bGQgYmUgc21hbGwuCiBzdGF0aWMgaW5saW5lIEhhc2hTZXQ8U3RyaW5nPiBwcm9kdWNl
SGFzaFNldChjb25zdCBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+JiBjcmVk
ZW50aWFsRGVzY3JpcHRvcnMpCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IHJlc3VsdDsKQEAgLTk4
LDYgKzEwNCwxMSBAQCBzdGF0aWMgaW5saW5lIFJlZjxBcnJheUJ1ZmZlcj4gdG9BcnJheUJ1ZmZl
cihOU0RhdGEgKmRhdGEpCiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoKTsKIH0KIAor
c3RhdGljIGlubGluZSBSZWY8QXJyYXlCdWZmZXI+IHRvQXJyYXlCdWZmZXIoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBkYXRhKQoreworICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7Cit9CisKIC8vIEZJWE1FKDxyZGFyOi8vcHJvYmxlbS82MDEw
ODEzMT4pOiBSZW1vdmUgdGhpcyB3aGl0ZWxpc3Qgb25jZSB0ZXN0aW5nIGlzIGNvbXBsZXRlLgog
c3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgd2hpdGVsaXN0ZWRScElkKCkKIHsKQEAgLTEw
OSw2ICsxMjAsNTcgQEAgc3RhdGljIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgd2hpdGVsaXN0ZWRS
cElkKCkKICAgICByZXR1cm4gd2hpdGVsaXN0ZWRScElkOwogfQogCitzdGF0aWMgT3B0aW9uYWw8
VmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+Pj4gZ2V0RXhpc3RpbmdD
cmVkZW50aWFscyhjb25zdCBTdHJpbmcmIHJwSWQpCit7CisgICAgLy8gU2VhcmNoIEtleWNoYWlu
IGZvciBleGlzdGluZyBjcmVkZW50aWFsIG1hdGNoZWQgdGhlIFJQIElELgorICAgIE5TRGljdGlv
bmFyeSAqcXVlcnkgPSBAeworICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5
LAorICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2
YXRlLAorICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogcnBJZCwKKyAgICAgICAgKGlkKWtTZWNS
ZXR1cm5BdHRyaWJ1dGVzOiBAWUVTLAorICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6IChpZClr
U2VjTWF0Y2hMaW1pdEFsbCwKKyNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJTikKKyAg
ICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlvbktleWNoYWluOiBAWUVTCisjZWxzZQorICAg
ICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUworI2VuZGlmCisgICAgfTsKKyAgICBDRlR5
cGVSZWYgYXR0cmlidXRlc0FycmF5UmVmID0gbnVsbHB0cjsKKyAgICBPU1N0YXR1cyBzdGF0dXMg
PSBTZWNJdGVtQ29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpcXVlcnksICZh
dHRyaWJ1dGVzQXJyYXlSZWYpOworICAgIGlmIChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0
ZW1Ob3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBhdXRvIHJldGFp
bkF0dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKKyAgICBOU0Fy
cmF5ICpuc0F0dHJpYnV0ZXNBcnJheSA9IChOU0FycmF5ICopYXR0cmlidXRlc0FycmF5UmVmOwor
CisgICAgVmVjdG9yPFJlZjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+PiByZXN1bHQ7
CisgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnNBdHRyaWJ1dGVzQXJyYXkuY291
bnQpOworICAgIGZvciAoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1dGVzIGluIG5zQXR0cmlidXRlc0Fy
cmF5KSB7CisgICAgICAgIGF1dG8gZGVjb2RlZFJlc3BvbnNlID0gY2Jvcjo6Q0JPUlJlYWRlcjo6
cmVhZCh0b1ZlY3RvcihhdHRyaWJ1dGVzWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSkpOwor
ICAgICAgICBpZiAoIWRlY29kZWRSZXNwb25zZSB8fCAhZGVjb2RlZFJlc3BvbnNlLT5pc01hcCgp
KSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAgYXV0byYgcmVzcG9uc2VNYXAgPSBk
ZWNvZGVkUmVzcG9uc2UtPmdldE1hcCgpOworCisgICAgICAgIGF1dG8gaXQgPSByZXNwb25zZU1h
cC5maW5kKENCT1IodXNlckVudGl0eUlkS2V5KSk7CisgICAgICAgIGlmIChpdCA9PSByZXNwb25z
ZU1hcC5lbmQoKSB8fCAhaXQtPnNlY29uZC5pc0J5dGVTdHJpbmcoKSkgeworICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICB9CisgICAgICAgIGF1dG8mIHVzZXJIYW5kbGUgPSBpdC0+c2Vjb25kLmdldEJ5dGVT
dHJpbmcoKTsKKworICAgICAgICBpdCA9IHJlc3BvbnNlTWFwLmZpbmQoQ0JPUih1c2VyRW50aXR5
TmFtZUtleSkpOworICAgICAgICBpZiAoaXQgPT0gcmVzcG9uc2VNYXAuZW5kKCkgfHwgIWl0LT5z
ZWNvbmQuaXNTdHJpbmcoKSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIGF1dG8m
IHVzZXJuYW1lID0gaXQtPnNlY29uZC5nZXRTdHJpbmcoKTsKKworICAgICAgICByZXN1bHQudW5j
aGVja2VkQXBwZW5kKEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKHRvQXJy
YXlCdWZmZXIoYXR0cmlidXRlc1soaWQpa1NlY0F0dHJBcHBsaWNhdGlvbkxhYmVsXSksIHRvQXJy
YXlCdWZmZXIodXNlckhhbmRsZSksIFN0cmluZyh1c2VybmFtZSksIChfX2JyaWRnZSBTZWNBY2Nl
c3NDb250cm9sUmVmKWF0dHJpYnV0ZXNbKGlkKWtTZWNBdHRyQWNjZXNzQ29udHJvbF0pKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBMb2NhbEF1dGhlbnRpY2F0b3JJbnRl
cm5hbAogCiBMb2NhbEF1dGhlbnRpY2F0b3I6OkxvY2FsQXV0aGVudGljYXRvcihVbmlxdWVSZWY8
TG9jYWxDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24pCkBAIC0xMjcsNiArMTg5LDcgQEAgdm9pZCBM
b2NhbEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICAvLyBTa2lwIFN0ZXAgNC01
IGFzIHJlcXVpcmVSZXNpZGVudEtleSBhbmQgcmVxdWlyZVVzZXJWZXJpZmljYXRpb24gYXJlIGVu
Zm9yY2VkLgogICAgIC8vIFNraXAgU3RlcCA5IGFzIGV4dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0
ZWQgeWV0LgogICAgIC8vIFN0ZXAgOCBpcyBpbXBsaWNpdGx5IGNhcHR1cmVkIGJ5IGFsbCBVbmtu
b3duRXJyb3IgZXhjZXB0aW9uIHJlY2VpdmVSZXNwb25kcy4KKyAgICAvLyBTa2lwIFN0ZXAgMTAg
YXMgY291bnRlciBpcyBjb25zdGFudGx5IDAuCiAgICAgLy8gU3RlcCAyLgogICAgIGlmIChub3RG
b3VuZCA9PSBjcmVhdGlvbk9wdGlvbnMucHViS2V5Q3JlZFBhcmFtcy5maW5kTWF0Y2hpbmcoW10g
KGF1dG8mIHB1YktleUNyZWRQYXJhbSkgewogICAgICAgICByZXR1cm4gcHViS2V5Q3JlZFBhcmFt
LnR5cGUgPT0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBwdWJLZXlDcmVk
UGFyYW0uYWxnID09IENPU0U6OkVTMjU2OwpAQCAtMTM2LDM3ICsxOTksMjMgQEAgdm9pZCBMb2Nh
bEF1dGhlbnRpY2F0b3I6Om1ha2VDcmVkZW50aWFsKCkKICAgICB9CiAKICAgICAvLyBTdGVwIDMu
CisgICAgYXV0byBleGlzdGluZ0NyZWRlbnRpYWxzID0gZ2V0RXhpc3RpbmdDcmVkZW50aWFscyhj
cmVhdGlvbk9wdGlvbnMucnAuaWQpOworICAgIGlmICghZXhpc3RpbmdDcmVkZW50aWFscykgewor
ICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3Vs
ZG4ndCBnZXQgZXhpc3RpbmcgY3JlZGVudGlhbHMiKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBtX2V4aXN0aW5nQ3JlZGVudGlhbHMgPSBXVEZNb3ZlKCpleGlzdGluZ0NyZWRlbnRp
YWxzKTsKKwogICAgIGF1dG8gZXhjbHVkZUNyZWRlbnRpYWxJZHMgPSBwcm9kdWNlSGFzaFNldChj
cmVhdGlvbk9wdGlvbnMuZXhjbHVkZUNyZWRlbnRpYWxzKTsKICAgICBpZiAoIWV4Y2x1ZGVDcmVk
ZW50aWFsSWRzLmlzRW1wdHkoKSkgewotICAgICAgICAvLyBTZWFyY2ggS2V5Y2hhaW4gZm9yIHRo
ZSBSUCBJRC4KLSAgICAgICAgTlNEaWN0aW9uYXJ5ICpxdWVyeSA9IEB7Ci0gICAgICAgICAgICAo
aWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAotICAgICAgICAgICAgKGlkKWtTZWNBdHRy
S2V5Q2xhc3M6IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAgICAgICAgICAgIChpZClr
U2VjQXR0ckxhYmVsOiBjcmVhdGlvbk9wdGlvbnMucnAuaWQsCi0gICAgICAgICAgICAoaWQpa1Nl
Y1JldHVybkF0dHJpYnV0ZXM6IEBZRVMsCi0gICAgICAgICAgICAoaWQpa1NlY01hdGNoTGltaXQ6
IChpZClrU2VjTWF0Y2hMaW1pdEFsbCwKLSNpZiBIQVZFKERBVEFfUFJPVEVDVElPTl9LRVlDSEFJ
TikKLSAgICAgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXljaGFpbjogQFlFUwot
I2Vsc2UKLSAgICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVTCi0jZW5kaWYKLSAg
ICAgICAgfTsKLSAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJlZiA9IG51bGxwdHI7
Ci0gICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1Db3B5TWF0Y2hpbmcoKF9fYnJpZGdl
IENGRGljdGlvbmFyeVJlZilxdWVyeSwgJmF0dHJpYnV0ZXNBcnJheVJlZik7Ci0gICAgICAgIGlm
IChzdGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkgewotICAgICAgICAgICAg
cmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVl
cnkgS2V5Y2hhaW46ICIsIHN0YXR1cykgfSk7CisgICAgICAgIGlmIChub3RGb3VuZCAhPSBtX2V4
aXN0aW5nQ3JlZGVudGlhbHMuZmluZE1hdGNoaW5nKFsmZXhjbHVkZUNyZWRlbnRpYWxJZHNdIChh
dXRvJiBjcmVkZW50aWFsKSB7CisgICAgICAgICAgICBhdXRvKiByYXdJZCA9IGNyZWRlbnRpYWwt
PnJhd0lkKCk7CisgICAgICAgICAgICBBU1NFUlQocmF3SWQpOworICAgICAgICAgICAgcmV0dXJu
IGV4Y2x1ZGVDcmVkZW50aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPihyYXdJZC0+ZGF0YSgpKSwgcmF3SWQtPmJ5dGVMZW5ndGgoKSkpOworICAgICAg
ICB9KSkgeworICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IE5vdEFsbG93ZWRFcnJvciwg
IkF0IGxlYXN0IG9uZSBjcmVkZW50aWFsIG1hdGNoZXMgYW4gZW50cnkgb2YgdGhlIGV4Y2x1ZGVD
cmVkZW50aWFscyBsaXN0IGluIHRoZSBwbGF0Zm9ybSBhdHRhY2hlZCBhdXRoZW50aWNhdG9yLiJf
cyB9LCBXZWJBdXRoZW50aWNhdGlvblN0YXR1czo6TEFFeGNsdWRlQ3JlZGVudGlhbHNNYXRjaGVk
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBhdXRvIHJldGFpbkF0
dHJpYnV0ZXNBcnJheSA9IGFkb3B0Q0YoYXR0cmlidXRlc0FycmF5UmVmKTsKLQotICAgICAgICAv
LyBGSVhNRTogTmVlZCB0byBvYnRhaW4gdXNlciBjb25zZW50IGFuZCB0aGVuIHJldHVybiBkaWZm
ZXJlbnQgZXJyb3IgYWNjb3JkaW5nIHRvIHRoZSByZXN1bHQuCi0gICAgICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWYpIHsK
LSAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNbKGlkKWtT
ZWNBdHRyQXBwbGljYXRpb25MYWJlbF07Ci0gICAgICAgICAgICBpZiAoZXhjbHVkZUNyZWRlbnRp
YWxJZHMuY29udGFpbnMoU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG5zQ3Jl
ZGVudGlhbElkLmJ5dGVzKSwgbnNDcmVkZW50aWFsSWQubGVuZ3RoKSkpIHsKLSAgICAgICAgICAg
ICAgICByZWNlaXZlRXhjZXB0aW9uKHsgTm90QWxsb3dlZEVycm9yLCAiQXQgbGVhc3Qgb25lIGNy
ZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3Qg
aW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIl9zIH0sIFdlYkF1dGhlbnRp
Y2F0aW9uU3RhdHVzOjpMQUV4Y2x1ZGVDcmVkZW50aWFsc01hdGNoZWQpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KIAogICAgIC8vIFN0
ZXAgNi4KQEAgLTIyOCwzNSArMjc3LDIyIEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250
aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVyaWZpY2F0aW9uKFNlY0FjY2Vzc0NvCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRSgxODM1MzMpOiBBIHNpbmdsZSBrU2Vj
Q2xhc3NLZXkgaXRlbSBjb3VsZG4ndCBzdG9yZSBhbGwgbWV0YSBkYXRhLiBUaGUgZm9sbG93aW5n
IHNjaGVtYSBpcyBhIHRlbnRhdGl2ZSBzb2x1dGlvbgotICAgIC8vIHRvIGFjY29tbW9kYXRlIHRo
ZSBtb3N0IGltcG9ydGFudCBtZXRhIGRhdGEsIGkuZS4gUlAgSUQsIENyZWRlbnRpYWwgSUQsIGFu
ZCB1c2VyaGFuZGxlLgorICAgIC8vIEhlcmUgaXMgdGhlIGtleWNoYWluIHNjaGVtYS4KICAgICAv
LyBrU2VjQXR0ckxhYmVsOiBSUCBJRAogICAgIC8vIGtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDog
Q3JlZGVudGlhbCBJRCAoYXV0by1nZW4gYnkgS2V5Y2hhaW4pCi0gICAgLy8ga1NlY0F0dHJBcHBs
aWNhdGlvblRhZzogdXNlcmhhbmRsZQorICAgIC8vIGtTZWNBdHRyQXBwbGljYXRpb25UYWc6IHsg
ImlkIjogVXNlckVudGl0eS5pZCwgIm5hbWUiOiBVc2VyRW50aXR5Lm5hbWUgfSAoQ0JPUiBlbmNv
ZGVkKQogICAgIC8vIE5vdGVkLCB0aGUgdmFsZSBvZiBrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWwg
aXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgdGhlIEtleWNoYWluLCB3aGljaCBpcyBhIFNI
QS0xIGhhc2ggb2YKLSAgICAvLyB0aGUgcHVibGljIGtleS4gV2UgYm9ycm93IGl0IGRpcmVjdGx5
IGZvciBub3cgdG8gd29ya2Fyb3VuZCB0aGUgc3RhdGVkIGxpbWl0YXRpb25zLgorICAgIC8vIHRo
ZSBwdWJsaWMga2V5LgogICAgIGNvbnN0IGF1dG8mIHNlY0F0dHJMYWJlbCA9IGNyZWF0aW9uT3B0
aW9ucy5ycC5pZDsKLSAgICBhdXRvIHNlY0F0dHJBcHBsaWNhdGlvblRhZyA9IHRvTlNEYXRhKGNy
ZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yKTsKIAotICAgIC8vIFN0ZXAgNy41LgotICAgIC8v
IEZhaWx1cmVzIGFmdGVyIHRoaXMgcG9pbnQgY291bGQgYmxvY2sgdXNlcnMnIGFjY291bnRzIGZv
cmV2ZXIuIFNob3VsZCB3ZSBmb2xsb3cgdGhlIHNwZWM/Ci0gICAgTlNEaWN0aW9uYXJ5KiBkZWxl
dGVRdWVyeSA9IEB7Ci0gICAgICAgIChpZClrU2VjQ2xhc3M6IChpZClrU2VjQ2xhc3NLZXksCi0g
ICAgICAgIChpZClrU2VjQXR0ckxhYmVsOiBzZWNBdHRyTGFiZWwsCi0gICAgICAgIChpZClrU2Vj
QXR0ckFwcGxpY2F0aW9uVGFnOiBzZWNBdHRyQXBwbGljYXRpb25UYWcuZ2V0KCksCi0jaWYgSEFW
RShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAgIChpZClrU2VjVXNlRGF0YVByb3Rl
Y3Rpb25LZXljaGFpbjogQFlFUwotI2Vsc2UKLSAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdhY3k6
IEBZRVMKLSNlbmRpZgotICAgIH07Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbURlbGV0
ZSgoX19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKWRlbGV0ZVF1ZXJ5KTsKLSAgICBpZiAoc3RhdHVz
ICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAgcmVjZWl2ZUV4Y2Vw
dGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZGVsZXRlIG9sZGVyIGNy
ZWRlbnRpYWw6ICIsIHN0YXR1cykgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY2Jv
cjo6Q0JPUlZhbHVlOjpNYXBWYWx1ZSB1c2VyRW50aXR5TWFwOworICAgIHVzZXJFbnRpdHlNYXBb
Y2Jvcjo6Q0JPUlZhbHVlKHVzZXJFbnRpdHlJZEtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNyZWF0
aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yKTsKKyAgICB1c2VyRW50aXR5TWFwW2Nib3I6OkNCT1JW
YWx1ZSh1c2VyRW50aXR5TmFtZUtleSldID0gY2Jvcjo6Q0JPUlZhbHVlKGNyZWF0aW9uT3B0aW9u
cy51c2VyLm5hbWUpOworICAgIGF1dG8gdXNlckVudGl0eSA9IGNib3I6OkNCT1JXcml0ZXI6Ondy
aXRlKGNib3I6OkNCT1JWYWx1ZShXVEZNb3ZlKHVzZXJFbnRpdHlNYXApKSk7CisgICAgQVNTRVJU
KHVzZXJFbnRpdHkpOworICAgIGF1dG8gc2VjQXR0ckFwcGxpY2F0aW9uVGFnID0gdG9OU0RhdGEo
KnVzZXJFbnRpdHkpOwogCi0gICAgLy8gU3RlcCA3LjEtNy40LgorICAgIC8vIFN0ZXAgNy4KICAg
ICAvLyBUaGUgYWJvdmUtdG8tY3JlYXRlIHByaXZhdGUga2V5IHdpbGwgYmUgaW5zZXJ0ZWQgaW50
byBrZXljaGFpbiB3aGlsZSB1c2luZyBTRVAuCiAgICAgYXV0byBwcml2YXRlS2V5ID0gbV9jb25u
ZWN0aW9uLT5jcmVhdGVDcmVkZW50aWFsUHJpdmF0ZUtleShjb250ZXh0LCBhY2Nlc3NDb250cm9s
UmVmLCBzZWNBdHRyTGFiZWwsIHNlY0F0dHJBcHBsaWNhdGlvblRhZy5nZXQoKSk7CiAgICAgaWYg
KCFwcml2YXRlS2V5KSB7CkBAIC0yNjQsNTggKzMwMCw1NCBAQCB2b2lkIExvY2FsQXV0aGVudGlj
YXRvcjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nl
c3NDbwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4g
cHVibGljS2V5RGF0YVJlZjsKKyAgICB7CisgICAgICAgIGF1dG8gcHVibGljS2V5ID0gYWRvcHRD
RihTZWNLZXlDb3B5UHVibGljS2V5KHByaXZhdGVLZXkuZ2V0KCkpKTsKKyAgICAgICAgQ0ZFcnJv
clJlZiBlcnJvclJlZiA9IG51bGxwdHI7CisgICAgICAgIHB1YmxpY0tleURhdGFSZWYgPSBhZG9w
dENGKFNlY0tleUNvcHlFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHB1YmxpY0tleS5nZXQoKSwgJmVy
cm9yUmVmKSk7CisgICAgICAgIGF1dG8gcmV0YWluRXJyb3IgPSBhZG9wdENGKGVycm9yUmVmKTsK
KyAgICAgICAgaWYgKGVycm9yUmVmKSB7CisgICAgICAgICAgICByZWNlaXZlRXhjZXB0aW9uKHsg
VW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJDb3VsZG4ndCBleHBvcnQgdGhlIHB1YmxpYyBrZXk6
ICIsIFN0cmluZygoKE5TRXJyb3IqKWVycm9yUmVmKS5sb2NhbGl6ZWREZXNjcmlwdGlvbikpIH0p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgoKE5TRGF0
YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkpLmxlbmd0aCA9PSAoMSArIDIgKiBFUzI1NkZpZWxk
RWxlbWVudExlbmd0aCkpOyAvLyAwNCB8IFggfCBZCisgICAgfQorICAgIE5TRGF0YSAqbnNQdWJs
aWNLZXlEYXRhID0gKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCk7CisKKyAgICAvLyBR
dWVyeSBjcmVkZW50aWFsSWQgaW4gdGhlIGtleWNoYWluIGNvdWxkIGJlIHJhY3kgYXMgaXQgaXMg
dGhlIG9ubHkgdW5pcXVlIGlkZW50aWZpZXIKKyAgICAvLyBvZiB0aGUga2V5IGl0ZW0uIEluc3Rl
YWQgd2UgY2FsY3VsYXRlIHRoYXQsIGFuZCBleGFtaW5lIGl0cyBlcXVhaXR5IGluIERFQlVHIGJ1
aWxkLgogICAgIFZlY3Rvcjx1aW50OF90PiBjcmVkZW50aWFsSWQ7CiAgICAgeworICAgICAgICBh
dXRvIGRpZ2VzdCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6
OkFsZ29yaXRobTo6U0hBXzEpOworICAgICAgICBkaWdlc3QtPmFkZEJ5dGVzKG5zUHVibGljS2V5
RGF0YS5ieXRlcywgbnNQdWJsaWNLZXlEYXRhLmxlbmd0aCk7CisgICAgICAgIGNyZWRlbnRpYWxJ
ZCA9IGRpZ2VzdC0+Y29tcHV0ZUhhc2goKTsKKworI2lmbmRlZiBOREVCVUcKICAgICAgICAgTlNE
aWN0aW9uYXJ5ICpjcmVkZW50aWFsSWRRdWVyeSA9IEB7CiAgICAgICAgICAgICAoaWQpa1NlY0Ns
YXNzOiAoaWQpa1NlY0NsYXNzS2V5LAogICAgICAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6
IChpZClrU2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKICAgICAgICAgICAgIChpZClrU2VjQXR0ckxh
YmVsOiBzZWNBdHRyTGFiZWwsCi0gICAgICAgICAgICAoaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRh
Zzogc2VjQXR0ckFwcGxpY2F0aW9uVGFnLmdldCgpLAotICAgICAgICAgICAgKGlkKWtTZWNSZXR1
cm5BdHRyaWJ1dGVzOiBAWUVTLAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25M
YWJlbDogdG9OU0RhdGEoY3JlZGVudGlhbElkKS5nZXQoKSwKICNpZiBIQVZFKERBVEFfUFJPVEVD
VElPTl9LRVlDSEFJTikKICAgICAgICAgICAgIChpZClrU2VjVXNlRGF0YVByb3RlY3Rpb25LZXlj
aGFpbjogQFlFUwogI2Vsc2UKICAgICAgICAgICAgIChpZClrU2VjQXR0ck5vTGVnYWN5OiBAWUVT
CiAjZW5kaWYKICAgICAgICAgfTsKLSAgICAgICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNSZWYgPSBu
dWxscHRyOwotICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChf
X2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnksICZhdHRyaWJ1dGVzUmVm
KTsKLSAgICAgICAgaWYgKHN0YXR1cykgewotICAgICAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7
IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IENyZWRlbnRpYWwgSUQ6ICIs
IHN0YXR1cykgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYXV0
byByZXRhaW5BdHRyaWJ1dGVzID0gYWRvcHRDRihhdHRyaWJ1dGVzUmVmKTsKLQotICAgICAgICBO
U0RpY3Rpb25hcnkgKm5zQXR0cmlidXRlcyA9IChOU0RpY3Rpb25hcnkgKilhdHRyaWJ1dGVzUmVm
OwotICAgICAgICBjcmVkZW50aWFsSWQgPSB0b1ZlY3Rvcihuc0F0dHJpYnV0ZXNbKGlkKWtTZWNB
dHRyQXBwbGljYXRpb25MYWJlbF0pOworICAgICAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVt
Q29weU1hdGNoaW5nKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpY3JlZGVudGlhbElkUXVlcnks
IG51bGxwdHIpOworICAgICAgICBBU1NFUlQoIXN0YXR1cyk7CisjZW5kaWYgLy8gTkRFQlVHCiAg
ICAgfQogCi0gICAgLy8gU3RlcCAxMC4KLSAgICAvLyBGSVhNRSgxODM1MzMpOiBzdG9yZSB0aGUg
Y291bnRlci4KLSAgICB1aW50MzJfdCBjb3VudGVyID0gMDsKLQogICAgIC8vIFN0ZXAgMTEuIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJhdXRobi8jYXR0ZXN0ZWQtY3JlZGVudGlhbC1kYXRhCiAg
ICAgLy8gY3JlZGVudGlhbFB1YmxpY0tleQogICAgIFZlY3Rvcjx1aW50OF90PiBjb3NlUHVibGlj
S2V5OwogICAgIHsKLSAgICAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcHVibGljS2V5RGF0YVJl
ZjsKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byBwdWJsaWNLZXkgPSBhZG9wdENGKFNlY0tl
eUNvcHlQdWJsaWNLZXkocHJpdmF0ZUtleS5nZXQoKSkpOwotICAgICAgICAgICAgQ0ZFcnJvclJl
ZiBlcnJvclJlZiA9IG51bGxwdHI7Ci0gICAgICAgICAgICBwdWJsaWNLZXlEYXRhUmVmID0gYWRv
cHRDRihTZWNLZXlDb3B5RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihwdWJsaWNLZXkuZ2V0KCksICZl
cnJvclJlZikpOwotICAgICAgICAgICAgYXV0byByZXRhaW5FcnJvciA9IGFkb3B0Q0YoZXJyb3JS
ZWYpOwotICAgICAgICAgICAgaWYgKGVycm9yUmVmKSB7Ci0gICAgICAgICAgICAgICAgcmVjZWl2
ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZXhwb3J0IHRo
ZSBwdWJsaWMga2V5OiAiLCBTdHJpbmcoKChOU0Vycm9yKillcnJvclJlZikubG9jYWxpemVkRGVz
Y3JpcHRpb24pKSB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBBU1NFUlQoKChOU0RhdGEgKilwdWJsaWNLZXlEYXRhUmVmLmdldCgpKS5sZW5n
dGggPT0gKDEgKyAyICogRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpKTsgLy8gMDQgfCBYIHwgWQot
ICAgICAgICB9Ci0KICAgICAgICAgLy8gQ09TRSBFbmNvZGluZwogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4geChFUzI1NkZpZWxkRWxlbWVudExlbmd0aCk7Ci0gICAgICAgIFsoTlNEYXRhICopcHVi
bGljS2V5RGF0YVJlZi5nZXQoKSBnZXRCeXRlczogeC5kYXRhKCkgcmFuZ2U6TlNNYWtlUmFuZ2Uo
MSwgRVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAgICAgICAgW25zUHVibGljS2V5RGF0YSBn
ZXRCeXRlczogeC5kYXRhKCkgcmFuZ2U6TlNNYWtlUmFuZ2UoMSwgRVMyNTZGaWVsZEVsZW1lbnRM
ZW5ndGgpXTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHkoRVMyNTZGaWVsZEVsZW1lbnRMZW5n
dGgpOwotICAgICAgICBbKE5TRGF0YSAqKXB1YmxpY0tleURhdGFSZWYuZ2V0KCkgZ2V0Qnl0ZXM6
IHkuZGF0YSgpIHJhbmdlOk5TTWFrZVJhbmdlKDEgKyBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCwg
RVMyNTZGaWVsZEVsZW1lbnRMZW5ndGgpXTsKKyAgICAgICAgW25zUHVibGljS2V5RGF0YSBnZXRC
eXRlczogeS5kYXRhKCkgcmFuZ2U6TlNNYWtlUmFuZ2UoMSArIEVTMjU2RmllbGRFbGVtZW50TGVu
Z3RoLCBFUzI1NkZpZWxkRWxlbWVudExlbmd0aCldOwogICAgICAgICBjb3NlUHVibGljS2V5ID0g
ZW5jb2RlRVMyNTZQdWJsaWNLZXlBc0NCT1IoV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSk7CiAgICAg
fQogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM4MzIwNTEyKTogRGVmaW5lIEFwcGxlIEFB
R1VJRC4KQEAgLTMyNiw2ICszNTgsOCBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogCiAgICAg
Ly8gU2tpcCBBcHBsZSBBdHRlc3RhdGlvbiBmb3Igbm9uZSBhdHRlc3RhdGlvbiwgYW5kIG5vbiB3
aGl0ZWxpc3RlZCBSUCBJRCBmb3Igbm93LgogICAgIGlmIChjcmVhdGlvbk9wdGlvbnMuYXR0ZXN0
YXRpb24gPT0gQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSB8fCAhd2hpdGVs
aXN0ZWRScElkKCkuY29udGFpbnMoY3JlYXRpb25PcHRpb25zLnJwLmlkKSkgeworICAgICAgICBk
ZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsKCk7CisKICAgICAgICAgYXV0byBhdHRlc3RhdGlvbk9i
amVjdCA9IGJ1aWxkQXR0ZXN0YXRpb25PYmplY3QoV1RGTW92ZShhdXRoRGF0YSksICIiLCB7IH0s
IEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUpOwogICAgICAgICByZWNlaXZl
UmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRlbnRp
YWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzcwLDYgKzQw
NCw3IEBAIHZvaWQgTG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0
ZXJBdHRlc3RlZChWZWN0b3I8dWludDhfdD4mJiBjCiAgICAgfQogICAgIGF1dG8gYXR0ZXN0YXRp
b25PYmplY3QgPSBidWlsZEF0dGVzdGF0aW9uT2JqZWN0KFdURk1vdmUoYXV0aERhdGEpLCAiYXBw
bGUiLCBXVEZNb3ZlKGF0dGVzdGF0aW9uU3RhdGVtZW50TWFwKSwgY3JlYXRpb25PcHRpb25zLmF0
dGVzdGF0aW9uKTsKIAorICAgIGRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwoKTsKICAgICByZWNl
aXZlUmVzcG9uZChBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZTo6Y3JlYXRlKGNyZWRl
bnRpYWxJZCwgYXR0ZXN0YXRpb25PYmplY3QpKTsKIH0KIApAQCAtMzgzLDYgKzQxOCw3IEBAIHZv
aWQgTG9jYWxBdXRoZW50aWNhdG9yOjpnZXRBc3NlcnRpb24oKQogICAgIC8vIFRoZSBmb2xsb3dp
bmcgaW1wbGVtZW50cyBodHRwczovL3d3dy53My5vcmcvVFIvd2ViYXV0aG4vI29wLWdldC1hc3Nl
cnRpb24gYXMgb2YgNSBEZWNlbWJlciAyMDE3LgogICAgIC8vIFNraXAgU3RlcCAyIGFzIHJlcXVp
cmVVc2VyVmVyaWZpY2F0aW9uIGlzIGVuZm9yY2VkLgogICAgIC8vIFNraXAgU3RlcCA4IGFzIGV4
dGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LgorICAgIC8vIFNraXAgU3RlcCA5IGFzIGNv
dW50ZXIgaXMgY29uc3RhbnRseSAwLgogICAgIC8vIFN0ZXAgMTIgaXMgaW1wbGljaXRseSBjYXB0
dXJlZCBieSBhbGwgVW5rbm93bkVycm9yIGV4Y2VwdGlvbiBjYWxsYmFja3MuCiAgICAgLy8gU3Rl
cCAzLTUuIFVubGlrZSB0aGUgc3BlYywgaWYgYW4gYWxsb3cgbGlzdCBpcyBwcm92aWRlZCBhbmQg
dGhlcmUgaXMgbm8gaW50ZXJzZWN0aW9uIGJldHdlZW4gZXhpc3Rpbmcgb25lcyBhbmQgdGhlIGFs
bG93IGxpc3QsIHdlIGFsd2F5cyByZXR1cm4gTm90QWxsb3dlZEVycm9yLgogICAgIGF1dG8gYWxs
b3dDcmVkZW50aWFsSWRzID0gcHJvZHVjZUhhc2hTZXQocmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVk
ZW50aWFscyk7CkBAIC0zOTIsNTEgKzQyOCwzMiBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6
Z2V0QXNzZXJ0aW9uKCkKICAgICB9CiAKICAgICAvLyBTZWFyY2ggS2V5Y2hhaW4gZm9yIHRoZSBS
UCBJRC4KLSAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKLSAgICAgICAgKGlkKWtTZWNDbGFz
czogKGlkKWtTZWNDbGFzc0tleSwKLSAgICAgICAgKGlkKWtTZWNBdHRyS2V5Q2xhc3M6IChpZClr
U2VjQXR0cktleUNsYXNzUHJpdmF0ZSwKLSAgICAgICAgKGlkKWtTZWNBdHRyTGFiZWw6IHJlcXVl
c3RPcHRpb25zLnJwSWQsCi0gICAgICAgIChpZClrU2VjUmV0dXJuQXR0cmlidXRlczogQFlFUywK
LSAgICAgICAgKGlkKWtTZWNNYXRjaExpbWl0OiAoaWQpa1NlY01hdGNoTGltaXRBbGwsCi0jaWYg
SEFWRShEQVRBX1BST1RFQ1RJT05fS0VZQ0hBSU4pCi0gICAgICAgIChpZClrU2VjVXNlRGF0YVBy
b3RlY3Rpb25LZXljaGFpbjogQFlFUwotI2Vsc2UKLSAgICAgICAgKGlkKWtTZWNBdHRyTm9MZWdh
Y3k6IEBZRVMKLSNlbmRpZgotICAgIH07Ci0gICAgQ0ZUeXBlUmVmIGF0dHJpYnV0ZXNBcnJheVJl
ZiA9IG51bGxwdHI7Ci0gICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjSXRlbUNvcHlNYXRjaGluZygo
X19icmlkZ2UgQ0ZEaWN0aW9uYXJ5UmVmKXF1ZXJ5LCAmYXR0cmlidXRlc0FycmF5UmVmKTsKLSAg
ICBpZiAoc3RhdHVzICYmIHN0YXR1cyAhPSBlcnJTZWNJdGVtTm90Rm91bmQpIHsKLSAgICAgICAg
cmVjZWl2ZUV4Y2VwdGlvbih7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgcXVl
cnkgS2V5Y2hhaW46ICIsIHN0YXR1cykgfSk7CisgICAgYXV0byBleGlzdGluZ0NyZWRlbnRpYWxz
ID0gZ2V0RXhpc3RpbmdDcmVkZW50aWFscyhyZXF1ZXN0T3B0aW9ucy5ycElkKTsKKyAgICBpZiAo
IWV4aXN0aW5nQ3JlZGVudGlhbHMpIHsKKyAgICAgICAgcmVjZWl2ZUV4Y2VwdGlvbih7IFVua25v
d25FcnJvciwgbWFrZVN0cmluZygiQ291bGRuJ3QgZ2V0IGV4aXN0aW5nIGNyZWRlbnRpYWxzIikg
fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgYXV0byByZXRhaW5BdHRyaWJ1dGVzQXJy
YXkgPSBhZG9wdENGKGF0dHJpYnV0ZXNBcnJheVJlZik7CisgICAgbV9leGlzdGluZ0NyZWRlbnRp
YWxzID0gV1RGTW92ZSgqZXhpc3RpbmdDcmVkZW50aWFscyk7CiAKLSAgICBOU0FycmF5ICppbnRl
cnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcyA9IG5pbDsKLSAgICBpZiAocmVxdWVzdE9wdGlv
bnMuYWxsb3dDcmVkZW50aWFscy5pc0VtcHR5KCkpCi0gICAgICAgIGludGVyc2VjdGVkQ3JlZGVu
dGlhbHNBdHRyaWJ1dGVzID0gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlSZWY7Ci0gICAgZWxz
ZSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICpyZXN1bHQgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6YWxsb3dDcmVkZW50aWFsSWRzLnNpemUoKV07Ci0gICAgICAgIGZvciAo
TlNEaWN0aW9uYXJ5ICpuc0F0dHJpYnV0ZXMgaW4gKE5TQXJyYXkgKilhdHRyaWJ1dGVzQXJyYXlS
ZWYpIHsKLSAgICAgICAgICAgIE5TRGF0YSAqbnNDcmVkZW50aWFsSWQgPSBuc0F0dHJpYnV0ZXNb
KGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07Ci0gICAgICAgICAgICBpZiAoYWxsb3dDcmVk
ZW50aWFsSWRzLmNvbnRhaW5zKFN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihu
c0NyZWRlbnRpYWxJZC5ieXRlcyksIG5zQ3JlZGVudGlhbElkLmxlbmd0aCkpKQotICAgICAgICAg
ICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zQXR0cmlidXRlc107CisgICAgZm9yIChhdXRvJiBj
cmVkZW50aWFsIDogbV9leGlzdGluZ0NyZWRlbnRpYWxzKSB7CisgICAgICAgIGlmIChhbGxvd0Ny
ZWRlbnRpYWxJZHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1f
YXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChjcmVkZW50aWFsLmNvcHlSZWYoKSk7CisgICAgICAgICAg
ICBBU1NFUlRfVU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhdXRvKiByYXdJZCA9IGNyZWRl
bnRpYWwtPnJhd0lkKCk7CisgICAgICAgIGlmIChhbGxvd0NyZWRlbnRpYWxJZHMuY29udGFpbnMo
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KHJhd0lkLT5kYXRhKCkpLCByYXdJ
ZC0+Ynl0ZUxlbmd0aCgpKSkpIHsKKyAgICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9hc3Nl
cnRpb25SZXNwb25zZXMuYWRkKGNyZWRlbnRpYWwuY29weVJlZigpKTsKKyAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIH0K
LSAgICAgICAgaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMgPSByZXN1bHQ7CiAgICAg
fQotICAgIGlmICghaW50ZXJzZWN0ZWRDcmVkZW50aWFsc0F0dHJpYnV0ZXMuY291bnQpIHsKKyAg
ICBpZiAobV9hc3NlcnRpb25SZXNwb25zZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJlY2VpdmVF
eGNlcHRpb24oeyBOb3RBbGxvd2VkRXJyb3IsICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBm
b3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iX3MgfSwgV2ViQXV0
aGVudGljYXRpb25TdGF0dXM6OkxBTm9DcmVkZW50aWFsKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIC8vIFN0ZXAgNi03LiBVc2VyIGNvbnNlbnQgaXMgaW1wbGljaXRseSBhY3F1aXJl
ZCBieSBzZWxlY3RpbmcgcmVzcG9uc2VzLgotICAgIGZvciAoTlNEaWN0aW9uYXJ5ICphdHRyaWJ1
dGUgOiBpbnRlcnNlY3RlZENyZWRlbnRpYWxzQXR0cmlidXRlcykgewotICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fYXNzZXJ0aW9uUmVzcG9uc2VzLmFkZChBdXRoZW50aWNhdG9yQXNzZXJ0aW9u
UmVzcG9uc2U6OmNyZWF0ZSgKLSAgICAgICAgICAgIHRvQXJyYXlCdWZmZXIoYXR0cmlidXRlWyhp
ZClrU2VjQXR0ckFwcGxpY2F0aW9uTGFiZWxdKSwKLSAgICAgICAgICAgIHRvQXJyYXlCdWZmZXIo
YXR0cmlidXRlWyhpZClrU2VjQXR0ckFwcGxpY2F0aW9uVGFnXSksCi0gICAgICAgICAgICAoX19i
cmlkZ2UgU2VjQWNjZXNzQ29udHJvbFJlZilhdHRyaWJ1dGVbKGlkKWtTZWNBdHRyQWNjZXNzQ29u
dHJvbF0pKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05l
d0VudHJ5KTsKLSAgICB9CiAgICAgbV9jb25uZWN0aW9uLT5maWx0ZXJSZXNwb25zZXMobV9hc3Nl
cnRpb25SZXNwb25zZXMpOwogCiAgICAgaWYgKGF1dG8qIG9ic2VydmVyID0gdGhpcy0+b2JzZXJ2
ZXIoKSkgewpAQCAtNDg0LDEwICs1MDEsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29u
dGludWVHZXRBc3NlcnRpb25BZnRlclVzZXJWZXJpZmljYXRpb24oUmVmPFdlYkNvcmU6OgogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gU3RlcCA5LTEwLgotICAgIC8vIEZJWE1FKDE4
MzUzMyk6IER1ZSB0byB0aGUgc3RhdGVkIEtleWNoYWluIGxpbWl0YXRpb25zLCB3ZSBjYW4ndCBz
YXZlIHRoZSBjb3VudGVyIHZhbHVlLgotICAgIC8vIFRoZXJlZm9yZSwgaXQgaXMgYWx3YXlzIHpl
cm8uCi0gICAgdWludDMyX3QgY291bnRlciA9IDA7CisgICAgLy8gU3RlcCAxMC4KICAgICBhdXRv
IGF1dGhEYXRhID0gYnVpbGRBdXRoRGF0YShXVEY6OmdldDxQdWJsaWNLZXlDcmVkZW50aWFsUmVx
dWVzdE9wdGlvbnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucykucnBJZCwgZ2V0QXNzZXJ0aW9uRmxh
Z3MsIGNvdW50ZXIsIHsgfSk7CiAKICAgICAvLyBTdGVwIDExLgpAQCAtNTQxLDYgKzU1NSwzMyBA
QCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6cmVjZWl2ZUV4Y2VwdGlvbihFeGNlcHRpb25EYXRh
JiYgZXhjZXB0aW9uLCBXZWJBdXRoZW50aQogICAgIHJldHVybjsKIH0KIAordm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwoKSBjb25zdAoreworICAgIHVz
aW5nIG5hbWVzcGFjZSBMb2NhbEF1dGhlbnRpY2F0b3JJbnRlcm5hbDsKKworICAgIGF1dG8mIGNy
ZWF0aW9uT3B0aW9ucyA9IFdURjo6Z2V0PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlv
bnM+KHJlcXVlc3REYXRhKCkub3B0aW9ucyk7CisgICAgbV9leGlzdGluZ0NyZWRlbnRpYWxzLmZp
bmRNYXRjaGluZyhbY3JlYXRpb25PcHRpb25zXSAoYXV0byYgY3JlZGVudGlhbCkgeworICAgICAg
ICBhdXRvKiB1c2VySGFuZGxlID0gY3JlZGVudGlhbC0+dXNlckhhbmRsZSgpOworICAgICAgICBB
U1NFUlQodXNlckhhbmRsZSk7CisgICAgICAgIGlmIChtZW1jbXAodXNlckhhbmRsZS0+ZGF0YSgp
LCBjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvci5kYXRhKCksIHVzZXJIYW5kbGUtPmJ5dGVM
ZW5ndGgoKSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgTlNEaWN0aW9u
YXJ5KiBkZWxldGVRdWVyeSA9IEB7CisgICAgICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1Nl
Y0NsYXNzS2V5LAorICAgICAgICAgICAgKGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbDogdG9O
U0RhdGEoY3JlZGVudGlhbC0+cmF3SWQoKSkuZ2V0KCksCisjaWYgSEFWRShEQVRBX1BST1RFQ1RJ
T05fS0VZQ0hBSU4pCisgICAgICAgICAgICAoaWQpa1NlY1VzZURhdGFQcm90ZWN0aW9uS2V5Y2hh
aW46IEBZRVMKKyNlbHNlCisgICAgICAgICAgICAoaWQpa1NlY0F0dHJOb0xlZ2FjeTogQFlFUwor
I2VuZGlmCisgICAgICAgIH07CisgICAgICAgIE9TU3RhdHVzIHN0YXR1cyA9IFNlY0l0ZW1EZWxl
dGUoKF9fYnJpZGdlIENGRGljdGlvbmFyeVJlZilkZWxldGVRdWVyeSk7CisgICAgICAgIGlmIChz
dGF0dXMgJiYgc3RhdHVzICE9IGVyclNlY0l0ZW1Ob3RGb3VuZCkKKyAgICAgICAgICAgIExPR19F
UlJPUihtYWtlU3RyaW5nKCJDb3VsZG4ndCBkZWxldGUgb2xkZXIgY3JlZGVudGlhbDogIl9zLCBz
dGF0dXMpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCX0FVVEhOKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vTW9j
ay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vTW9jay9Nb2NrTG9jYWxDb25uZWN0aW9uLm1tCmluZGV4IGIxYzk4NzQ3OWY0
ZDdjYzFhNzQ4NzU5MTMxYzg2MjQzZWI2NzZlNjcuLmI1Y2FkMDdjMTY3NWMyY2NkYjgxMmZjMWM3
NTE3MzY2YjlmYTgxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL01vY2svTW9ja0xvY2FsQ29ubmVjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Nb2NrL01vY2tMb2NhbENvbm5lY3Rpb24u
bW0KQEAgLTExNSwxNiArMTE1LDE2IEBAIHZvaWQgTW9ja0xvY2FsQ29ubmVjdGlvbjo6Z2V0QXR0
ZXN0YXRpb24oU2VjS2V5UmVmLCBOU0RhdGEgKiwgTlNEYXRhICosIEF0dGVzdGF0CiAKIHZvaWQg
TW9ja0xvY2FsQ29ubmVjdGlvbjo6ZmlsdGVyUmVzcG9uc2VzKEhhc2hTZXQ8UmVmPFdlYkNvcmU6
OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4+JiByZXNwb25zZXMpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgYXV0byYgcHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NCA9IG1fY29uZmlndXJhdGlv
bi5sb2NhbC0+cHJlZmVycmVkVXNlcmhhbmRsZUJhc2U2NDsKLSAgICBpZiAocHJlZmVycmVkVXNl
cmhhbmRsZUJhc2U2NC5pc0VtcHR5KCkpCisgICAgY29uc3QgYXV0byYgcHJlZmVycmVkQ3JlZGVu
dGlhbElkQmFzZTY0ID0gbV9jb25maWd1cmF0aW9uLmxvY2FsLT5wcmVmZXJyZWRDcmVkZW50aWFs
SWRCYXNlNjQ7CisgICAgaWYgKHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaXRyID0gcmVzcG9uc2VzLmJlZ2luKCk7CiAg
ICAgZm9yICg7IGl0ciAhPSByZXNwb25zZXMuZW5kKCk7ICsraXRyKSB7Ci0gICAgICAgIGF1dG8q
IHVzZXJIYW5kbGUgPSBpdHItPmdldCgpLnVzZXJIYW5kbGUoKTsKLSAgICAgICAgQVNTRVJUKHVz
ZXJIYW5kbGUpOwotICAgICAgICBhdXRvIHVzZXJoYW5kbGVCYXNlNjQgPSBiYXNlNjRFbmNvZGUo
dXNlckhhbmRsZS0+ZGF0YSgpLCB1c2VySGFuZGxlLT5ieXRlTGVuZ3RoKCkpOwotICAgICAgICBp
ZiAodXNlcmhhbmRsZUJhc2U2NCA9PSBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0KQorICAgICAg
ICBhdXRvKiByYXdJZCA9IGl0ci0+Z2V0KCkucmF3SWQoKTsKKyAgICAgICAgQVNTRVJUKHJhd0lk
KTsKKyAgICAgICAgYXV0byByYXdJZEJhc2U2NCA9IGJhc2U2NEVuY29kZShyYXdJZC0+ZGF0YSgp
LCByYXdJZC0+Ynl0ZUxlbmd0aCgpKTsKKyAgICAgICAgaWYgKHJhd0lkQmFzZTY0ID09IHByZWZl
cnJlZENyZWRlbnRpYWxJZEJhc2U2NCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBh
dXRvIHJlc3BvbnNlID0gcmVzcG9uc2VzLnRha2UoaXRyKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2MTc2YWE0ZjNjYmM5MzhhYWRmMDIwNjM3
NmRkMzYzNmE4OGY2YjQ4Li42ZWU0Nzc1ODk1YTcxMDk2ZGFmNjdjM2ZlOWM3ZDcwZDYxZDIzMTRh
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMjAtMDMtMDkgIEppZXdlbiBUYW4gIDxqaWV3ZW5fdGFuQGFwcGxlLmNv
bT4KKworICAgICAgICBbV2ViQXV0aG5dIEZvcm1hbGl6ZSB0aGUgS2V5Y2hhaW4gc2NoZW1hCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM1MzMKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQzMzQ3OTI2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJy
ZW50IEZ1bGdoYW0uCisKKyAgICAgICAgTW9kaWZpZXMgdGhlIHRlc3QgaW5mcmEgdG8gdXNlIENy
ZWRlbnRpYWwgSUQgYXMgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciBhIGNyZWRlbnRpYWwgaW5z
dGVhZCBvZgorICAgICAgICB0aGUgb3JpZ2luYWwgY29tYmluYXRpb24gb2YgUlAgSUQgYW5kIHVz
ZXIgaGFuZGxlLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjbGVh
blVwS2V5Y2hhaW4pOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNo
YWluKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVk
QnVuZGxlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjbGVhblVwS2V5Y2hhaW4p
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbik6CisK
IDIwMjAtMDMtMDYgIERhdmlkIFF1ZXNhZGEgIDxkYXZpZF9xdWVzYWRhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgX1dLUmVzb3VyY2VMb2FkSW5mby5yZXNvdXJjZVR5cGUgU1BJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19X
S1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0KaW5kZXggNzQ5Yzk3ZmY5NmMzMjdhZmU2OGE3MDVi
N2Y0MGI0Zjg3MDFhMTI3OC4uYWMxMWE1ODYzY2IxYzVhMjFhZDdkOWY0Y2FlNjM0YWFmMjIyMTAy
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tX
ZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtNjIsNyArNjIsNyBA
QCBzdGF0aWMgU3RyaW5nIHRlc3RFUzI1NlByaXZhdGVLZXlCYXNlNjQgPQogICAgICJCRGovenhT
a3pLZ2FCdVMzY2RXREY1NThvZjhBYUlwZ0Zwc2pGL1FtMTc0OVZCSlBncVVJd2ZoV0hKOTFuYjdV
IgogICAgICJQSDc2YzArV0ZPelpLc2xQeXlGc2U0Z29HSVcyUjdrOVZITFBFWmw1bmZuQmdFVkZo
NXpldisveHBIUUl2dXE2IgogICAgICJSUT09IjsKLXN0YXRpYyBTdHJpbmcgdGVzdFVzZXJoYW5k
bGVCYXNlNjQgPSAiQUFFQ0F3UUZCZ2NJQ1E9PSI7CitzdGF0aWMgU3RyaW5nIHRlc3RVc2VyRW50
aXR5QnVuZGxlQmFzZTY0ID0gIm9tSnBaRW9BQVFJREJBVUdCd2dKWkc1aGJXVndRVUZGUTBGM1VV
WkNaMk5KUTFFOVBRPT0iOwogCiBAaW50ZXJmYWNlIFRlc3RXZWJBdXRoZW50aWNhdGlvblBhbmVs
RGVsZWdhdGUgOiBOU09iamVjdCA8X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbERlbGVnYXRlPgog
QGVuZApAQCAtMTIxNCw3ICsxMjE0LDcgQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBM
QUR1cGxpY2F0ZUNyZWRlbnRpYWwpCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0
V2ViQXV0aGVudGljYXRpb25QYW5lbFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIEFTU0VSVF9UUlVFKGFk
ZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwgIiIsIHRlc3RVc2VyaGFu
ZGxlQmFzZTY0KSk7CisgICAgQVNTRVJUX1RSVUUoYWRkS2V5VG9LZXljaGFpbih0ZXN0RVMyNTZQ
cml2YXRlS2V5QmFzZTY0LCAiIiwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpKTsKICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnRlc3RVUkwu
Z2V0KCldXTsKICAgICBVdGlsOjpydW4oJndlYkF1dGhlbnRpY2F0aW9uUGFuZWxVcGRhdGVMQUV4
Y2x1ZGVDcmVkZW50aWFsc01hdGNoZWQpOwogICAgIGNsZWFuVXBLZXljaGFpbigiIik7CkBAIC0x
MzA1LDcgKzEzMDUsNyBAQCBURVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIExBR2V0QXNzZXJ0
aW9uKQogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdFdlYkF1dGhlbnRpY2F0aW9u
UGFuZWxVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CiAgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBBU1NFUlRfVFJVRShhZGRLZXlUb0tleWNoYWluKHRl
c3RFUzI1NlByaXZhdGVLZXlCYXNlNjQsICIiLCB0ZXN0VXNlcmhhbmRsZUJhc2U2NCkpOworICAg
IEFTU0VSVF9UUlVFKGFkZEtleVRvS2V5Y2hhaW4odGVzdEVTMjU2UHJpdmF0ZUtleUJhc2U2NCwg
IiIsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KSk7CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp0ZXN0VVJMLmdldCgpXV07CiAgICAgW3dl
YlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJTdWNjZWVkZWQhIl07CiAgICAgY2hlY2tQYW5lbChbZGVs
ZWdhdGUgcGFuZWxdLCBAIiIsIEBbYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aElu
dDpfV0tXZWJBdXRoZW50aWNhdGlvblRyYW5zcG9ydFVTQl0pLmdldCgpLCBhZG9wdE5TKFtbTlNO
dW1iZXIgYWxsb2NdIGluaXRXaXRoSW50Ol9XS1dlYkF1dGhlbnRpY2F0aW9uVHJhbnNwb3J0SW50
ZXJuYWxdKS5nZXQoKV0sIF9XS1dlYkF1dGhlbnRpY2F0aW9uVHlwZUdldCk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9U
ZXN0UnVubmVyLmlkbAppbmRleCA0OTAxZTA4NmVkMTlmNTIwZGEwMDhmMTQwZTJlZDY5YzZiM2M2
MWQwLi4xMzAyNzEwZjY0ZTViNzkzODVkMDNhOTYyMmI2ZTZkYmZmZGU5NmQyIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5u
ZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKQEAgLTQwNCw4ICs0MDQsOCBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5l
ciB7CiAKICAgICAvLyBXZWJBdXRobgogICAgIHZvaWQgYWRkVGVzdEtleVRvS2V5Y2hhaW4oRE9N
U3RyaW5nIHByaXZhdGVLZXlCYXNlNjQsIERPTVN0cmluZyBhdHRyTGFiZWwsIERPTVN0cmluZyBh
cHBsaWNhdGlvblRhZ0Jhc2U2NCk7Ci0gICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oRE9NU3RyaW5n
IGF0dHJMYWJlbCwgb3B0aW9uYWwgRE9NU3RyaW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKLSAg
ICBib29sZWFuIGtleUV4aXN0c0luS2V5Y2hhaW4oRE9NU3RyaW5nIGF0dHJMYWJlbCwgRE9NU3Ry
aW5nIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKKyAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihET01T
dHJpbmcgYXR0ckxhYmVsLCBvcHRpb25hbCBET01TdHJpbmcgYXBwbGljYXRpb25MYWJlbEJhc2U2
NCk7CisgICAgYm9vbGVhbiBrZXlFeGlzdHNJbktleWNoYWluKERPTVN0cmluZyBhdHRyTGFiZWws
IERPTVN0cmluZyBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKIAogICAgIC8vIEFkIENsaWNrIEF0
dHJpYnV0aW9uCiAgICAgdm9pZCBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggODJkZDZhYWUyNjFmODg4YTFlMzJiZWI2NjljNjJkMDdmZjYwY2VlOS4uMmU5OGNmNWQ1NmFl
MTZhMWNmMDYyNjFkNDkyMGQ4Y2ZmNmZjZDM5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0yNzg4LDcgKzI3ODgs
NyBAQCB2b2lkIFRlc3RSdW5uZXI6OmFkZFRlc3RLZXlUb0tleWNoYWluKEpTU3RyaW5nUmVmIHBy
aXZhdGVLZXlCYXNlNjQsIEpTU3RyaW5nUmVmCiAgICAgV0tCdW5kbGVQb3N0U3luY2hyb25vdXNN
ZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUu
Z2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpLCBudWxscHRyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVy
OjpjbGVhblVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBs
aWNhdGlvblRhZ0Jhc2U2NCkKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2xlYW5VcEtleWNoYWluKEpTU3Ry
aW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXRpb25MYWJlbEJhc2U2NCkKIHsK
ICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+PiBrZXlzOwogICAgIFZlY3RvcjxX
S1JldGFpblB0cjxXS1R5cGVSZWY+PiB2YWx1ZXM7CkBAIC0yNzk2LDkgKzI3OTYsOSBAQCB2b2lk
IFRlc3RSdW5uZXI6OmNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3Ry
aW5nUmVmIGFwcGxpY2F0aW9uVAogICAgIGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoIkF0dHJMYWJlbCIpKSk7CiAgICAgdmFsdWVzLmFwcGVuZCh0b1dL
KGF0dHJMYWJlbCkpOwogCi0gICAgaWYgKGFwcGxpY2F0aW9uVGFnQmFzZTY0KSB7Ci0gICAgICAg
IGtleXMuYXBwZW5kKGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxp
Y2F0aW9uVGFnIikpKTsKLSAgICAgICAgdmFsdWVzLmFwcGVuZCh0b1dLKGFwcGxpY2F0aW9uVGFn
QmFzZTY0KSk7CisgICAgaWYgKGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpIHsKKyAgICAgICAga2V5
cy5hcHBlbmQoYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXBwbGljYXRp
b25MYWJlbCIpKSk7CisgICAgICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhcHBsaWNhdGlvbkxhYmVs
QmFzZTY0KSk7CiAgICAgfQogCiAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzOwpAQCAt
MjgxNyw3ICsyODE3LDcgQEAgdm9pZCBUZXN0UnVubmVyOjpjbGVhblVwS2V5Y2hhaW4oSlNTdHJp
bmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblQKICAgICBXS0J1bmRsZVBv
c3RTeW5jaHJvbm91c01lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCksIG51bGxwdHIpOwogfQogCi1i
b29sIFRlc3RSdW5uZXI6OmtleUV4aXN0c0luS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVs
LCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCkKK2Jvb2wgVGVzdFJ1bm5lcjo6a2V5
RXhpc3RzSW5LZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxp
Y2F0aW9uTGFiZWxCYXNlNjQpCiB7CiAgICAgVmVjdG9yPFdLUmV0YWluUHRyPFdLU3RyaW5nUmVm
Pj4ga2V5czsKICAgICBWZWN0b3I8V0tSZXRhaW5QdHI8V0tUeXBlUmVmPj4gdmFsdWVzOwpAQCAt
MjgyNSw4ICsyODI1LDggQEAgYm9vbCBUZXN0UnVubmVyOjprZXlFeGlzdHNJbktleWNoYWluKEpT
U3RyaW5nUmVmIGF0dHJMYWJlbCwgSlNTdHJpbmdSZWYgYXBwbGljYXQKICAgICBrZXlzLmFwcGVu
ZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBdHRyTGFiZWwiKSkpOwog
ICAgIHZhbHVlcy5hcHBlbmQodG9XSyhhdHRyTGFiZWwpKTsKIAotICAgIGtleXMuYXBwZW5kKGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxpY2F0aW9uVGFnIikpKTsK
LSAgICB2YWx1ZXMuYXBwZW5kKHRvV0soYXBwbGljYXRpb25UYWdCYXNlNjQpKTsKKyAgICBrZXlz
LmFwcGVuZChhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlv
bkxhYmVsIikpKTsKKyAgICB2YWx1ZXMuYXBwZW5kKHRvV0soYXBwbGljYXRpb25MYWJlbEJhc2U2
NCkpOwogCiAgICAgVmVjdG9yPFdLU3RyaW5nUmVmPiByYXdLZXlzOwogICAgIFZlY3RvcjxXS1R5
cGVSZWY+IHJhd1ZhbHVlczsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggMGIxMjQ4MWQ3ZDE5MmJkNmIyZTQ2MDQ4ODVhNWFi
MzQ0ZmM1YmJiZC4uZGEwYWQxZmJhOWI5MjQ4NzEzZDA0ZjFhYmExNGUxZjY2MDhiODNhNyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTUxMiw4ICs1MTIsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBGSVhNRSgxODk4NzYpCiAg
ICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihKU1N0cmluZ1JlZiBwcml2YXRlS2V5QmFzZTY0
LCBKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3RyaW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KTsKLSAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihKU1N0cmluZ1JlZiBhdHRyTGFiZWwsIEpTU3Ry
aW5nUmVmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KTsKLSAgICBib29sIGtleUV4aXN0c0luS2V5Y2hh
aW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvblRhZ0Jhc2U2
NCk7CisgICAgdm9pZCBjbGVhblVwS2V5Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0
cmluZ1JlZiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKKyAgICBib29sIGtleUV4aXN0c0luS2V5
Y2hhaW4oSlNTdHJpbmdSZWYgYXR0ckxhYmVsLCBKU1N0cmluZ1JlZiBhcHBsaWNhdGlvbkxhYmVs
QmFzZTY0KTsKIAogICAgIHVuc2lnbmVkIGxvbmcgc2VydmVyVHJ1c3RFdmFsdWF0aW9uQ2FsbGJh
Y2tDYWxsc0NvdW50KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApp
bmRleCBmM2FhODhhYzYyOTE4OWVjMTM3ZDJkOTI5NGJmZTI5NGNiNTg0NGZjLi41NzNiNzJjZmJj
ZmJlY2RjMDMwMDhjZDI0M2UxOTAyYzA4YTQwODEwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCkBAIC0zMTIsOCArMzEyLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U2VydmljZVdvcmtlckZldGNoVGltZW91dEZvclRlc3RpbmcoZG91YmxlIHNlY29uZHMpOwogCiAg
ICAgdm9pZCBhZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNl
NjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KTsKLSAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJl
bCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvblRhZ0Jhc2U2NCk7Ci0gICAgYm9vbCBrZXlFeGlz
dHNJbktleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxp
Y2F0aW9uVGFnQmFzZTY0KTsKKyAgICB2b2lkIGNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcm
IGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KTsKKyAgICBi
b29sIGtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0
cmluZyYgYXBwbGljYXRpb25MYWJlbEJhc2U2NCk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBOU1N0cmluZyAqb3ZlcnJpZGRlbkNhbGVuZGFySWRlbnRpZmllcigpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCA0MTZmNmVmMWE3MTNlZThi
NGZlYWU5MGU5ZjlmZjM4MGYwZDk5ZTQ0Li5mOGNjZTI3ZmM0NjE3ZWE3NmM2YjUzNzc1NGNjNDYy
Y2Q5ZTBlYzE5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0
aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApA
QCAtMTcyMywxMCArMTcyMywxMCBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXR0ckxhYmVsS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXR0ckxhYmVsIikpOwogICAgICAgICBXS1N0cmluZ1JlZiBh
dHRyTGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVt
Rm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhdHRyTGFiZWxLZXkuZ2V0KCkpKTsKIAotICAgICAgICBX
S1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25UYWdLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlvblRhZyIpKTsKLSAgICAgICAgV0tT
dHJpbmdSZWYgYXBwbGljYXRpb25UYWdXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBsaWNhdGlvblRhZ0tleS5n
ZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25MYWJl
bEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkFwcGxpY2F0aW9u
TGFiZWwiKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTGFiZWxXSyA9IHN0YXRp
Y19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9u
YXJ5LCBhcHBsaWNhdGlvbkxhYmVsS2V5LmdldCgpKSk7CiAKLSAgICAgICAgVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmNsZWFuVXBLZXljaGFpbih0b1dURlN0cmluZyhhdHRyTGFiZWxXSyks
IGFwcGxpY2F0aW9uVGFnV0sgPyB0b1dURlN0cmluZyhhcHBsaWNhdGlvblRhZ1dLKSA6IFN0cmlu
ZygpKTsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNsZWFuVXBLZXljaGFp
bih0b1dURlN0cmluZyhhdHRyTGFiZWxXSyksIGFwcGxpY2F0aW9uTGFiZWxXSyA/IHRvV1RGU3Ry
aW5nKGFwcGxpY2F0aW9uTGFiZWxXSykgOiBTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTczNywxMCArMTczNywxMCBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXR0ckxhYmVsS2V5ID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQXR0ckxhYmVsIikpOwogICAgICAg
ICBXS1N0cmluZ1JlZiBhdHRyTGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0Rp
Y3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhdHRyTGFiZWxLZXkuZ2V0KCkp
KTsKIAotICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYXBwbGljYXRpb25UYWdLZXkg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJBcHBsaWNhdGlvblRhZyIp
KTsKLSAgICAgICAgV0tTdHJpbmdSZWYgYXBwbGljYXRpb25UYWdXSyA9IHN0YXRpY19jYXN0PFdL
U3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBs
aWNhdGlvblRhZ0tleS5nZXQoKSkpOworICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
YXBwbGljYXRpb25MYWJlbEtleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJp
bmcoIkFwcGxpY2F0aW9uTGFiZWwiKSk7CisgICAgICAgIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9u
TGFiZWxXSyA9IHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihXS0RpY3Rpb25hcnlHZXRJdGVtRm9y
S2V5KHRlc3REaWN0aW9uYXJ5LCBhcHBsaWNhdGlvbkxhYmVsS2V5LmdldCgpKSk7CiAKLSAgICAg
ICAgYm9vbCBrZXlFeGlzdHNJbktleWNoYWluID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LmtleUV4aXN0c0luS2V5Y2hhaW4odG9XVEZTdHJpbmcoYXR0ckxhYmVsV0spLCB0b1dURlN0cmlu
ZyhhcHBsaWNhdGlvblRhZ1dLKSk7CisgICAgICAgIGJvb2wga2V5RXhpc3RzSW5LZXljaGFpbiA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5rZXlFeGlzdHNJbktleWNoYWluKHRvV1RGU3Ry
aW5nKGF0dHJMYWJlbFdLKSwgdG9XVEZTdHJpbmcoYXBwbGljYXRpb25MYWJlbFdLKSk7CiAgICAg
ICAgIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gcmVzdWx0ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVh
dGUoa2V5RXhpc3RzSW5LZXljaGFpbikpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQppbmRleCBmMmUzYTY2Yzc4ODAxMDNjODA4NGE5ZDg5NDVmZjQwOGZkYjJlMzE2Li5mYzFk
NTFiNzQ5YzhiMzIxZmU0ZjdhMjI1NTdiODFhZDllNmI5MDEyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC00MzAsNyAr
NDMwLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oY29uc3Qg
U3RyaW5nJiBwcml2YXRlS2V5QmFzZTY0LCBjb25zdAogICAgIEFTU0VSVF9VTlVTRUQoc3RhdHVz
LCAhc3RhdHVzKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNv
bnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYW5VcEtleWNoYWluKGNvbnN0IFN0cmluZyYgYXR0
ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTGFiZWxCYXNlNjQpCiB7CiAgICAgYXV0
byBkZWxldGVRdWVyeSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0
XSk7CiAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDooaWQpa1NlY0NsYXNzS2V5IGZvcktleToo
aWQpa1NlY0NsYXNzXTsKQEAgLTQ0MCwxOSArNDQwLDE5IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmNsZWFuVXBLZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBh
cHBsCiAjZWxzZQogICAgIFtkZWxldGVRdWVyeSBzZXRPYmplY3Q6QFlFUyBmb3JLZXk6KGlkKWtT
ZWNBdHRyTm9MZWdhY3ldOwogI2VuZGlmCi0gICAgaWYgKCEhYXBwbGljYXRpb25UYWdCYXNlNjQp
Ci0gICAgICAgIFtkZWxldGVRdWVyeSBzZXRPYmplY3Q6YWRvcHROUyhbW05TRGF0YSBhbGxvY10g
aW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6
TlNEYXRhQmFzZTY0RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpIGZvcktl
eTooaWQpa1NlY0F0dHJBcHBsaWNhdGlvblRhZ107CisgICAgaWYgKCEhYXBwbGljYXRpb25MYWJl
bEJhc2U2NCkKKyAgICAgICAgW2RlbGV0ZVF1ZXJ5IHNldE9iamVjdDphZG9wdE5TKFtbTlNEYXRh
IGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25MYWJlbEJhc2U2
NCBvcHRpb25zOk5TRGF0YUJhc2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5n
ZXQoKSBmb3JLZXk6KGlkKWtTZWNBdHRyQXBwbGljYXRpb25MYWJlbF07CiAKICAgICBTZWNJdGVt
RGVsZXRlKChfX2JyaWRnZSBDRkRpY3Rpb25hcnlSZWYpZGVsZXRlUXVlcnkuZ2V0KCkpOwogfQog
Ci1ib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0cmluZyYg
YXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0KQorYm9vbCBUZXN0
Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwg
Y29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbkxhYmVsQmFzZTY0KQogewogICAgIE5TRGljdGlvbmFy
eSAqcXVlcnkgPSBAewogICAgICAgICAoaWQpa1NlY0NsYXNzOiAoaWQpa1NlY0NsYXNzS2V5LAog
ICAgICAgICAoaWQpa1NlY0F0dHJLZXlDbGFzczogKGlkKWtTZWNBdHRyS2V5Q2xhc3NQcml2YXRl
LAogICAgICAgICAoaWQpa1NlY0F0dHJMYWJlbDogYXR0ckxhYmVsLAotICAgICAgICAoaWQpa1Nl
Y0F0dHJBcHBsaWNhdGlvblRhZzogYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCYXNl
NjRFbmNvZGVkU3RyaW5nOmFwcGxpY2F0aW9uVGFnQmFzZTY0IG9wdGlvbnM6TlNEYXRhQmFzZTY0
RGVjb2RpbmdJZ25vcmVVbmtub3duQ2hhcmFjdGVyc10pLmdldCgpLAorICAgICAgICAoaWQpa1Nl
Y0F0dHJBcHBsaWNhdGlvbkxhYmVsOiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJh
c2U2NEVuY29kZWRTdHJpbmc6YXBwbGljYXRpb25MYWJlbEJhc2U2NCBvcHRpb25zOk5TRGF0YUJh
c2U2NERlY29kaW5nSWdub3JlVW5rbm93bkNoYXJhY3RlcnNdKS5nZXQoKSwKICNpZiBIQVZFKERB
VEFfUFJPVEVDVElPTl9LRVlDSEFJTikKICAgICAgICAgKGlkKWtTZWNVc2VEYXRhUHJvdGVjdGlv
bktleWNoYWluOiBAWUVTCiAjZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllMGRiM2QwYjRjODQwNmIwYjU1YTRlZGRj
MTlmNmYyMDJjMmY2OWUuLmJkYjA2N2I4NjNiMjAwZTI3NTA4YjA5Y2UxMDVlY2I5ZWJmOWFlYWMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wMy0wOSAgSmlld2VuIFRhbiAgPGppZXdlbl90
YW5AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gRm9ybWFsaXplIHRoZSBLZXljaGFp
biBzY2hlbWEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4MzUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDMzNDc5MjY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4KKworICAgICAgICBOZXcgdGVzdHMgYXJlIGFkZGVkIGFu
ZCBhbGwgdGVzdHMgYXJlIG1vZGlmaWVkIHRvIHVzZSBDcmVkZW50aWFsIElEIHRvIGlkZW50aWZ5
IGEgY3JlZGVudGlhbCBpbnN0ZWFkCisgICAgICAgIG9mIHsgUlAgSUQsIHVzZXIgaGFuZGxlIH0u
CisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3Jl
YXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9j
YWwtc2lsZW50Lmh0dHBzLmh0bWw6CisgICAgICAgICogaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRl
LWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sOgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3Jl
ZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwu
aHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRl
bnRpYWwtZ2V0LXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbDoKKyAgICAgICAgKiBodHRwL3dwdC93
ZWJhdXRobi9yZXNvdXJjZXMvdXRpbC5qczoKKwogMjAyMC0wMy0wNSAgSmlld2VuIFRhbiAgPGpp
ZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJBdXRobl0gRG8gbm90IHBlcmZvcm0g
QXR0ZXN0YXRpb24gd2l0aCB0eXBlIGlzICdub25lJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxv
Y2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0
dHBzLWV4cGVjdGVkLnR4dAppbmRleCA2Njc5NDFmZGM4MTc0ZmUwODk2MzVlZTE3MzdiZGVlMDk0
NGY5NjFjLi5iNjNmZDc0YmU1N2FlMDg3NjliYTViZjNlZDk2M2E2MDMzOWRkNWZmIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZh
aWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDggQEAKIAot
UEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHNpbGVudCBmYWlsdXJl
IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVu
dGljYXRvci4gMiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBz
aWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMyAKLVBBU1MgUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1v
Y2sgbG9jYWwgYXV0aGVudGljYXRvci4gNCAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Y3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRv
ci4gNSAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQg
ZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gNiAKK1BBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMga2V5IGNyZWRl
bnRpYWwgcGFyYW1ldGVycyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRl
bnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKK1BBU1MgUHVibGljS2V5Q3Jl
ZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0
IHByaXZhdGUga2V5cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgYXR0ZXN0YXRpb24gaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2ls
ZW50Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKaW5kZXgg
NGRjZjRhMjk0ZDlmZTczYzdjMjE2ZjhmZDE5NGUzMjY2N2E3NjhlNi4uY2IyZDAyNjgzMGZlMmE4
ODU1ODBlZTUxMDliOGRjYWE2M2NiMDcxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1mYWlsdXJlLWxvY2FsLXNp
bGVudC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbApA
QCAtNCwxNTIgKzQsMTU4IEBACiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsKLSAgICAgICAgY29uc3Qg
dXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgIC8vIERl
ZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkg
bmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICBpZiAod2luZG93LmludGVybmFscykK
KyAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogZmFs
c2UsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOworCisgICAgcHJvbWlzZV90ZXN0KHQg
PT4geworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7
CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1w
bGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAg
ICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtMzUgfSwgeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMzODQsIFJT
MjU2CisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBu
YXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91
dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCB1bnN1
cHBvcnRlZCBwdWJsaWMga2V5IGNyZWRlbnRpYWwgcGFyYW1ldGVycyBpbiBhIG1vY2sgbG9jYWwg
YXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAg
ICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2
NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50
aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7Ci0gICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1
cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29u
ZmlndXJhdGlvbi4KLSAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCi0gICAgICAgICAgICBp
bnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZh
aWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewot
ICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVz
ZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVz
ZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJK
b2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1
YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMzUgfSwgeyB0eXBl
OiAicHVibGljLWtleSIsIGFsZzogLTI1NyB9XSwgLy8gRVMzODQsIFJTMjU2Ci0gICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQ6IDEwCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IHNpbGVudCBmYWlsdXJlIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgICAg
ICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3JlZGVudGlhbElEKTsK
IAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25z
ID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBy
cDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1
NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVi
bGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50
aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RDcmVk
ZW50aWFsSWRCYXNlNjQpIH1dLAotICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFw
cGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVz
ZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4i
LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRv
VWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1
ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElEIH1d
LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
YWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2Vy
RW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
T3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVuKCgpID0+IHsKICAgICAgICAgICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tl
eWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAg
ICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2
aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQu
IikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQot
ICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwg
dXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tl
eUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxv
Y2FsIGF1dGhlbnRpY2F0b3IuIDIiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFu
VXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7Cisg
ICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNs
dWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworCisgICAg
cHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0
ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRl
bnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsK
KyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRp
YWxJRCk7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAg
ICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIK
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5
KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlw
ZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICBleGNsdWRl
Q3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1r
ZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJh
bnNwb3J0czogWyJuZmMiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElE
LCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfQotICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6
IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhh
bXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7Cisg
ICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAg
ICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogWworICAgICAg
ICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJh
bnNwb3J0czogWyJ1c2IiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAorICAgICAgICAg
ICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNw
b3J0czogWyJibGUiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5
IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0KKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDEwCisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQs
IHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRl
c3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFz
ZTY0KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVy
cm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0
aW1lZCBvdXQuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0
ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDMiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAg
ICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0
Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAy
bmQiKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBv
cHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAg
ICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFy
cmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sg
dHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOwotICAgICAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVy
ZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gNCIpOworICAgIHByb21pc2VfdGVzdCh0
ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTog
eworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFt
cGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAg
ICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAg
ICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAg
ICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJy
b3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRp
bWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAg
ICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
LSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJs
aWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpCi0gICAgICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNh
dGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2NhbDogeyBhY2NlcHRB
dXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7Ci0gICAg
ICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmln
YXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIp
OwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxl
bnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gNSIpOworICAgIHByb21p
c2VfdGVzdCh0ID0+IHsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1
YmxpY0tleTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6ICJleGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVz
ZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKKyAgICAg
ICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCks
CisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGlj
LWtleSIsIGFsZzogLTcgfV0sCisgICAgICAgICAgICAgICAgdGltZW91dDogMTAKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
ICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IHNp
bGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBh
Y2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWpl
Y3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9w
dGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBwcml2YXRlIGtleXMgaW4gYSBtb2NrIGxvY2FsIGF1
dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAg
ICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFt
cGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgdXNl
cjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpvaG4gQXBwbGVzZWVkIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2
NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9V
aW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFt
czogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIGludGVybmFscy5z
ZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1
ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9u
OiBmYWxzZSB9IH0pOwotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5
Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOworICAg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2
NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7
CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50
aWFsSUQpOworCisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNL
ZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAi
ZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7
CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAg
ICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAg
ICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2Iiks
CisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXki
LCBhbGc6IC03IH1dLAorICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiZGlyZWN0IiwKKyAg
ICAgICAgICAgICAgICB0aW1lb3V0OiAxMAogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVuKCgpID0+
IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAg
ICAgICAgIGFzc2VydF9mYWxzZSh0ZXN0UnVubmVyLmtleUV4aXN0c0luS2V5Y2hhaW4odGVzdFJw
SWQsIHVzZXJoYW5kbGVCYXNlNjQpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1v
Y2sgbG9jYWwgYXV0aGVudGljYXRvci4gNiIpOwotICAgIH0pKCk7CisgICAgICAgIH07CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBzaWxlbnRGYWlsdXJlOiB0cnVlLCBsb2Nh
bDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNl
LCBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0IH0gfSk7CisgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7
CisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJhc2U2NCk7Cisg
ICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
b3V0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWNyZWF0ZS1m
YWlsdXJlLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA4NjM0ZjJjMjZkMjllY2ZhMTA1
NTRlNDE4MzNkZDhiODZkMmI3OGEzLi42YTEwMjVhYjA0M2RkNTQ5NTdiODgyNDNlNDhlODc4NWM2
OThmZjU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1j
cmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTUsNiArNSw2IEBAIFBB
U1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUg
Y3JlZGVudGlhbHMgaW4gYSBtb2NrCiBQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAK
IFBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBwcml2YXRlIGtl
eXMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRo
ZW50aWNhdG9yLiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gZGVsZXRp
bmcgb2xkIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSBub3QgZGVsZXRpbmcgb2xkIGNyZWRlbnRp
YWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIAogUEFTUyBQdWJsaWNLZXlDcmVkZW50
aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMt
a2V5LWNyZWRlbnRpYWwtY3JlYXRlLWZhaWx1cmUtbG9jYWwuaHR0cHMuaHRtbCBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVy
ZS1sb2NhbC5odHRwcy5odG1sCmluZGV4IDBhNWFiZTI4ODU2OWFlYzdiY2U5OTc2ZTk3YjRlYjI4
NTJlMmViODQuLjU3MGFjMDhmNGIwZGVlMGRkMTg5NTE3MWJiZTk3OWVkMDk4OWI1NWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlh
bC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUtZmFpbHVyZS1sb2NhbC5o
dHRwcy5odG1sCkBAIC00LDE5MyArNCwyMDUgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91
dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgKGFzeW5jIGZ1bmN0aW9uKCkgewotICAg
ICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7
CisgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3ZlcnJp
ZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0
QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisKKyAgICBwcm9taXNlX3Rlc3QodCA9PiB7CisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBC
YXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC0zNSB9LCB7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMjU3IH1dLCAvLyBFUzM4NCwgUlMyNTYKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RTdXBwb3J0ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyks
ICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvciBkb2Vzbid0IHN1cHBvcnQgYW55
IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJhbWV0ZXJzLiIpOworICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIHVuc3VwcG9ydGVkIHB1YmxpYyBrZXkg
Y3JlZGVudGlhbCBwYXJhbWV0ZXJzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwor
CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4gewogICAgICAgICBjb25zdCBwcml2YXRlS2V5
QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CiAgICAgICAgIGNvbnN0
IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFz
ZTY0KTsKLSAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQg
dG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgotICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRp
b246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKLQotICAgICAgICBwcm9t
aXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAg
ICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
YW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2
NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAg
ICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBh
bGc6IC0zNSB9LCB7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtMjU3IH1dLCAvLyBFUzM4NCwg
UlMyNTYKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RTdXBwb3J0ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJUaGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGlj
YXRvciBkb2Vzbid0IHN1cHBvcnQgYW55IHByb3ZpZGVkIFB1YmxpY0tleUNyZWRlbnRpYWxQYXJh
bWV0ZXJzLiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCB1bnN1cHBvcnRlZCBwdWJsaWMga2V5IGNyZWRlbnRpYWwgcGFyYW1ldGVycyBpbiBhIG1v
Y2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFz
ZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCk7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0
KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogIkpv
aG4gQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFy
c2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAot
ICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCB9XQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBs
ZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAg
ICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAg
ICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAg
ICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6
IC03IH1dLAorICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogW3sgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElEIH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
YWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2Vy
RW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAi
QXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBhbiBlbnRyeSBvZiB0aGUgZXhjbHVkZUNy
ZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIiku
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5QmFzZTY0
LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVh
dGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVudGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9m
IHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0
aGVudGljYXRvci4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWlu
KHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9
LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUg
Y3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJwSWQsIGNyZWRlbnRpYWxJREJh
c2U2NCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIG1hdGNoZWQgZXhjbHVkZSBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0
aGVudGljYXRvci4iKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAg
ICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAg
ICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1w
bGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2Vy
OiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1z
OiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCi0gICAgICAgICAgICAgICAgICAg
IGV4Y2x1ZGVDcmVkZW50aWFsczogWwotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAi
cHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlh
bElELCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJibGUiXSB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVk
ZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9Ci0gICAgICAgICAgICAgICAgICAg
IF0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgIHByb21pc2VfdGVzdChh
c3luYyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVy
YXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2Fp
dCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0
IGNyZWRlbnRpYWxJREJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOworCisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlkOiBC
YXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgICAgIGV4Y2x1ZGVDcmVkZW50aWFsczogWworICAgICAgICAgICAgICAgICAg
ICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJ1
c2IiXSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNy
ZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAorICAgICAgICAgICAgICAgICAgICB7
IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJibGUi
XSB9LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRl
bnRpYWxJRCwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0KKyAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJh
c2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0
dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVu
dGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQXQgbGVhc3Qgb25lIGNyZWRlbnRpYWwgbWF0Y2hlcyBh
biBlbnRyeSBvZiB0aGUgZXhjbHVkZUNyZWRlbnRpYWxzIGxpc3QgaW4gdGhlIHBsYXRmb3JtIGF0
dGFjaGVkIGF1dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9L
ZXljaGFpbihwcml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0g
ICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5h
dmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJBdCBsZWFzdCBvbmUgY3JlZGVu
dGlhbCBtYXRjaGVzIGFuIGVudHJ5IG9mIHRoZSBleGNsdWRlQ3JlZGVudGlhbHMgbGlzdCBpbiB0
aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iKS50aGVuKCgpID0+IHsKLSAgICAg
ICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRl
XV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIDJuZCIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNo
YWluKHRlc3RScElkLCBjcmVkZW50aWFsSURCYXNlNjQpOworICAgICAgICB9KTsKKyAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3Jl
ZGVudGlhbHMgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDJuZCIpOwogCi0gICAgICAg
IHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAg
ICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDog
QmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlOYW1lOiAiSm9obiIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAot
ICAgICAgICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtl
eSIsIGFsZzogLTcgfV0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLCAiQ291bGRuJ3QgdmVyaWZ5IHVzZXIuIik7
Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IHVz
ZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICBwcm9taXNl
X3Rlc3QodCA9PiB7CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKKyAgICAgICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1l
OiAiZXhhbXBsZS5jb20iCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2Vy
OiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAg
ICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAor
ICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2
IiksCisgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1r
ZXkiLCBhbGc6IC03IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIHJldHVy
biBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRp
YWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IHZlcmlmeSB1c2VyLiIpOworICAgIH0sICJQ
dWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9
PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1Ymxp
Y0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImV4YW1wbGUuY29tIgotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBB
cHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0VXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cu
aW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUs
IGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwotICAgICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLCAiQ291bGRuJ3QgY3JlYXRlIHByaXZhdGUga2V5LiIpOwotICAgICAgICB9LCAi
UHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aG91dCBwcml2YXRlIGtleXMgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisgICAgcHJvbWlzZV90ZXN0KHQgPT4gewor
ICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAg
ICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImV4YW1wbGUuY29t
IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgICAgICBp
ZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVz
dGF0aW9uOiBmYWxzZSB9IH0pOworICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIlVu
a25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJDb3Vs
ZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2NyZWF0ZV1dIHdpdGhvdXQgcHJpdmF0ZSBrZXlzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOwogCi0gICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5j
b20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhB
cnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7
IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgYXR0
ZXN0YXRpb246ICJkaXJlY3QiCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGludGVybmFs
cy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0
QXV0aGVudGljYXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJpdmF0ZUtl
eUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCB9IH0pOwotICAgICAgICAgICAgcmV0dXJuIHByb21p
c2VSZWplY3RzKHQsICJVbmtub3duRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRl
KG9wdGlvbnMpLCAiQ291bGRuJ3QgYXR0ZXN0OiBUaGUgb3BlcmF0aW9uIGNvdWxkbid0IGNvbXBs
ZXRlLiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVhblVwS2V5Y2hhaW4odGVzdFJw
SWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJs
aWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRob3V0IGF0dGVzdGF0aW9uIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsK
KyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtl
eUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVD
cmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJ
REJhc2U2NCA9IGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpOwogCi0gICAgICAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAg
ICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6
IHVzZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJM
LnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxh
eU5hbWU6ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAg
ICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9
XQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykgewotICAgICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0
aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246
IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSB9IH0pOwotICAgICAgICAgICAgICAgIHRl
c3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQs
IHVzZXJoYW5kbGVCYXNlNjQpOworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAg
ICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgcnA6IHsKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZTogImV4YW1wbGUuY29tIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgdXNlcjogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiSm9obiBBcHBsZXNlZWQiLAor
ICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFz
ZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXko
IjEyMzQ1NiIpLAorICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJw
dWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogImRp
cmVjdCIKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwg
IkNvdWxkbid0IGNyZWF0ZSBwcml2YXRlIGtleS4iKS50aGVuKCgpID0+IHsKLSAgICAgICAgICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydF9m
YWxzZSh0ZXN0UnVubmVyLmtleUV4aXN0c0luS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVC
YXNlNjQpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlh
bCdzIFtbY3JlYXRlXV0gZGVsZXRpbmcgb2xkIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1
dGhlbnRpY2F0b3IuIik7CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3Vy
YXRpb24oeyBsb2NhbDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0
YXRpb246IGZhbHNlLCBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0IH0gfSk7Cisg
ICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiVW5rbm93bkVycm9yIiwgbmF2aWdhdG9y
LmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIkNvdWxkbid0IGF0dGVzdDogVGhlIG9wZXJh
dGlvbiBjb3VsZG4ndCBjb21wbGV0ZS4iKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXlj
aGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwg
IlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGhvdXQgYXR0ZXN0YXRpb24gaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KGZ1
bmN0aW9uKHQpIHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAg
ICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20iCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6
ICJKb2huIEFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogYXNjaWlUb1Vp
bnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJKb2huIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgY2hh
bGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAg
IHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKLSAg
ICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAsCi0gICAgICAgICAgICAgICAgICAgIGF1dGhl
bnRpY2F0b3JTZWxlY3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6ICJjcm9zcy1wbGF0
Zm9ybSIgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAgcHJvbWlzZV90
ZXN0KGFzeW5jIHQgPT4geworICAgICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQg
Z2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9
IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAg
Y29uc3QgY3JlZGVudGlhbElEQmFzZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCk7CiAK
LSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAgICAgICAgIGludGVy
bmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNj
ZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UgfSB9KTsK
LSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwg
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBv
dXQuIik7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0gICAgfSkoKTsKKyAg
ICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAg
ICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZTogdGVzdFVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAg
IGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkpvaG4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAg
ICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03
IH1dCisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7CisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29u
ZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRB
dHRlc3RhdGlvbjogZmFsc2UgfSB9KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtl
eVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVu
ZGxlQmFzZTY0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwg
IlVua25vd25FcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucyksICJD
b3VsZG4ndCBjcmVhdGUgcHJpdmF0ZSBrZXkuIikudGhlbigoKSA9PiB7CisgICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUodGVzdFJ1
bm5lci5rZXlFeGlzdHNJbktleWNoYWluKHRlc3RScElkLCBjcmVkZW50aWFsSURCYXNlNjQpKTsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3Jl
ZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2NyZWF0ZV1dIG5vdCBkZWxldGluZyBvbGQgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChmdW5jdGlvbih0KSB7Cisg
ICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAg
ICAgICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAiZXhhbXBsZS5jb20i
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAg
ICAgICAgICAgIG5hbWU6ICJKb2huIEFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgICAgIGlk
OiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgICAgIGRpc3Bs
YXlOYW1lOiAiSm9obiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICBwdWJL
ZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisgICAgICAg
ICAgICAgICAgdGltZW91dDogMTAsCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRvclNlbGVj
dGlvbjogeyBhdXRoZW50aWNhdG9yQXR0YWNobWVudDogImNyb3NzLXBsYXRmb3JtIiB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisg
ICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlv
bih7IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRp
b246IGZhbHNlIH0gfSk7CisgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxs
b3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKSwgIk9wZXJh
dGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0
ZV1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1jcmVhdGUt
c3VjY2Vzcy1sb2NhbC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZmFkYWMyMTFhN2NlMDdmMjVh
NWQyMGFjOWVlYjIyOTA2YzcwZmVmNy4uNjUxMDk4MDQ2NGVmZThkMDYzOGU5OTRmYzkyOTYxODkx
YjE5NWZmMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGlj
LWtleS1jcmVkZW50aWFsLWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwt
Y3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC01LDQgKzUsNiBAQCBQ
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRl
IGNyZWRlbnRpYWwgaWRzIGJ1dCBubwogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3Iu
IAogUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIGluZGlyZWN0IGF0
dGVzdGF0aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAKIFBBU1MgUHVibGljS2V5
Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0YXRpb24gaW4gYSBtb2Nr
IGxvY2FsIGF1dGhlbnRpY2F0b3IuIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVh
dGVdXSB3aXRoIGR1cGxpY2F0ZSBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNh
dG9yLiAKK1BBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkdXBsaWNh
dGUgY3JlZGVudGlhbCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMiAKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWNyZWF0ZS1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMu
aHRtbAppbmRleCA4YWFmNWFmYjllMzE3MDliNmUyNDVmODc4NDJjZDZhZTgzYWJjZjljLi5iZDMw
NzYxNTNmMWJmOTA5MGQyOTg0MDM4NGYwMzdjMjk4OGM4NWMyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nl
c3MtbG9jYWwuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9w
dWJsaWMta2V5LWNyZWRlbnRpYWwtY3JlYXRlLXN1Y2Nlc3MtbG9jYWwuaHR0cHMuaHRtbApAQCAt
NSwyMDggKzUsMzQxIEBACiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi9yZXNvdXJjZXMvY2Jvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0
PgotICAgIChhc3luYyBmdW5jdGlvbigpIHsKLSAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2
NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0
KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgaXNOb25lQXR0ZXN0YXRpb24gPSB0cnVlKQorICAg
IHsKKyAgICAgICAgLy8gQ2hlY2sga2V5Y2hhaW4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgICAgICBhc3NlcnRfdHJ1ZSh0ZXN0UnVubmVyLmtleUV4aXN0c0luS2V5
Y2hhaW4odGVzdFJwSWQsIGJhc2U2NGVuY29kZShjcmVkZW50aWFsSUQpKSk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0ZW5jb2RlKGNyZWRl
bnRpYWxJRCkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAorICAgICAg
ICBhc3NlcnRfYXJyYXlfZXF1YWxzKEJhc2U2NFVSTC5wYXJzZShjcmVkZW50aWFsLmlkKSwgY3Jl
ZGVudGlhbElEKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFsLnR5cGUsICdwdWJs
aWMta2V5Jyk7CisgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3Jl
ZGVudGlhbC5yYXdJZCksIGNyZWRlbnRpYWxJRCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0
ZXNUb0FTQ0lJU3RyaW5nKGNyZWRlbnRpYWwucmVzcG9uc2UuY2xpZW50RGF0YUpTT04pLCAneyJ0
eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiTVRJek5EVTIiLCJvcmlnaW4iOiJo
dHRwczovL2xvY2FsaG9zdDo5NDQzIn0nKTsKKyAgICAgICAgYXNzZXJ0X25vdF9vd25fcHJvcGVy
dHkoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRzKCksICJhcHBpZCIpOworCisg
ICAgICAgIC8vIENoZWNrIGF0dGVzdGF0aW9uCisgICAgICAgIGNvbnN0IGF0dGVzdGF0aW9uT2Jq
ZWN0ID0gQ0JPUi5kZWNvZGUoY3JlZGVudGlhbC5yZXNwb25zZS5hdHRlc3RhdGlvbk9iamVjdCk7
CisgICAgICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKKyAgICAgICAgICAgIGFzc2VydF9lcXVh
bHMoYXR0ZXN0YXRpb25PYmplY3QuZm10LCAibm9uZSIpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgImFwcGxlIik7CisgICAg
ICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2RlQXV0
aERhdGEoYXR0ZXN0YXRpb25PYmplY3QuYXV0aERhdGEpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0
MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2MyIpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdzLCA2OSk7CisgICAgICAgIGFzc2VydF9lcXVh
bHMoYXV0aERhdGEuY291bnRlciwgMCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hl
eFN0cmluZyhhdXRoRGF0YS5hYWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAiKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdXRoRGF0YS5jcmVkZW50aWFsSUQs
IGNyZWRlbnRpYWxJRCk7CisgICAgICAgIC8vIENoZWNrIHNlbGYgYXR0ZXN0YXRpb24KKyAgICAg
ICAgYXNzZXJ0X3RydWUoY2hlY2tQdWJsaWNLZXkoYXV0aERhdGEucHVibGljS2V5KSk7CisgICAg
ICAgIGlmIChpc05vbmVBdHRlc3RhdGlvbikKKyAgICAgICAgICAgIGFzc2VydF9vYmplY3RfZXF1
YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQsIHsgfSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10LmFsZywgLTcp
OworICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdHRlc3RhdGlvbk9iamVjdC5hdHRTdG10Lng1
Yy5sZW5ndGgsIDIpOworICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdHRlc3RhdGlv
bk9iamVjdC5hdHRTdG10Lng1Y1swXSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RBdHRlc3RhdGlvbkNl
cnRpZmljYXRlQmFzZTY0KSk7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKGF0dGVz
dGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjWzFdLCBCYXNlNjRVUkwucGFyc2UodGVzdEF0dGVzdGF0
aW9uSXNzdWluZ0NBQ2VydGlmaWNhdGVCYXNlNjQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2
NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVk
ZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7
Ci0gICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92
ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgY29u
c3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOwogICAgICAg
ICBpZiAod2luZG93LmludGVybmFscykKICAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2Vi
QXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsKICAgICAgICAgICAgICAgICBsb2NhbDogewog
ICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKICAgICAgICAg
ICAgICAgICAgICAgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLAogICAgICAgICAgICAgICAgICAg
ICBwcml2YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAotICAgICAgICAgICAgICAgICAg
ICB1c2VyQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0
LAotICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OiB0
ZXN0QXR0ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NAogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0pOwogCi0gICAgICAgIGZ1bmN0aW9uIGNoZWNrUmVzdWx0KGNyZWRl
bnRpYWwsIGlzTm9uZUF0dGVzdGF0aW9uID0gdHJ1ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
Ly8gQ2hlY2sga2V5Y2hhaW4KLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHRlc3RSdW5uZXIua2V5RXhpc3RzSW5LZXljaGFp
bih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCkpOwotICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKKyAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAgICAg
ICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAgICAg
ICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0
VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNwbGF5
TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAgICBw
dWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCiAgICAg
ICAgICAgICB9CisgICAgICAgIH07CiAKLSAgICAgICAgICAgIC8vIENoZWNrIHJlc3BvbmQKLSAg
ICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwu
aWQpLCBjcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhjcmVkZW50aWFs
LnR5cGUsICdwdWJsaWMta2V5Jyk7Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5l
dyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmF3SWQpLCBjcmVkZW50aWFsSUQpOwotICAgICAgICAg
ICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3JlZGVudGlhbC5yZXNwb25zZS5j
bGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5jcmVhdGUiLCJjaGFsbGVuZ2UiOiJN
VEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMifScpOwotICAgICAgICAg
ICAgYXNzZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25S
ZXN1bHRzKCksICJhcHBpZCIpOwotCi0gICAgICAgICAgICAvLyBDaGVjayBhdHRlc3RhdGlvbgot
ICAgICAgICAgICAgY29uc3QgYXR0ZXN0YXRpb25PYmplY3QgPSBDQk9SLmRlY29kZShjcmVkZW50
aWFsLnJlc3BvbnNlLmF0dGVzdGF0aW9uT2JqZWN0KTsKLSAgICAgICAgICAgIGlmIChpc05vbmVB
dHRlc3RhdGlvbikKLSAgICAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2Jq
ZWN0LmZtdCwgIm5vbmUiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhc3Nl
cnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmZtdCwgImFwcGxlIik7Ci0gICAgICAgICAgICAv
LyBDaGVjayBhdXRoRGF0YQotICAgICAgICAgICAgY29uc3QgYXV0aERhdGEgPSBkZWNvZGVBdXRo
RGF0YShhdHRlc3RhdGlvbk9iamVjdC5hdXRoRGF0YSk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEucnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2
ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYzMmM3OTk1Y2YzYmE4MzFkOTc2MyIpOwotICAg
ICAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5mbGFncywgNjkpOwotICAgICAgICAgICAg
YXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCAwKTsKLSAgICAgICAgICAgIGFzc2VydF9l
cXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5hYWd1aWQpLCAiMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAiKTsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoYXV0
aERhdGEuY3JlZGVudGlhbElELCBjcmVkZW50aWFsSUQpOwotICAgICAgICAgICAgLy8gQ2hlY2sg
c2VsZiBhdHRlc3RhdGlvbgotICAgICAgICAgICAgYXNzZXJ0X3RydWUoY2hlY2tQdWJsaWNLZXko
YXV0aERhdGEucHVibGljS2V5KSk7Ci0gICAgICAgICAgICBpZiAoaXNOb25lQXR0ZXN0YXRpb24p
Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X29iamVjdF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3Qu
YXR0U3RtdCwgeyB9KTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGFzc2Vy
dF9lcXVhbHMoYXR0ZXN0YXRpb25PYmplY3QuYXR0U3RtdC5hbGcsIC03KTsKLSAgICAgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKGF0dGVzdGF0aW9uT2JqZWN0LmF0dFN0bXQueDVjLmxlbmd0aCwg
Mik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdHRlc3RhdGlvbk9iamVj
dC5hdHRTdG10Lng1Y1swXSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RBdHRlc3RhdGlvbkNlcnRpZmlj
YXRlQmFzZTY0KSk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhhdHRlc3Rh
dGlvbk9iamVjdC5hdHRTdG10Lng1Y1sxXSwgQmFzZTY0VVJMLnBhcnNlKHRlc3RBdHRlc3RhdGlv
bklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNy
ZWRlbnRpYWxJRCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4iKTsKIAotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25z
dCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAg
ICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIs
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNlZWQiLAotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5w
YXJzZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAgICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczog
W3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRl
UHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBj
YWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IHVz
ZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAgICAgICAgICAgICAgbG9jYWw6IHsKKyAgICAg
ICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgcHJp
dmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtleUJhc2U2NCwKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9OwotCi0gICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNy
ZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgICAgIGNoZWNr
UmVzdWx0KGNyZWRlbnRpYWwpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNL
ZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRoIG1pbmltdW0gb3B0aW9ucyBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4iKTsKLQotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0g
ICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTog
ewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFt
ZTogImxvY2FsaG9zdCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVzZXJoYW5kbGVCYXNl
NjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5k
bGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJBcHBsZXNl
ZWQiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBjaGFsbGVu
Z2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAgICAgICAgICAgcHVi
S2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAotICAgICAg
ICAgICAgICAgICAgICBhdXRoZW50aWNhdG9yU2VsZWN0aW9uOiB7IGF1dGhlbnRpY2F0b3JBdHRh
Y2htZW50OiAicGxhdGZvcm0iIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25z
KS50aGVuKGNyZWRlbnRpYWwgPT4gewotICAgICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRl
bnRpYWwpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tjcmVhdGVdXSB3aXRoIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb24geyAncGxhdGZvcm0nIH0g
aW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0KLSAgICAgICAgcHJvbWlzZV90ZXN0
KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBw
dWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWU6ICJleGFtcGxlLmNvbSIKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNl
cmhhbmRsZUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFy
c2UodXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZTogIkpvaG4iLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBj
aGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAot
ICAgICAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3Bv
cnRzOiBbInVzYiJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRy
YW5zcG9ydHM6IFsiYmxlIl0gfQotICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgIGNvbnN0
IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBy
cDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFt
ZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6
ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgY2hhbGxl
bmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAgICAgcHViS2V5
Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAorICAgICAgICAg
ICAgICAgIGF1dGhlbnRpY2F0b3JTZWxlY3Rpb246IHsgYXV0aGVudGljYXRvckF0dGFjaG1lbnQ6
ICJwbGF0Zm9ybSIgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJldHVy
biBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuY3JlYXRlKG9wdGlvbnMpLnRoZW4oY3JlZGVudGlhbCA9
PiB7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQpOwor
ICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0
aCBhdXRoZW50aWNhdG9yU2VsZWN0aW9uIHsgJ3BsYXRmb3JtJyB9IGluIGEgbW9jayBsb2NhbCBh
dXRoZW50aWNhdG9yLiIpOworCisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAgICAg
ICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFzZTY0
KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRp
YWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9
IGdlbmVyYXRlVXNlcmhhbmRsZUJhc2U2NCgpOworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsKKyAgICAgICAgICAgICAgICBsb2NhbDogeworICAgICAgICAgICAgICAgICAgICBh
Y2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0QXR0
ZXN0YXRpb246IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5QmFzZTY0OiBw
cml2YXRlS2V5QmFzZTY0LAogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAg
ICAgICAgICB9KTsKKworICAgICAgICBjb25zdCBhbm90aGVyUHJpdmF0ZUtleUJhc2U2NCA9IGF3
YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBhbm90aGVyQ3Jl
ZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKGFub3RoZXJQcml2YXRlS2V5
QmFzZTY0KTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tl
eTogeworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJl
eGFtcGxlLmNvbSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsK
KyAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAg
ICAgICAgICAgaWQ6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAg
ICAgICAgICAgICAgZGlzcGxheU5hbWU6ICJKb2huIiwKKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxn
OiAtNyB9XSwKKyAgICAgICAgICAgICAgICBleGNsdWRlQ3JlZGVudGlhbHM6IFsKKyAgICAgICAg
ICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBhbm90aGVyQ3JlZGVudGlhbElE
LCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCisgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogYW5vdGhlckNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9
LAorICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGFub3RoZXJD
cmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfQorICAgICAgICAgICAgICAgIF0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihhbm90aGVyUHJpdmF0
ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKworICAg
ICAgICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNy
ZWRlbnRpYWwgPT4geworICAgICAgICAgICAgY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwgY3JlZGVu
dGlhbElEKTsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHRlc3RFUzI1NlByaXZhdGVLZXlC
YXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0ZW5jb2RlKGFub3RoZXJDcmVk
ZW50aWFsSUQpKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBb
W2NyZWF0ZV1dIHdpdGggbWF0Y2hlZCBleGNsdWRlIGNyZWRlbnRpYWwgaWRzIGJ1dCBub3QgdHJh
bnNwb3J0cyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKIAotICAgICAgICAgICAg
cmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50
aWFsID0+IHsKLSAgICAgICAgICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0g
d2l0aCBtYXRjaGVkIGV4Y2x1ZGUgY3JlZGVudGlhbCBpZHMgYnV0IG5vdCB0cmFuc3BvcnRzIGlu
IGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotCi0gICAgICAgIHByb21pc2VfdGVzdCh0
ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgcHVi
bGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIHJwOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOiAibG9jYWxob3N0IiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgdXNlcjogewotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdXNlcmhh
bmRsZUJhc2U2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwucGFyc2Uo
dXNlcmhhbmRsZUJhc2U2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTog
IkFwcGxlc2VlZCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAotICAgICAgICAgICAgICAg
ICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0s
Ci0gICAgICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAibm9uZSIKKyAgICBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBn
ZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0g
YXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBj
b25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7
CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQsCiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
ewotICAgICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwpOworICAgICAgICBjb25z
dCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAg
cnA6IHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICB1c2VyOiB7CisgICAgICAgICAgICAgICAgICAgIG5h
bWU6IHVzZXJoYW5kbGVCYXNlNjQsCisgICAgICAgICAgICAgICAgICAgIGlkOiBCYXNlNjRVUkwu
cGFyc2UodXNlcmhhbmRsZUJhc2U2NCksCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1l
OiAiQXBwbGVzZWVkIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIpLAorICAgICAgICAgICAgICAgIHB1Yktl
eUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMta2V5IiwgYWxnOiAtNyB9XSwKKyAgICAgICAg
ICAgICAgICBhdHRlc3RhdGlvbjogIm5vbmUiCisgICAgICAgICAgICB9CisgICAgICAgIH07CisK
KyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNy
ZWRlbnRpYWxJRCk7CisgICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3Mg
W1tjcmVhdGVdXSB3aXRoIG5vbmUgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0
IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAg
ICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHBy
aXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJh
dGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eworICAgICAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1
dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlv
bjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtl
eUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgdXNlckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0
QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJt
ZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlm
aWNhdGVCYXNlNjQKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggbm9uZSBhdHRlc3RhdGlv
biBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKLQotICAgICAgICBwcm9taXNlX3Rl
c3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAg
IHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBycDogewotICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZTogImxvY2FsaG9zdCIsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHVzZXI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IHVz
ZXJoYW5kbGVCYXNlNjQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpZDogQmFzZTY0VVJMLnBh
cnNlKHVzZXJoYW5kbGVCYXNlNjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5h
bWU6ICJBcHBsZXNlZWQiLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAg
ICAgICAgICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03
IH1dLAotICAgICAgICAgICAgICAgICAgICBhdHRlc3RhdGlvbjogImluZGlyZWN0IgorCisgICAg
ICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAg
ICAgICAgICBycDogeworICAgICAgICAgICAgICAgICAgICBuYW1lOiAibG9jYWxob3N0IiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHVzZXI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbmFtZTogdXNlcmhhbmRsZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaWQ6IEJh
c2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKKyAgICAgICAgICAgICAgICAgICAgZGlz
cGxheU5hbWU6ICJBcHBsZXNlZWQiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiksCisgICAgICAgICAgICAg
ICAgcHViS2V5Q3JlZFBhcmFtczogW3sgdHlwZTogInB1YmxpYy1rZXkiLCBhbGc6IC03IH1dLAor
ICAgICAgICAgICAgICAgIGF0dGVzdGF0aW9uOiAiaW5kaXJlY3QiCisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUo
b3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNy
ZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgZmFsc2UpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVi
bGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBpbmRpcmVjdCBhdHRlc3RhdGlvbiBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKKyAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRl
UHJpdmF0ZUtleUJhc2U2NCgpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBj
YWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IHVz
ZXJoYW5kbGVCYXNlNjQgPSBnZW5lcmF0ZVVzZXJoYW5kbGVCYXNlNjQoKTsKKyAgICAgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhl
bnRpY2F0aW9uQ29uZmlndXJhdGlvbih7CisgICAgICAgICAgICAgICAgbG9jYWw6IHsKKyAgICAg
ICAgICAgICAgICAgICAgYWNjZXB0QXV0aGVudGljYXRpb246IHRydWUsCisgICAgICAgICAgICAg
ICAgICAgIGFjY2VwdEF0dGVzdGF0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBwcml2
YXRlS2V5QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAorICAgICAgICAgICAgICAgICAgICB1c2Vy
Q2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0LAorICAg
ICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVDQUNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0
ZXN0YXRpb25Jc3N1aW5nQ0FDZXJ0aWZpY2F0ZUJhc2U2NAogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsKLSAgICAgICAgICAgICAgICAgICAgbG9jYWw6IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgYWNj
ZXB0QXR0ZXN0YXRpb246IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlS2V5
QmFzZTY0OiBwcml2YXRlS2V5QmFzZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgdXNlckNl
cnRpZmljYXRlQmFzZTY0OiB0ZXN0QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZUNBQ2VydGlmaWNhdGVCYXNlNjQ6IHRlc3RB
dHRlc3RhdGlvbklzc3VpbmdDQUNlcnRpZmljYXRlQmFzZTY0Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5j
cmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKLSAgICAgICAg
ICAgICAgICBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBmYWxzZSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggaW5kaXJl
Y3QgYXR0ZXN0YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7Ci0KLSAgICAg
ICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAg
ICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgcnA6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB1c2VyOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgaWQ6
IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRpc3BsYXlOYW1lOiAiQXBwbGVzZWVkIiwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpORFUyIiks
Ci0gICAgICAgICAgICAgICAgICAgIHB1YktleUNyZWRQYXJhbXM6IFt7IHR5cGU6ICJwdWJsaWMt
a2V5IiwgYWxnOiAtNyB9XSwKLSAgICAgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJkaXJl
Y3QiCisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTog
eworICAgICAgICAgICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2Nh
bGhvc3QiLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAg
ICAgICAgICAgICAgICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAg
ICAgICBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAg
ICAgICAgICAgICAgICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFs
ZzogLTcgfV0sCisgICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJkaXJlY3QiCisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFs
cy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNr
UmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwgZmFsc2UpOworICAgICAgICB9KTsKKyAg
ICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbY3JlYXRlXV0gd2l0aCBkaXJlY3QgYXR0ZXN0
YXRpb24gaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rl
c3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBn
ZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0g
YXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBj
b25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAg
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tX
ZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeworICAgICAgICAgICAgICAgIGxvY2FsOiB7
CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgIHByaXZhdGVLZXlCYXNlNjQ6IHByaXZhdGVLZXlCYXNlNjQsCiAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICByZXR1cm4g
bmF2aWdhdG9yLmNyZWRlbnRpYWxzLmNyZWF0ZShvcHRpb25zKS50aGVuKGNyZWRlbnRpYWwgPT4g
ewotICAgICAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGZhbHNlKTsKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAg
ICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFz
ZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNw
bGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgY29uc3QgYW5vdGhlclByaXZhdGVL
ZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29u
c3QgYW5vdGhlckNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChhbm90
aGVyUHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihhbm90aGVyUHJpdmF0ZUtl
eUJhc2U2NCwgdGVzdFJwSWQsIGJhc2U2NGVuY29kZShDQk9SLmVuY29kZSh7ICJpZCI6IEJhc2U2
NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSwgIm5hbWUiOiB1c2VyaGFuZGxlQmFzZTY0IH0p
KSk7CisKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9u
cykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRp
YWwsIGNyZWRlbnRpYWxJRCk7CisgICAgICAgICAgICBhc3NlcnRfZmFsc2UodGVzdFJ1bm5lci5r
ZXlFeGlzdHNJbktleWNoYWluKHRlc3RScElkLCBiYXNlNjRlbmNvZGUoYW5vdGhlckNyZWRlbnRp
YWxJRCkpKTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2Ny
ZWF0ZV1dIHdpdGggZHVwbGljYXRlIGNyZWRlbnRpYWwgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRp
Y2F0b3IuIik7CisKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0
IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAg
ICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHBy
aXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJh
dGVVc2VyaGFuZGxlQmFzZTY0KCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24o
eworICAgICAgICAgICAgICAgIGxvY2FsOiB7CisgICAgICAgICAgICAgICAgICAgIGFjY2VwdEF1
dGhlbnRpY2F0aW9uOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBhY2NlcHRBdHRlc3RhdGlv
bjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZUtleUJhc2U2NDogcHJpdmF0ZUtl
eUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgdXNlckNlcnRpZmljYXRlQmFzZTY0OiB0ZXN0
QXR0ZXN0YXRpb25DZXJ0aWZpY2F0ZUJhc2U2NCwKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJt
ZWRpYXRlQ0FDZXJ0aWZpY2F0ZUJhc2U2NDogdGVzdEF0dGVzdGF0aW9uSXNzdWluZ0NBQ2VydGlm
aWNhdGVCYXNlNjQKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2NyZWF0ZV1dIHdpdGggZGlyZWN0IGF0dGVzdGF0
aW9uIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwotICAgIH0pKCk7CisKKyAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAgICAgICAg
ICAgICAgIHJwOiB7CisgICAgICAgICAgICAgICAgICAgIG5hbWU6ICJsb2NhbGhvc3QiLAorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgdXNlcjogeworICAgICAgICAgICAgICAg
ICAgICBuYW1lOiB1c2VyaGFuZGxlQmFzZTY0LAorICAgICAgICAgICAgICAgICAgICBpZDogQmFz
ZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQpLAorICAgICAgICAgICAgICAgICAgICBkaXNw
bGF5TmFtZTogIkFwcGxlc2VlZCIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJzZSgiTVRJek5EVTIiKSwKKyAgICAgICAgICAgICAg
ICBwdWJLZXlDcmVkUGFyYW1zOiBbeyB0eXBlOiAicHVibGljLWtleSIsIGFsZzogLTcgfV0sCisg
ICAgICAgICAgICAgICAgYXR0ZXN0YXRpb246ICJkaXJlY3QiCisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisKKyAgICAgICAgY29uc3QgYW5vdGhlclByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBn
ZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgYW5vdGhlckNyZWRlbnRp
YWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRlbnRpYWxJRChhbm90aGVyUHJpdmF0ZUtleUJhc2U2
NCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5hZGRUZXN0S2V5VG9LZXljaGFpbihhbm90aGVyUHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQs
IGJhc2U2NGVuY29kZShDQk9SLmVuY29kZSh7ICJpZCI6IEJhc2U2NFVSTC5wYXJzZSh1c2VyaGFu
ZGxlQmFzZTY0KSwgIm5hbWUiOiB1c2VyaGFuZGxlQmFzZTY0IH0pKSk7CisKKyAgICAgICAgcmV0
dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5jcmVhdGUob3B0aW9ucykudGhlbihjcmVkZW50aWFs
ID0+IHsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KGNyZWRlbnRpYWwsIGNyZWRlbnRpYWxJRCwg
ZmFsc2UpOworICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHRlc3RSdW5uZXIua2V5RXhpc3RzSW5L
ZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0ZW5jb2RlKGFub3RoZXJDcmVkZW50aWFsSUQpKSk7Cisg
ICAgICAgIH0pOworICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tjcmVhdGVdXSB3aXRo
IGR1cGxpY2F0ZSBjcmVkZW50aWFsIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiAyIik7
CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1
YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50
aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZDc5
ODZjOGE5YmM3OWM3ZDE3ZWEwOTMxNGMxNDgxYTNlMTJlMzE1ZS4uZDNmNGY1ZDdhZTlmYWRlYzk0
NGRlODg3NTgxOWEyNjViNTQzNTQwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5o
dHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVi
bGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLXNpbGVudC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTEsNSArMSw1IEBACiAKLVBBU1MgUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCi1Q
QVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4g
YSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDIgCi1QQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwn
cyBbW2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIDMgCitQQVNTIFB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hl
ZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gCitQQVNTIFB1Ymxp
Y0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBpbiBh
IG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMm5kIAorUEFTUyBQdWJsaWNLZXlDcmVkZW50aWFs
J3MgW1tnZXRdXSB3aXRob3V0IHVzZXIgY29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGlj
YXRvci4gCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1Ymxp
Yy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFp
bHVyZS1sb2NhbC1zaWxlbnQuaHR0cHMuaHRtbAppbmRleCBmMDJjMjU1ZTg4MjQwNDc0ZjEyMjJj
MTJiMDY1YzZiOWY4ZTk5ZjMyLi44M2ViNmI2MGI2ZjkwYjZlN2VlNGFlZjllOGUxNjEzYmQ5NjY5
ZGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRobi9wdWJsaWMta2V5
LWNyZWRlbnRpYWwtZ2V0LWZhaWx1cmUtbG9jYWwtc2lsZW50Lmh0dHBzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWls
dXJlLWxvY2FsLXNpbGVudC5odHRwcy5odG1sCkBAIC00LDY0ICs0LDcyIEBACiA8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iLi9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgotICAgIChhc3luYyBm
dW5jdGlvbigpIHsKLSAgICAgICAgY29uc3QgdXNlcmhhbmRsZUJhc2U2NCA9IGdlbmVyYXRlVXNl
cmhhbmRsZUJhc2U2NCgpOworICAgIHByb21pc2VfdGVzdCh0ID0+IHsKKyAgICAgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2Vw
dEF1dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlIH0gfSk7CisK
KyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKKyAgICAgICAgICAgICAgICAgICAgeyB0
eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJh
c2U2NCksIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBl
OiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2
NCksIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAi
cHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCks
IHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVi
bGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCksIHRy
YW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAg
ICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIik7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3lu
YyB0ID0+IHsKICAgICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRl
UHJpdmF0ZUtleUJhc2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBj
YWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNy
ZWRlbnRpYWxJREJhc2U2NCA9IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLCBjcmVk
ZW50aWFsSUQpKTsKICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3Rz
IG5lZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgog
ICAgICAgICBpZiAod2luZG93LmludGVybmFscykKLSAgICAgICAgICAgIGludGVybmFscy5zZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwg
bG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjog
ZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsK
KyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0
aW9uKHsgc2lsZW50RmFpbHVyZTogdHJ1ZSwgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246
IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZENyZWRlbnRpYWxJZEJh
c2U2NDogY3JlZGVudGlhbElEQmFzZTY0IH0gfSk7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQg
PT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJs
aWNLZXk6IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJh
eSgiMTIzNDU2IiksCi0gICAgICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlh
bElELCB0cmFuc3BvcnRzOiBbInVzYiJdIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5
cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJuZmMiXSB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVk
ZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiYmxlIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImlu
dGVybmFsIl0gfQotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB0
aW1lb3V0OiAxMAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgIGNv
bnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAg
ICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1Ymxp
Yy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxlQmFzZTY0KSB9CisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAorICAgICAgICAgICAg
fQorICAgICAgICB9OwogCi0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5v
dEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJPcGVy
YXRpb24gdGltZWQgb3V0LiIpOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBzaWxlbnQgZmFpbHVyZSBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4i
KTsKLQotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRp
b25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTogewotICAgICAgICAgICAgICAgICAg
ICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKLSAgICAgICAgICAgICAg
ICAgICAgYWxsb3dDcmVkZW50aWFsczogWwotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBl
OiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCkgfQot
ICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAxMAot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJp
dmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVu
KCgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCBjcmVkZW50
aWFsSURCYXNlNjQpOworICAgICAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwg
YXV0aGVudGljYXRvci4gMm5kIik7CiAKLSAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKLSAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZh
dGVLZXlCYXNlNjQsIHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIHJl
dHVybiBwcm9taXNlUmVqZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRl
bnRpYWxzLmdldChvcHRpb25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFu
ZGxlQmFzZTY0KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNy
ZWRlbnRpYWwncyBbW2dldF1dIHdpdGggc2lsZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1
dGhlbnRpY2F0b3IuIDIiKTsKKyAgICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAg
IGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQo
KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlh
bElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQg
PSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwgY3JlZGVudGlhbElEKSk7CisgICAg
ICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRl
IGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0
aW9uQ29uZmlndXJhdGlvbih7IHNpbGVudEZhaWx1cmU6IHRydWUsIGxvY2FsOiB7IGFjY2VwdEF1
dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRD
cmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2NCB9IH0pOwogCi0gICAgICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAg
ICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNj
aWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiAx
MAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07CisgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsKKyAgICAgICAgICAgICAgICBjaGFsbGVu
Z2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwKKyAgICAgICAgICAgICAgICB0aW1lb3V0
OiAxMAorICAgICAgICAgICAgfQorICAgICAgICB9OwogCisgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJp
dmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAg
ICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0
b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKS50aGVu
KCgpID0+IHsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRl
c3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVq
ZWN0cyh0LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRp
b25zKSwgIk9wZXJhdGlvbiB0aW1lZCBvdXQuIikudGhlbigoKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgICAgICB0ZXN0UnVubmVy
LmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggc2ls
ZW50IGZhaWx1cmUgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0b3IuIDMiKTsKLSAgICB9KSgp
OworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCBj
cmVkZW50aWFsSURCYXNlNjQpOworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVu
dGlhbCdzIFtbZ2V0XV0gd2l0aG91dCB1c2VyIGNvbnNlbnQgaW4gYSBtb2NrIGxvY2FsIGF1dGhl
bnRpY2F0b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYmF1dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtZmFpbHVyZS1sb2NhbC5odHRwcy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFs
LWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggZjI3ZjcxMTkyMjdlODBlMzYwMTA4
M2MyYzBiNWU0MDkwN2Q4ZTI2MC4uYmRiNjA3NmMyYmM4ODljZDBhMmU0ZWNmOWE3NDZlYTljNWIz
ZTMxMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtl
eS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1mYWlsdXJlLWxv
Y2FsLmh0dHBzLmh0bWwKQEAgLTQsNzcgKzQsODUgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNl
cy91dGlsLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgKGFzeW5jIGZ1bmN0aW9uKCkgewot
ICAgICAgICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0
KCk7CisgICAgcHJvbWlzZV90ZXN0KHQgPT4geworICAgICAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRl
c3RhdGlvbjogZmFsc2UgfSB9KTsKKworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAg
ICAgICAgcHVibGljS2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWlu
dDhBcnJheSgiMTIzNDU2IiksCisgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWwor
ICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5w
YXJzZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAorICAg
ICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJz
ZSh0ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJuZmMiXSB9LAorICAgICAg
ICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0
ZXN0Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJibGUiXSB9LAorICAgICAgICAg
ICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IEJhc2U2NFVSTC5wYXJzZSh0ZXN0
Q3JlZGVudGlhbElkQmFzZTY0KSwgdHJhbnNwb3J0czogWyJpbnRlcm5hbCJdIH0KKyAgICAgICAg
ICAgICAgICBdCisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgcmV0dXJuIHBy
b21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMu
Z2V0KG9wdGlvbnMpLCAiTm8gbWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBs
YXRmb3JtIGF0dGFjaGVkIGF1dGhlbnRpY2F0b3IuIik7CisgICAgfSwgIlB1YmxpY0tleUNyZWRl
bnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9j
YWwgYXV0aGVudGljYXRvci4iKTsKKworICAgIHByb21pc2VfdGVzdChhc3luYyB0ID0+IHsKICAg
ICAgICAgY29uc3QgcHJpdmF0ZUtleUJhc2U2NCA9IGF3YWl0IGdlbmVyYXRlUHJpdmF0ZUtleUJh
c2U2NCgpOwogICAgICAgICBjb25zdCBjcmVkZW50aWFsSUQgPSBhd2FpdCBjYWxjdWxhdGVDcmVk
ZW50aWFsSUQocHJpdmF0ZUtleUJhc2U2NCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJREJh
c2U2NCA9IGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLCBjcmVkZW50aWFsSUQpKTsK
ICAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5lZWQgdG8gb3Zl
cnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgogICAgICAgICBpZiAo
d2luZG93LmludGVybmFscykKLSAgICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVu
dGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZh
bHNlLCBhY2NlcHRBdHRlc3RhdGlvbjogZmFsc2UsIHByZWZlcnJlZFVzZXJoYW5kbGVCYXNlNjQ6
IHVzZXJoYW5kbGVCYXNlNjQgfSB9KTsKLQotICAgICAgICBwcm9taXNlX3Rlc3QodCA9PiB7Ci0g
ICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1YmxpY0tleTog
ewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0
NTYiKSwKLSAgICAgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWwotICAgICAgICAg
ICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRy
YW5zcG9ydHM6IFsidXNiIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogInB1
YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbIm5mYyJdIH0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJsaWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJ
RCwgdHJhbnNwb3J0czogWyJibGUiXSB9LAotICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBl
OiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwi
XSB9Ci0gICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9OwotCi0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRF
cnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBtYXRjaGVkIGNy
ZWRlbnRpYWxzIGFyZSBmb3VuZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRv
ci4iKTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8g
bWF0Y2hlZCBjcmVkZW50aWFscyBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAg
ICAgICAgICAgIGludGVybmFscy5zZXRNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9u
KHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGljYXRpb246IGZhbHNlLCBhY2NlcHRBdHRlc3RhdGlv
bjogZmFsc2UsIHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDogY3JlZGVudGlhbElEQmFzZTY0
IH0gfSk7CiAKLSAgICAgICAgcHJvbWlzZV90ZXN0KHQgPT4gewotICAgICAgICAgICAgY29uc3Qg
b3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IHsKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlOiBhc2NpaVRvVWludDhBcnJheSgiMTIzNDU2IiksCi0gICAgICAgICAg
ICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsg
dHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHVzZXJoYW5kbGVCYXNlNjQp
IH0KLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH07CisgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwdWJsaWNLZXk6IHsK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IGFzY2lpVG9VaW50OEFycmF5KCIxMjM0NTYiKSwK
KyAgICAgICAgICAgICAgICBhbGxvd0NyZWRlbnRpYWxzOiBbCisgICAgICAgICAgICAgICAgICAg
IHsgdHlwZTogInB1YmxpYy1rZXkiLCBpZDogQmFzZTY0VVJMLnBhcnNlKHRlc3RVc2VyaGFuZGxl
QmFzZTY0KSB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfQorICAgICAgICB9Owog
CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5uZXIu
YWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RVc2Vy
RW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJO
b3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiTm8g
bWF0Y2hlZCBjcmVkZW50aWFscyBhcmUgZm91bmQgaW4gdGhlIHBsYXRmb3JtIGF0dGFjaGVkIGF1
dGhlbnRpY2F0b3IuIikudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihw
cml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAg
ICByZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5j
cmVkZW50aWFscy5nZXQob3B0aW9ucyksICJObyBtYXRjaGVkIGNyZWRlbnRpYWxzIGFyZSBmb3Vu
ZCBpbiB0aGUgcGxhdGZvcm0gYXR0YWNoZWQgYXV0aGVudGljYXRvci4iKS50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuY2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtb
Z2V0XV0gd2l0aCBubyBtYXRjaGVkIGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiAybmQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFp
bih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbm8gbWF0Y2hlZCBjcmVkZW50aWFscyBp
biBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4gMm5kIik7CisKKyAgICBwcm9taXNlX3Rlc3Qo
YXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5l
cmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdh
aXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOworICAgICAgICBjb25z
dCBjcmVkZW50aWFsSURCYXNlNjQgPSBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoMCwg
Y3JlZGVudGlhbElEKSk7CisgICAgICAgIC8vIERlZmF1bHQgbW9jayBjb25maWd1cmF0aW9uLiBU
ZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZmZXJlbnQgY29uZmlndXJhdGlv
bi4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMu
c2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7IGxvY2FsOiB7IGFjY2VwdEF1
dGhlbnRpY2F0aW9uOiBmYWxzZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNlLCBwcmVmZXJyZWRD
cmVkZW50aWFsSWRCYXNlNjQ6IGNyZWRlbnRpYWxJREJhc2U2NCB9IH0pOwogCi0gICAgICAgIHBy
b21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAg
ICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNj
aWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fTsKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogewor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpCisg
ICAgICAgICAgICB9CisgICAgICAgIH07CiAKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihwcml2YXRlS2V5
QmFzZTY0LCB0ZXN0UnBJZCwgdGVzdFVzZXJFbnRpdHlCdW5kbGVCYXNlNjQpOworICAgICAgICBy
ZXR1cm4gcHJvbWlzZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVk
ZW50aWFscy5nZXQob3B0aW9ucyksICJDb3VsZG4ndCB2ZXJpZnkgdXNlci4iKS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHByaXZhdGVLZXlCYXNlNjQsIHRlc3RScElk
LCB1c2VyaGFuZGxlQmFzZTY0KTsKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlUmVqZWN0cyh0
LCAiTm90QWxsb3dlZEVycm9yIiwgbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKSwg
IkNvdWxkbid0IHZlcmlmeSB1c2VyLiIpLnRoZW4oKCkgPT4gewotICAgICAgICAgICAgICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5jbGVh
blVwS2V5Y2hhaW4odGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0sICJQdWJsaWNLZXlDcmVkZW50aWFsJ3MgW1tnZXRdXSB3aXRob3V0IHVzZXIg
Y29uc2VudCBpbiBhIG1vY2sgbG9jYWwgYXV0aGVudGljYXRvci4iKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgY3JlZGVudGlhbElEQmFzZTY0
KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdp
dGhvdXQgdXNlciBjb25zZW50IGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCi0g
ICAgICAgIHByb21pc2VfdGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7
Ci0gICAgICAgICAgICAgICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAotICAgICAgICAgICAgICAgICAgICBh
bGxvd0NyZWRlbnRpYWxzOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICJwdWJs
aWMta2V5IiwgaWQ6IGNyZWRlbnRpYWxJRCwgdHJhbnNwb3J0czogWyJ1c2IiXSB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQs
IHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTog
InB1YmxpYy1rZXkiLCBpZDogY3JlZGVudGlhbElELCB0cmFuc3BvcnRzOiBbImJsZSJdIH0KLSAg
ICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgdGltZW91dDogMTAKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgIHByb21pc2VfdGVzdCh0ID0+IHsK
KyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTogeworICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZTogYXNjaWlUb1VpbnQ4QXJyYXkoIjEyMzQ1NiIpLAorICAg
ICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKKyAgICAgICAgICAgICAgICAgICAgeyB0
eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJh
c2U2NCksIHRyYW5zcG9ydHM6IFsidXNiIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBl
OiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2
NCksIHRyYW5zcG9ydHM6IFsibmZjIl0gfSwKKyAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAi
cHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdENyZWRlbnRpYWxJZEJhc2U2NCks
IHRyYW5zcG9ydHM6IFsiYmxlIl0gfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgdGltZW91dDogMTAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICAgICAg
cmV0dXJuIHByb21pc2VSZWplY3RzKHQsICJOb3RBbGxvd2VkRXJyb3IiLCBuYXZpZ2F0b3IuY3Jl
ZGVudGlhbHMuZ2V0KG9wdGlvbnMpLCAiT3BlcmF0aW9uIHRpbWVkIG91dC4iKTsKLSAgICAgICAg
fSwgIlB1YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggdGltZW91dCBpbiBhIG1vY2sg
bG9jYWwgYXV0aGVudGljYXRvci4iKTsKLSAgICB9KSgpOworICAgICAgICByZXR1cm4gcHJvbWlz
ZVJlamVjdHModCwgIk5vdEFsbG93ZWRFcnJvciIsIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQo
b3B0aW9ucyksICJPcGVyYXRpb24gdGltZWQgb3V0LiIpOworICAgIH0sICJQdWJsaWNLZXlDcmVk
ZW50aWFsJ3MgW1tnZXRdXSB3aXRoIHRpbWVvdXQgaW4gYSBtb2NrIGxvY2FsIGF1dGhlbnRpY2F0
b3IuIik7CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1
dGhuL3B1YmxpYy1rZXktY3JlZGVudGlhbC1nZXQtc3VjY2Vzcy1sb2NhbC5odHRwcy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1z
dWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKaW5kZXggOTM2MGFmYjhmNTU4Mjc1ODQzZjkwMDM0NTdj
NzBlODdjNDM3NmNiZi4uNzhkNGQ3YjA3NmIxOTFhZThkNmJiYzU3ZjRjZTZhYTM4MzgwMTZmOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVk
ZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0dHBzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXV0aG4vcHVibGljLWtleS1jcmVkZW50aWFsLWdldC1zdWNjZXNzLWxvY2FsLmh0
dHBzLmh0bWwKQEAgLTQsNzUgKzQsODAgQEAKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuL3Jlc291cmNlcy91dGls
LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0gICAgKGFzeW5jIGZ1bmN0aW9uKCkgewotICAgICAg
ICBjb25zdCB1c2VyaGFuZGxlQmFzZTY0ID0gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCk7Ci0g
ICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNlNjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlC
YXNlNjQoKTsKLSAgICAgICAgY29uc3QgY3JlZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3Jl
ZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQpOwotICAgICAgICAvLyBEZWZhdWx0IG1vY2sgY29u
ZmlndXJhdGlvbi4gVGVzdHMgbmVlZCB0byBvdmVycmlkZSBpZiB0aGV5IG5lZWQgZGlmZmVyZW50
IGNvbmZpZ3VyYXRpb24uCi0gICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAg
ICAgaW50ZXJuYWxzLnNldE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24oeyBsb2Nh
bDogeyBhY2NlcHRBdXRoZW50aWNhdGlvbjogdHJ1ZSwgYWNjZXB0QXR0ZXN0YXRpb246IGZhbHNl
LCBwcmVmZXJyZWRVc2VyaGFuZGxlQmFzZTY0OiB1c2VyaGFuZGxlQmFzZTY0IH0gfSk7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
Y2xlYW5VcEtleWNoYWluKHRlc3RScElkLCB1c2VyaGFuZGxlQmFzZTY0KTsKKyAgICBmdW5jdGlv
biBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIHByaXZhdGVLZXlCYXNlNjQp
CisgICAgeworICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0
UnVubmVyLmNsZWFuVXBLZXljaGFpbih0ZXN0UnBJZCwgYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJ
RCkpOwogCi0gICAgICAgICAgICAgLy8gQ2hlY2sgcmVzcG9uZAotICAgICAgICAgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyhCYXNlNjRVUkwucGFyc2UoY3JlZGVudGlhbC5pZCksIGNyZWRlbnRpYWxJ
RCk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1r
ZXknKTsKLSAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMobmV3IFVpbnQ4QXJyYXkoY3Jl
ZGVudGlhbC5yYXdJZCksIGNyZWRlbnRpYWxJRCk7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KGJ5dGVzVG9BU0NJSVN0cmluZyhjcmVkZW50aWFsLnJlc3BvbnNlLmNsaWVudERhdGFKU09OKSwg
J3sidHlwZSI6IndlYmF1dGhuLmdldCIsImNoYWxsZW5nZSI6Ik1USXpORFUyIiwib3JpZ2luIjoi
aHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0MyJ9Jyk7Ci0gICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UudXNlckhhbmRsZSksIEJhc2U2
NFVSTC5wYXJzZSh1c2VyaGFuZGxlQmFzZTY0KSk7Ci0gICAgICAgICAgICBhc3NlcnRfbm90X293
bl9wcm9wZXJ0eShjcmVkZW50aWFsLmdldENsaWVudEV4dGVuc2lvblJlc3VsdHMoKSwgImFwcGlk
Iik7CisgICAgICAgICAvLyBDaGVjayByZXNwb25kCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoQmFzZTY0VVJMLnBhcnNlKGNyZWRlbnRpYWwuaWQpLCBjcmVkZW50aWFsSUQpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGNyZWRlbnRpYWwudHlwZSwgJ3B1YmxpYy1rZXknKTsKKyAgICAgICAg
YXNzZXJ0X2FycmF5X2VxdWFscyhuZXcgVWludDhBcnJheShjcmVkZW50aWFsLnJhd0lkKSwgY3Jl
ZGVudGlhbElEKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhieXRlc1RvQVNDSUlTdHJpbmcoY3Jl
ZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTiksICd7InR5cGUiOiJ3ZWJhdXRobi5nZXQi
LCJjaGFsbGVuZ2UiOiJNVEl6TkRVMiIsIm9yaWdpbiI6Imh0dHBzOi8vbG9jYWxob3N0Ojk0NDMi
fScpOworICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKG5ldyBVaW50OEFycmF5KGNyZWRlbnRp
YWwucmVzcG9uc2UudXNlckhhbmRsZSksIEJhc2U2NFVSTC5wYXJzZSh0ZXN0VXNlcmhhbmRsZUJh
c2U2NCkpOworICAgICAgICBhc3NlcnRfbm90X293bl9wcm9wZXJ0eShjcmVkZW50aWFsLmdldENs
aWVudEV4dGVuc2lvblJlc3VsdHMoKSwgImFwcGlkIik7CiAKLSAgICAgICAgICAgIC8vIENoZWNr
IGF1dGhEYXRhCi0gICAgICAgICAgICBjb25zdCBhdXRoRGF0YSA9IGRlY29kZUF1dGhEYXRhKG5l
dyBVaW50OEFycmF5KGNyZWRlbnRpYWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEpKTsKLSAg
ICAgICAgICAgIGFzc2VydF9lcXVhbHMoYnl0ZXNUb0hleFN0cmluZyhhdXRoRGF0YS5ycElkSGFz
aCksICI0OTk2MGRlNTg4MGU4YzY4NzQzNDE3MGY2NDc2NjA1YjhmZTRhZWI5YTI4NjMyYzc5OTVj
ZjNiYTgzMWQ5NzYzIik7Ci0gICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZsYWdz
LCA1KTsKLSAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYXV0aERhdGEuY291bnRlciwgMCk7Cisg
ICAgICAgIC8vIENoZWNrIGF1dGhEYXRhCisgICAgICAgIGNvbnN0IGF1dGhEYXRhID0gZGVjb2Rl
QXV0aERhdGEobmV3IFVpbnQ4QXJyYXkoY3JlZGVudGlhbC5yZXNwb25zZS5hdXRoZW50aWNhdG9y
RGF0YSkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGJ5dGVzVG9IZXhTdHJpbmcoYXV0aERhdGEu
cnBJZEhhc2gpLCAiNDk5NjBkZTU4ODBlOGM2ODc0MzQxNzBmNjQ3NjYwNWI4ZmU0YWViOWEyODYz
MmM3OTk1Y2YzYmE4MzFkOTc2MyIpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGF1dGhEYXRhLmZs
YWdzLCA1KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhdXRoRGF0YS5jb3VudGVyLCAwKTsKIAot
ICAgICAgICAgICAgLy8gQ2hlY2sgc2lnbmF0dXJlCi0gICAgICAgICAgICByZXR1cm4gY3J5cHRv
LnN1YnRsZS5pbXBvcnRLZXkoInJhdyIsIEJhc2U2NFVSTC5wYXJzZShwcml2YXRlS2V5QmFzZTY0
KS5zbGljZSgwLCA2NSksIHsgbmFtZTogIkVDRFNBIiwgbmFtZWRDdXJ2ZTogIlAtMjU2IiB9LCBm
YWxzZSwgWyd2ZXJpZnknXSkudGhlbiggcHVibGljS2V5ID0+IHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY3J5cHRvLnN1YnRsZS5kaWdlc3QoInNoYS0yNTYiLCBjcmVkZW50aWFsLnJlc3BvbnNl
LmNsaWVudERhdGFKU09OKS50aGVuICggaGFzaCA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IGNyZWRlbnRpYWwucmVzcG9uc2Uuc2lnbmF0dXJlIGlzIGluIEFTTi4xIGFuZCBXZWJDcnlwdG8g
ZXhwZWN0IHNpZ25hdHVyZXMgcHJvdmlkZXMgaW4gcnxzLgotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gY3J5cHRvLnN1YnRsZS52ZXJpZnkoe25hbWU6ICJFQ0RTQSIsIGhhc2g6ICJTSEEtMjU2
In0sIHB1YmxpY0tleSwgZXh0cmFjdFJhd1NpZ25hdHVyZShjcmVkZW50aWFsLnJlc3BvbnNlLnNp
Z25hdHVyZSksIGNvbmNhdGVuYXRlQnVmZmVycyhjcmVkZW50aWFsLnJlc3BvbnNlLmF1dGhlbnRp
Y2F0b3JEYXRhLCBoYXNoKSkudGhlbiggdmVyaWZpZWQgPT4gewotICAgICAgICAgICAgICAgICAg
ICAgICAgYXNzZXJ0X3RydWUodmVyaWZpZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRlbnNpb25SZXN1bHRz
KCksICJhcHBpZCIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgLy8gQ2hlY2sg
c2lnbmF0dXJlCisgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlLmltcG9ydEtleSgicmF3Iiwg
QmFzZTY0VVJMLnBhcnNlKHByaXZhdGVLZXlCYXNlNjQpLnNsaWNlKDAsIDY1KSwgeyBuYW1lOiAi
RUNEU0EiLCBuYW1lZEN1cnZlOiAiUC0yNTYiIH0sIGZhbHNlLCBbJ3ZlcmlmeSddKS50aGVuKCBw
dWJsaWNLZXkgPT4geworICAgICAgICAgICAgcmV0dXJuIGNyeXB0by5zdWJ0bGUuZGlnZXN0KCJz
aGEtMjU2IiwgY3JlZGVudGlhbC5yZXNwb25zZS5jbGllbnREYXRhSlNPTikudGhlbiAoIGhhc2gg
PT4geworICAgICAgICAgICAgICAgIC8vIGNyZWRlbnRpYWwucmVzcG9uc2Uuc2lnbmF0dXJlIGlz
IGluIEFTTi4xIGFuZCBXZWJDcnlwdG8gZXhwZWN0IHNpZ25hdHVyZXMgcHJvdmlkZXMgaW4gcnxz
LgorICAgICAgICAgICAgICAgIHJldHVybiBjcnlwdG8uc3VidGxlLnZlcmlmeSh7bmFtZTogIkVD
RFNBIiwgaGFzaDogIlNIQS0yNTYifSwgcHVibGljS2V5LCBleHRyYWN0UmF3U2lnbmF0dXJlKGNy
ZWRlbnRpYWwucmVzcG9uc2Uuc2lnbmF0dXJlKSwgY29uY2F0ZW5hdGVCdWZmZXJzKGNyZWRlbnRp
YWwucmVzcG9uc2UuYXV0aGVudGljYXRvckRhdGEsIGhhc2gpKS50aGVuKCB2ZXJpZmllZCA9PiB7
CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHZlcmlmaWVkKTsKKyAgICAgICAgICAg
ICAgICAgICAgYXNzZXJ0X25vdF9vd25fcHJvcGVydHkoY3JlZGVudGlhbC5nZXRDbGllbnRFeHRl
bnNpb25SZXN1bHRzKCksICJhcHBpZCIpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQogCi0gICAgICAgIHByb21pc2Vf
dGVzdCh0ID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAg
ICAgcHVibGljS2V5OiB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJM
LnBhcnNlKCJNVEl6TkRVMiIpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKKyAg
ICBwcm9taXNlX3Rlc3QoYXN5bmMgdCA9PiB7CisgICAgICAgIGNvbnN0IHByaXZhdGVLZXlCYXNl
NjQgPSBhd2FpdCBnZW5lcmF0ZVByaXZhdGVLZXlCYXNlNjQoKTsKKyAgICAgICAgY29uc3QgY3Jl
ZGVudGlhbElEID0gYXdhaXQgY2FsY3VsYXRlQ3JlZGVudGlhbElEKHByaXZhdGVLZXlCYXNlNjQp
OworICAgICAgICBjb25zdCBjcmVkZW50aWFsSURCYXNlNjQgPSBiYXNlNjRlbmNvZGUoY3JlZGVu
dGlhbElEKTsKKyAgICAgICAgLy8gRGVmYXVsdCBtb2NrIGNvbmZpZ3VyYXRpb24uIFRlc3RzIG5l
ZWQgdG8gb3ZlcnJpZGUgaWYgdGhleSBuZWVkIGRpZmZlcmVudCBjb25maWd1cmF0aW9uLgorICAg
ICAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXRNb2Nr
V2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKHsgbG9jYWw6IHsgYWNjZXB0QXV0aGVudGlj
YXRpb246IHRydWUsIGFjY2VwdEF0dGVzdGF0aW9uOiBmYWxzZSwgcHJlZmVycmVkQ3JlZGVudGlh
bElkQmFzZTY0OiBjcmVkZW50aWFsSURCYXNlNjQgfSB9KTsKIAotICAgICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuYWRkVGVzdEtleVRv
S2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHVzZXJoYW5kbGVCYXNlNjQpOwot
ICAgICAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50aWFscy5nZXQob3B0aW9ucykudGhl
bihjcmVkZW50aWFsID0+IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3Jl
ZGVudGlhbCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgIlB1YmxpY0tleUNyZWRlbnRp
YWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOworICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgcHVibGlj
S2V5OiB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlOiBCYXNlNjRVUkwucGFyc2UoIk1USXpO
RFUyIikKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKIAotICAgICAgICBwcm9taXNlX3Rlc3Qo
dCA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewotICAgICAgICAgICAgICAgIHB1
YmxpY0tleTogewotICAgICAgICAgICAgICAgICAgICBjaGFsbGVuZ2U6IEJhc2U2NFVSTC5wYXJz
ZSgiTVRJek5EVTIiKSwKLSAgICAgICAgICAgICAgICAgICAgYWxsb3dDcmVkZW50aWFsczogWwot
ICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRV
UkwucGFyc2UodXNlcmhhbmRsZUJhc2U2NCksIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50
aWFsSUQsIHRyYW5zcG9ydHM6IFsiaW50ZXJuYWwiXSB9Ci0gICAgICAgICAgICAgICAgICAgIF0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OworICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLmFkZFRlc3RLZXlUb0tleWNoYWluKHBy
aXZhdGVLZXlCYXNlNjQsIHRlc3RScElkLCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCk7Cisg
ICAgICAgIHJldHVybiBuYXZpZ2F0b3IuY3JlZGVudGlhbHMuZ2V0KG9wdGlvbnMpLnRoZW4oY3Jl
ZGVudGlhbCA9PiB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tSZXN1bHQoY3JlZGVudGlhbCwg
Y3JlZGVudGlhbElELCBwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgfSk7CisgICAgfSwgIlB1
YmxpY0tleUNyZWRlbnRpYWwncyBbW2dldF1dIHdpdGggbWluaW11bSBvcHRpb25zIGluIGEgbW9j
ayBsb2NhbCBhdXRoZW50aWNhdG9yLiIpOwogCi0gICAgICAgICAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5hZGRUZXN0S2V5VG9LZXljaGFpbihw
cml2YXRlS2V5QmFzZTY0LCB0ZXN0UnBJZCwgdXNlcmhhbmRsZUJhc2U2NCk7Ci0gICAgICAgICAg
ICByZXR1cm4gbmF2aWdhdG9yLmNyZWRlbnRpYWxzLmdldChvcHRpb25zKS50aGVuKGNyZWRlbnRp
YWwgPT4gewotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja1Jlc3VsdChjcmVkZW50aWFsKTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0
XV0gd2l0aCBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50
aWNhdG9yLiIpOwotICAgIH0pKCk7CisgICAgcHJvbWlzZV90ZXN0KGFzeW5jIHQgPT4geworICAg
ICAgICBjb25zdCBwcml2YXRlS2V5QmFzZTY0ID0gYXdhaXQgZ2VuZXJhdGVQcml2YXRlS2V5QmFz
ZTY0KCk7CisgICAgICAgIGNvbnN0IGNyZWRlbnRpYWxJRCA9IGF3YWl0IGNhbGN1bGF0ZUNyZWRl
bnRpYWxJRChwcml2YXRlS2V5QmFzZTY0KTsKKyAgICAgICAgY29uc3QgY3JlZGVudGlhbElEQmFz
ZTY0ID0gYmFzZTY0ZW5jb2RlKGNyZWRlbnRpYWxJRCk7CisgICAgICAgIC8vIERlZmF1bHQgbW9j
ayBjb25maWd1cmF0aW9uLiBUZXN0cyBuZWVkIHRvIG92ZXJyaWRlIGlmIHRoZXkgbmVlZCBkaWZm
ZXJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAg
ICAgICAgICBpbnRlcm5hbHMuc2V0TW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbih7
IGxvY2FsOiB7IGFjY2VwdEF1dGhlbnRpY2F0aW9uOiB0cnVlLCBhY2NlcHRBdHRlc3RhdGlvbjog
ZmFsc2UsIHByZWZlcnJlZENyZWRlbnRpYWxJZEJhc2U2NDogY3JlZGVudGlhbElEQmFzZTY0IH0g
fSk7CisKKyAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgIHB1YmxpY0tleTog
eworICAgICAgICAgICAgICAgIGNoYWxsZW5nZTogQmFzZTY0VVJMLnBhcnNlKCJNVEl6TkRVMiIp
LAorICAgICAgICAgICAgICAgIGFsbG93Q3JlZGVudGlhbHM6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBCYXNlNjRVUkwucGFyc2UodGVzdFVzZXJoYW5k
bGVCYXNlNjQpLCB0cmFuc3BvcnRzOiBbImludGVybmFsIl0gfSwKKyAgICAgICAgICAgICAgICAg
ICAgeyB0eXBlOiAicHVibGljLWtleSIsIGlkOiBjcmVkZW50aWFsSUQsIHRyYW5zcG9ydHM6IFsi
aW50ZXJuYWwiXSB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfQorICAgICAgICB9
OworCisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRlc3RSdW5u
ZXIuYWRkVGVzdEtleVRvS2V5Y2hhaW4ocHJpdmF0ZUtleUJhc2U2NCwgdGVzdFJwSWQsIHRlc3RV
c2VyRW50aXR5QnVuZGxlQmFzZTY0KTsKKyAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jcmVkZW50
aWFscy5nZXQob3B0aW9ucykudGhlbihjcmVkZW50aWFsID0+IHsKKyAgICAgICAgICAgIHJldHVy
biBjaGVja1Jlc3VsdChjcmVkZW50aWFsLCBjcmVkZW50aWFsSUQsIHByaXZhdGVLZXlCYXNlNjQp
OworICAgICAgICB9KTsKKyAgICB9LCAiUHVibGljS2V5Q3JlZGVudGlhbCdzIFtbZ2V0XV0gd2l0
aCBtYXRjaGVkIGFsbG93IGNyZWRlbnRpYWxzIGluIGEgbW9jayBsb2NhbCBhdXRoZW50aWNhdG9y
LiIpOwogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdXRo
bi9yZXNvdXJjZXMvdXRpbC5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291
cmNlcy91dGlsLmpzCmluZGV4IDYxZDhmNzI1ZmYyYjUxNzhhZWExODM4OGE3NTUwZTNhMjU2MzY5
Y2QuLmI2NTVlMmIwNDhhMzk5ZWFkOTljMjA1NWYwM2EzNzNhNGY1YjIxYzcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1dGhuL3Jlc291cmNlcy91dGlsLmpzCkBAIC01LDYgKzUs
NyBAQCBjb25zdCB0ZXN0RVMyNTZQcml2YXRlS2V5QmFzZTY0ID0KICAgICAiUlE9PSI7CiBjb25z
dCB0ZXN0UnBJZCA9ICJsb2NhbGhvc3QiOwogY29uc3QgdGVzdFVzZXJoYW5kbGVCYXNlNjQgPSAi
QUFFQ0F3UUZCZ2NJQ1E9PSI7Citjb25zdCB0ZXN0VXNlckVudGl0eUJ1bmRsZUJhc2U2NCA9ICJv
bUpwWkVvQUFRSURCQVVHQndnSlpHNWhiV1Z3UVVGRlEwRjNVVVpDWjJOSlExRTlQUT09IjsKIGNv
bnN0IHRlc3RBdHRlc3RhdGlvbkNlcnRpZmljYXRlQmFzZTY0ID0KICAgICAiTUlJQjZqQ0NBWkNn
QXdJQkFnSUdBV0hBeGNqdk1Bb0dDQ3FHU000OUJBTUNNRk14SnpBbEJnTlZCQU1NSGtKaCIgKwog
ICAgICJjMmxqSUVGMGRHVnpkR0YwYVc5dUlGVnpaWElnVTNWaUlFTkJNVEVUTUJFR0ExVUVDZ3dL
UVhCd2JHVWdTVzVqIiArCkBAIC00NDksNyArNDUwLDcgQEAgZnVuY3Rpb24gY2hlY2tVMmZHZXRB
c3NlcnRpb25SZXN1bHQoY3JlZGVudGlhbCwgaXNBcHBJRCA9IGZhbHNlLCBhcHBJREhhc2ggPSAi
YzIKIAogZnVuY3Rpb24gZ2VuZXJhdGVVc2VyaGFuZGxlQmFzZTY0KCkKIHsKLSAgICBsZXQgYnVm
ZmVyID0gbmV3IFVpbnQ4QXJyYXkoMTYpOworICAgIGxldCBidWZmZXIgPSBuZXcgVWludDhBcnJh
eSg4KTsKICAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGJ1ZmZlcik7CiAgICAgcmV0dXJuIGJ0
b2EoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseSgwLCBidWZmZXIpKTsKIH0KQEAgLTQ4NiwzICs0
ODcsOSBAQCBhc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVDcmVkZW50aWFsSUQocHJpdmF0ZUtleUJh
c2U2NCkgewogICAgIGNvbnN0IHB1YmxpY0tleSA9IHByaXZhdGVLZXkuc2xpY2UoMCwgNjUpOwog
ICAgIHJldHVybiBuZXcgVWludDhBcnJheShhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgic2hh
LTEiLCBwdWJsaWNLZXkpKTsKIH0KKworZnVuY3Rpb24gYmFzZTY0ZW5jb2RlKGJpbmFyeSkKK3sK
KyAgICBjb25zdCB1bml0OEFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYmluYXJ5KTsKKyAgICByZXR1
cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KDAsIHVuaXQ4QXJyYXkpKTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>