<?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>233011</bug_id>
          
          <creation_ts>2021-11-11 13:42:10 -0800</creation_ts>
          <short_desc>[WebAuthn] Stop serializing BufferSource and Vector&lt;uint8_t&gt; duplicates of identifiers</short_desc>
          <delta_ts>2021-11-11 17:42:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>pascoe</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1814196</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-11-11 13:42:10 -0800</bug_when>
    <thetext>The original WebAuthn logic converted WebCore::BufferSource objects to Vector&lt;uint8_t&gt; for serialization, which created a weird design where some code dealt with BufferSource objects, and other with Vectors, and lots of converting to and from these types. It also caused WebAuthn data structures to have two places where this information might live, with the UIProcess using one representation, and the WebContent process using another.

This patch revises the code as follows:

1. The identifiers are always stored as BufferSource, and the same member is used in UIProcess and WebContent process when accessing this information.
2. We now serialize BufferSource directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814197</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-11 13:43:43 -0800</bug_when>
    <thetext>&lt;rdar://problem/85313807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814240</commentid>
    <comment_count>2</comment_count>
      <attachid>444005</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-11-11 14:37:16 -0800</bug_when>
    <thetext>Created attachment 444005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814251</commentid>
    <comment_count>3</comment_count>
      <attachid>444005</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-11-11 15:01:54 -0800</bug_when>
    <thetext>Comment on attachment 444005
Patch

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

r=me, very nice!

&gt; Source/WebCore/Modules/webauthn/fido/U2fCommandConstructor.cpp:88
&gt; +    return constructU2fSignCommand(applicationParameter, challengeParameter, keyVector, checkOnly);

Doesn&apos;t need to be done in this patch but constructU2fSignCommand() should probably take in a WTF::Span&lt;const uint8_t&gt; instead of a Vector&lt;uint8_t&gt;.

&gt; Source/WebCore/bindings/js/BufferSource.h:99
&gt; +    auto dataSize = CheckedSize { *size } * sizeof(uint8_t);

nit: The `* sizeof(uint8_t)` doesn&apos;t look terribly useful :)

&gt; Source/WebCore/bindings/js/BufferSource.h:106
&gt; +    return BufferSource(JSC::ArrayBuffer::tryCreate(reinterpret_cast&lt;const void*&gt;(data), dataSize.value()));

nit: Would a static_cast&lt;const void*&gt; work?

&gt; Source/WebCore/bindings/js/BufferSource.h:117
&gt; +    return BufferSource(JSC::ArrayBuffer::tryCreate(reinterpret_cast&lt;const uint8_t*&gt;(data.bytes), data.length));

static_cast&lt;&gt; should suffice since bytes returns a const void*

&gt; Source/WebCore/bindings/js/BufferSource.h:128
&gt; +using WebCore::toBufferSource;

I am not opposed to it but I didn&apos;t realize we were doing this outside of WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814302</commentid>
    <comment_count>8</comment_count>
      <attachid>444024</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-11-11 16:43:19 -0800</bug_when>
    <thetext>Created attachment 444024
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814324</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-11 17:42:49 -0800</bug_when>
    <thetext>Committed r285698 (244165@main): &lt;https://commits.webkit.org/244165@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 444024.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444005</attachid>
            <date>2021-11-11 14:37:16 -0800</date>
            <delta_ts>2021-11-11 16:43:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233011-20211111143715.patch</filename>
            <type>text/plain</type>
            <size>65426</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I2MDM1ZTcxZDhjMGFm
ODE0YmM0NDNlOGI1YmI0ZGYzMjJlM2U0Yi4uMDczNGNkYTg2NThlYjk5ZWYyNDZkNTg0YzIyZjRk
YTM3OWFjMjM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTExLTExICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3Rv
cCBzZXJpYWxpemluZyBCdWZmZXJTb3VyY2UgYW5kIFZlY3Rvcjx1aW50OF90PiBkdXBsaWNhdGVz
IG9mIGlkZW50aWZpZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg1MzEzODA3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBX
ZWJBdXRobiBsb2dpYyBjb252ZXJ0ZWQgV2ViQ29yZTo6QnVmZmVyU291cmNlIG9iamVjdHMgdG8g
VmVjdG9yPHVpbnQ4X3Q+CisgICAgICAgIGR1cmluZyBzZXJpYWxpemF0aW9uLCB3aGljaCBjcmVh
dGVkIGEgd2VpcmQgZGVzaWduIHdoZXJlIHNvbWUgY29kZSBkZWFsdCB3aXRoIEJ1ZmZlclNvdXJj
ZQorICAgICAgICBvYmplY3RzLCBhbmQgb3RoZXIgd2l0aCBWZWN0b3JzLCBhbmQgbG90cyBvZiBj
b252ZXJ0aW5nIHRvIGFuZCBmcm9tIHRoZXNlIHR5cGVzLiBJdCBhbHNvIGNhdXNlZAorICAgICAg
ICBXZWJBdXRobiBkYXRhIHN0cnVjdHVyZXMgdG8gaGF2ZSB0d28gcGxhY2VzIHdoZXJlIHRoaXMg
aW5mb3JtYXRpb24gbWlnaHQgbGl2ZSwgd2l0aCB0aGUKKyAgICAgICAgVUlQcm9jZXNzIHVzaW5n
IG9uZSByZXByZXNlbnRhdGlvbiwgYW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdXNpbmcgYW5v
dGhlci4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmlzZXMgdGhlIGNvZGUgYXMgZm9sbG93czoK
KworICAgICAgICAxLiBUaGUgaWRlbnRpZmllcnMgYXJlIGFsd2F5cyBzdG9yZWQgYXMgQnVmZmVy
U291cmNlLCBhbmQgdGhlIHNhbWUgbWVtYmVyIGlzIHVzZWQgaW4gVUlQcm9jZXNzCisgICAgICAg
ICAgIGFuZCBXZWJDb250ZW50IHByb2Nlc3Mgd2hlbiBhY2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlv
bi4KKyAgICAgICAgMi4gV2Ugbm93IHNlcmlhbGl6ZSBCdWZmZXJTb3VyY2UgZGlyZWN0bHkuCisK
KyAgICAgICAgVGVzdGVkIGJ5IGV4aXN0aW5nIFdlYkF1dGhuIHRlc3QgY2FzZXMgKEFQSSBhbmQg
TGF5b3V0IHRlc3RzKQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZGVjb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpkZWNvZGUp
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RP
cHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1
ZS5jcHA6CisgICAgICAgIChjYm9yOjpDQk9SVmFsdWU6OkNCT1JWYWx1ZSk6CisgICAgICAgICog
TW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OmNv
bnZlcnRVc2VyRW50aXR5VG9DQk9SKToKKyAgICAgICAgKGZpZG86OmNvbnZlcnREZXNjcmlwdG9y
VG9DQk9SKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNvbnN0cnVjdFUyZlNpZ25Db21t
YW5kKToKKyAgICAgICAgKGZpZG86OmNvbnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21tYW5kKToK
KyAgICAgICAgKGZpZG86OmNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmg6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZp
ZG86OnJlYWRVMmZTaWduUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlk
by9VMmZSZXNwb25zZUNvbnZlcnRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0J1ZmZlclNv
dXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6QnVmZmVyU291cmNlOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6QnVmZmVyU291cmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9CdWZmZXJTb3VyY2UpOgorCiAyMDIxLTExLTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlc2V0IElubGluZVRleHRJdGVtIHdpZHRo
IG9uIGJpZGkgc3BsaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmNhMzliOTU1YmQ1YjU0NDk3NjBkODY1NGQ1ODA2
MTJjM2NlODNiZi4uMmM1ZGQ5ZTYyODk3YmIyMmNmODIwZWVkNTg2ZmY0MGY0N2I4YTdhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0xMS0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN0b3Agc2VyaWFsaXppbmcgQnVm
ZmVyU291cmNlIGFuZCBWZWN0b3I8dWludDhfdD4gZHVwbGljYXRlcyBvZiBpZGVudGlmaWVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDExCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTMxMzgwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgb3JpZ2luYWwgV2ViQXV0aG4gbG9naWMgY29u
dmVydGVkIFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSBvYmplY3RzIHRvIFZlY3Rvcjx1aW50OF90Pgor
ICAgICAgICBkdXJpbmcgc2VyaWFsaXphdGlvbiwgd2hpY2ggY3JlYXRlZCBhIHdlaXJkIGRlc2ln
biB3aGVyZSBzb21lIGNvZGUgZGVhbHQgd2l0aCBCdWZmZXJTb3VyY2UKKyAgICAgICAgb2JqZWN0
cywgYW5kIG90aGVyIHdpdGggVmVjdG9ycywgYW5kIGxvdHMgb2YgY29udmVydGluZyB0byBhbmQg
ZnJvbSB0aGVzZSB0eXBlcy4gSXQgYWxzbyBjYXVzZWQKKyAgICAgICAgV2ViQXV0aG4gZGF0YSBz
dHJ1Y3R1cmVzIHRvIGhhdmUgdHdvIHBsYWNlcyB3aGVyZSB0aGlzIGluZm9ybWF0aW9uIG1pZ2h0
IGxpdmUsIHdpdGggdGhlCisgICAgICAgIFVJUHJvY2VzcyB1c2luZyBvbmUgcmVwcmVzZW50YXRp
b24sIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHVzaW5nIGFub3RoZXIuCisKKyAgICAgICAg
VGhpcyBwYXRjaCByZXZpc2VzIHRoZSBjb2RlIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gVGhl
IGlkZW50aWZpZXJzIGFyZSBhbHdheXMgc3RvcmVkIGFzIEJ1ZmZlclNvdXJjZSwgYW5kIHRoZSBz
YW1lIG1lbWJlciBpcyB1c2VkIGluIFVJUHJvY2VzcworICAgICAgICAgICBhbmQgV2ViQ29udGVu
dCBwcm9jZXNzIHdoZW4gYWNjZXNzaW5nIHRoaXMgaW5mb3JtYXRpb24uCisgICAgICAgIDIuIFdl
IG5vdyBzZXJpYWxpemUgQnVmZmVyU291cmNlIGRpcmVjdGx5LgorCisgICAgICAgIFRlc3RlZCBi
eSBleGlzdGluZyBXZWJBdXRobiB0ZXN0IGNhc2VzIChBUEkgYW5kIExheW91dCB0ZXN0cykKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5t
bToKKyAgICAgICAgKHB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5KToKKyAgICAgICAgKHB1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9ycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1
dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktp
dDo6TG9jYWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OnByb2R1Y2VIYXNoU2V0KToKKyAgICAgICAg
KFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJV
c2VyVmVyaWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpk
ZWxldGVEdXBsaWNhdGVDcmVkZW50aWFsIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW06
CisgICAgICAgIChXZWJLaXQ6OnRvQVNDRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OmNv
bmZpZ3VyZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Y29u
ZmlndXJhdGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VTJmQXV0aGVudGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZCk6CisgICAgICAgIChXZWJL
aXQ6OlUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVj
ZWl2ZWQpOgorCiAyMDIxLTExLTExICBUb21va2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29t
PgogCiAgICAgICAgIFtSZW1vdGVJbnNwZWN0b3JdW1NvY2tldF0gQ2FuJ3QgZmluZCB0aGUgdGFy
Z2V0IHNpbmNlIHIyNzc3ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgK
aW5kZXggNGQ1ZjRiZGQ5NjJkNDJjMzVmOGI1NTZhOWFkZTZiODYwOTMxMjY1MS4uMWM3YTcwYjlh
OGJlZDUwMTE1ZDMyZmQ4Zjg3NzEzYjFhNTZjMWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTEsOCArNTEsNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9ucyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBVc2VyRW50aXR5IDogcHVi
bGljIEVudGl0eSB7Ci0gICAgICAgIEJ1ZmZlclNvdXJjZSBpZDsgLy8gaWQgYmVjb21lcyBpZFZl
Y3RvciBvbmNlIGl0IGlzIHBhc3NlZCB0byBVSVByb2Nlc3MuCi0gICAgICAgIFZlY3Rvcjx1aW50
OF90PiBpZFZlY3RvcjsKKyAgICAgICAgQnVmZmVyU291cmNlIGlkOwogICAgICAgICBTdHJpbmcg
ZGlzcGxheU5hbWU7CiAgICAgfTsKIApAQCAtNzYsNyArNzUsNyBAQCBzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyB7CiAgICAgUnBFbnRpdHkgcnA7CiAgICAgVXNlckVu
dGl0eSB1c2VyOwogCi0gICAgQnVmZmVyU291cmNlIGNoYWxsZW5nZTsgLy8gY2hhbGxlbmdlIGJl
Y29tZXMgY2hhbGxlbmdlVmVjdG9yIG9uY2UgaXQgaXMgcGFzc2VkIHRvIFVJUHJvY2Vzcy4KKyAg
ICBCdWZmZXJTb3VyY2UgY2hhbGxlbmdlOwogICAgIFZlY3RvcjxQYXJhbWV0ZXJzPiBwdWJLZXlD
cmVkUGFyYW1zOwogCiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZW91dDsKQEAgLTg1
LDggKzg0LDYgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgewog
ICAgIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgYXR0ZXN0YXRpb247CiAgICAgbXV0
YWJsZSBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4g
ZXh0ZW5zaW9uczsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBjaGFsbGVuZ2VWZWN0b3I7Ci0KICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKICNlbmRpZiAvLyBF
TkFCTEUoV0VCX0FVVEhOKQpAQCAtMTQzLDggKzE0MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgcnAuaWQgPDwgcnAubmFtZSA8
PCBycC5pY29uOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVzZXIuaWQu
bGVuZ3RoKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHVzZXIuaWQuZGF0
YSgpLCB1c2VyLmlkLmxlbmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IHVzZXIuaWQ7CiAgICAg
ZW5jb2RlciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIubmFtZSA8PCB1c2VyLmljb24gPDwg
cHViS2V5Q3JlZFBhcmFtcyA8PCB0aW1lb3V0IDw8IGV4Y2x1ZGVDcmVkZW50aWFscyA8PCBhdXRo
ZW50aWNhdG9yU2VsZWN0aW9uIDw8IGF0dGVzdGF0aW9uIDw8IGV4dGVuc2lvbnM7CiAgICAgZW5j
b2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY2hhbGxlbmdlLmxlbmd0aCgpKTsKICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjaGFsbGVuZ2UuZGF0YSgpLCBjaGFsbGVuZ2Uu
bGVuZ3RoKCksIDEpOwpAQCAtMTYwLDcgKzE1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQucnAuaWNvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5pZFZlY3RvcikpCisgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShyZXN1bHQudXNlci5pZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5kaXNwbGF5TmFtZSkpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xOTgsNyArMTk0LDcgQEAgc3RkOjpvcHRpb25hbDxQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHQKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZXh0ZW5zaW9u
cyA9IFdURk1vdmUoKmV4dGVuc2lvbnMpOwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuY2hhbGxlbmdlVmVjdG9yKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFs
bGVuZ2UpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5
Q3JlZGVudGlhbERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaAppbmRleCBkMjliZTAzMmFiNzc2MzIxYTc1
YTEzNjNjYzc5MzIxNjBmNTQ1Mzg1Li40YzQ1NDZjOWViMzJiNmJhM2FjYjA5YzcxMTI4YzIwNGFl
Yzg4OTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1Ymxp
Y0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDggKzM1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3Ig
ewogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlIHR5cGU7Ci0gICAgQnVmZmVyU291cmNlIGlk
OyAvLyBpZCBiZWNvbWVzIGlkVmVjdG9yIG9uY2UgaXQgaXMgcGFzc2VkIHRvIFVJUHJvY2Vzcy4K
LSAgICBWZWN0b3I8dWludDhfdD4gaWRWZWN0b3I7CisgICAgQnVmZmVyU291cmNlIGlkOwogICAg
IFZlY3RvcjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsOCAr
NDYsNyBAQCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBQdWJsaWNLZXlDcmVkZW50aWFs
RGVzY3JpcHRvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rl
ciA8PCB0eXBlOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkLmxlbmd0
aCgpKTsKLSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShpZC5kYXRhKCksIGlkLmxl
bmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IGlkOwogICAgIGVuY29kZXIgPDwgdHJhbnNwb3J0
czsKIH0KIApAQCAtNTgsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRp
YWxEZXNjcmlwdG9yPiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjo6ZGVjbwogICAgIFB1
YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC50eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZFZlY3RvcikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQuaWQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LnRyYW5zcG9ydHMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKaW5kZXggZmIxN2ZhNjc4
NzhkZjIwODk1YjY4YTViNzE5ODU0ZWEyYTg2NGRmMi4uYjI1MmUxZjljYjQyZmE4MzljMzRiMjUy
NjIxNGRmZjc4YTljYmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dXRobi9QdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUHVibGljS2V5Q3Jl
ZGVudGlhbFJlcXVlc3RPcHRpb25zIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIEJ1ZmZl
clNvdXJjZSBjaGFsbGVuZ2U7IC8vIGNoYWxsZW5nZSBiZWNvbWVzIGNoYWxsZW5nZVZlY3RvciBv
bmNlIGl0IGlzIHBhc3NlZCB0byBVSVByb2Nlc3MuCisgICAgQnVmZmVyU291cmNlIGNoYWxsZW5n
ZTsKICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lb3V0OwogICAgIG11dGFibGUgU3Ry
aW5nIHJwSWQ7CiAgICAgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiBhbGxv
d0NyZWRlbnRpYWxzOwpAQCAtNDYsOCArNDYsNiBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zIHsKICAgICBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50PiBhdXRoZW50aWNhdG9yQXR0YWNobWVudDsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8
QXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNpb25zOwogCi0gICAg
VmVjdG9yPHVpbnQ4X3Q+IGNoYWxsZW5nZVZlY3RvcjsKLQogICAgIHRlbXBsYXRlPGNsYXNzIEVu
Y29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM+IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKQEAg
LTkxLDcgKzg5LDcgQEAgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9w
dGlvbnM+IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW8KICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZXh0ZW5zaW9ucyA9IFdURk1vdmUoKmV4dGVuc2lvbnMp
OwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhbGxlbmdlVmVjdG9yKSkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5jcHAKaW5kZXggNGM4ZmZhZDFhOGNm
MGY1MTQ3Y2M3Njc0NGJiYTg2ZGU1MWM5ZGNjNy4uOWIyOGYwZTVlMTAwNmQ0ZWIxN2JkOTAzMGY5
Y2IyYmJhZjQ3YTdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9jYm9yL0NCT1JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9jYm9yL0NCT1JWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxNyBU
aGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zMiw2ICszMiw3IEBACiAKICNpZiBFTkFCTEUoV0VC
X0FVVEhOKQogCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSA8bmV3PgogI2lu
Y2x1ZGUgPHV0aWxpdHk+CiAKQEAgLTEwMCw2ICsxMDEsMTIgQEAgQ0JPUlZhbHVlOjpDQk9SVmFs
dWUoQmluYXJ5VmFsdWUmJiBpbkJ5dGVzKQogewogfQogCitDQk9SVmFsdWU6OkNCT1JWYWx1ZShj
b25zdCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UmIGJ1ZmZlclNvdXJjZSkKKyAgICA6IG1fdHlwZShU
eXBlOjpCeXRlU3RyaW5nKQorICAgICwgbV9ieXRlU3RyaW5nVmFsdWUoYnVmZmVyU291cmNlLmRh
dGEoKSwgYnVmZmVyU291cmNlLmxlbmd0aCgpKQoreworfQorCiBDQk9SVmFsdWU6OkNCT1JWYWx1
ZShjb25zdCBjaGFyKiBpblN0cmluZykKICAgICA6IENCT1JWYWx1ZShTdHJpbmcoaW5TdHJpbmcp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NC
T1JWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1
ZS5oCmluZGV4IDVlNTM4M2ZhY2Y1ZGZiZDI5Y2YxNTM1NTdjYTU4YjI4ZGI5OTg4NDEuLmY3OWVm
ZDQ4NmYyY2YxNzIxYjljNGQ3YzUzNDc0M2E2MzUyNTc5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmgKQEAgLTEsNSArMSw1IEBACiAv
LyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNyw2ICszNywxMCBA
QAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQnVmZmVyU291cmNlOworfQorCiBuYW1l
c3BhY2UgY2JvciB7CiAKIC8vIEEgY2xhc3MgZm9yIENvbmNpc2UgQmluYXJ5IE9iamVjdCBSZXBy
ZXNlbnRhdGlvbiAoQ0JPUikgdmFsdWVzLgpAQCAtMTI3LDYgKzEzMSw4IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBDQk9SVmFsdWUoY29uc3QgQmluYXJ5VmFsdWUmKTsKICAgICBleHBsaWNpdCBD
Qk9SVmFsdWUoQmluYXJ5VmFsdWUmJik7CiAKKyAgICBleHBsaWNpdCBDQk9SVmFsdWUoY29uc3Qg
V2ViQ29yZTo6QnVmZmVyU291cmNlJik7CisKICAgICBleHBsaWNpdCBDQk9SVmFsdWUoY29uc3Qg
Y2hhciopOwogICAgIGV4cGxpY2l0IENCT1JWYWx1ZShTdHJpbmcmJik7CiAgICAgZXhwbGljaXQg
Q0JPUlZhbHVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3BwCmlu
ZGV4IDVjYmRlOTZmZDFlMGU0MmEwMDg5YWFhMzVhNDA5MjA3ODU4NjQyMTMuLjJmNjlkNzM4Mzhm
OTFkMDFiMWVmZGFlOTI1NGM5Mjk3Y2I2YTU4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBDQk9SVmFsdWUgY29udmVydFVzZXJFbnRp
dHlUb0NCT1IoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uCiAgICAgdXNl
ck1hcC5lbXBsYWNlKENCT1JWYWx1ZShrRW50aXR5TmFtZU1hcEtleSksIENCT1JWYWx1ZSh1c2Vy
RW50aXR5Lm5hbWUpKTsKICAgICBpZiAoIXVzZXJFbnRpdHkuaWNvbi5pc0VtcHR5KCkpCiAgICAg
ICAgIHVzZXJNYXAuZW1wbGFjZShDQk9SVmFsdWUoa0ljb25VcmxNYXBLZXkpLCBDQk9SVmFsdWUo
dXNlckVudGl0eS5pY29uKSk7Ci0gICAgdXNlck1hcC5lbXBsYWNlKENCT1JWYWx1ZShrRW50aXR5
SWRNYXBLZXkpLCBDQk9SVmFsdWUodXNlckVudGl0eS5pZFZlY3RvcikpOworICAgIHVzZXJNYXAu
ZW1wbGFjZShDQk9SVmFsdWUoa0VudGl0eUlkTWFwS2V5KSwgQ0JPUlZhbHVlKHVzZXJFbnRpdHku
aWQpKTsKICAgICB1c2VyTWFwLmVtcGxhY2UoQ0JPUlZhbHVlKGtEaXNwbGF5TmFtZU1hcEtleSks
IENCT1JWYWx1ZSh1c2VyRW50aXR5LmRpc3BsYXlOYW1lKSk7CiAgICAgcmV0dXJuIENCT1JWYWx1
ZShXVEZNb3ZlKHVzZXJNYXApKTsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIENCT1JWYWx1
ZSBjb252ZXJ0RGVzY3JpcHRvclRvQ0JPUihjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvciYgZGUKIHsKICAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIGNib3JEZXNjcmlwdG9yTWFwOwog
ICAgIGNib3JEZXNjcmlwdG9yTWFwW0NCT1JWYWx1ZShrQ3JlZGVudGlhbFR5cGVLZXkpXSA9IENC
T1JWYWx1ZShwdWJsaWNLZXlDcmVkZW50aWFsVHlwZVRvU3RyaW5nKGRlc2NyaXB0b3IudHlwZSkp
OwotICAgIGNib3JEZXNjcmlwdG9yTWFwW0NCT1JWYWx1ZShrQ3JlZGVudGlhbElkS2V5KV0gPSBD
Qk9SVmFsdWUoZGVzY3JpcHRvci5pZFZlY3Rvcik7CisgICAgY2JvckRlc2NyaXB0b3JNYXBbQ0JP
UlZhbHVlKGtDcmVkZW50aWFsSWRLZXkpXSA9IENCT1JWYWx1ZShkZXNjcmlwdG9yLmlkKTsKICAg
ICByZXR1cm4gQ0JPUlZhbHVlKFdURk1vdmUoY2JvckRlc2NyaXB0b3JNYXApKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
Q29tbWFuZENvbnN0cnVjdG9yLmNwcAppbmRleCAyNGUxNWQzNGU0MTVkYjViNjk3ZWU1NjNiNThj
OTZlM2NmYWZhZWU1Li5lZjNhN2QwOTQzMmZkNTFlMGU2MWNiMTc2ZGEyOTJlZGNlYzg2OWE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2Zp
ZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8vIENvcHlyaWdo
dCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHly
aWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTgxLDYgKzgxLDEzIEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29u
c3QgVmVjdG9yPHVpbnQ4CiAgICAgcmV0dXJuIGNvbW1hbmQuZ2V0RW5jb2RlZENvbW1hbmQoKTsK
IH0KIAorc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb25zdHJ1Y3RVMmZT
aWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGFwcGxpY2F0aW9uUGFyYW1ldGVyLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGNoYWxsZW5nZVBhcmFtZXRlciwgY29uc3QgQnVmZmVyU291
cmNlJiBrZXlIYW5kbGUsIGJvb2wgY2hlY2tPbmx5KQoreworICAgIC8vIEZJWE1FOiBDYW4gd2Ug
YXZvaWQgdGhpcyBjb3B5PworICAgIFZlY3Rvcjx1aW50OF90PiBrZXlWZWN0b3Ioa2V5SGFuZGxl
LmRhdGEoKSwga2V5SGFuZGxlLmxlbmd0aCgpKTsKKyAgICByZXR1cm4gY29uc3RydWN0VTJmU2ln
bkNvbW1hbmQoYXBwbGljYXRpb25QYXJhbWV0ZXIsIGNoYWxsZW5nZVBhcmFtZXRlciwga2V5VmVj
dG9yLCBjaGVja09ubHkpOworfQorCiB9IC8vIG5hbWVzcGFjZQogCiBib29sIGlzQ29udmVydGli
bGVUb1UyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zJiByZXF1ZXN0KQpAQCAtMTExLDEwICsxMTgsMTAgQEAgc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+IGNvbnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21tYW5kKGNvbnN0IFZlY3Rv
cjx1aW4KICAgICBpZiAoa2V5SGFuZGxlLnR5cGUgIT0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6
OlB1YmxpY0tleSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBj
b25zdHJ1Y3RVMmZTaWduQ29tbWFuZChwcm9kdWNlUnBJZEhhc2gocmVxdWVzdC5ycC5pZCksIGNs
aWVudERhdGFIYXNoLCBrZXlIYW5kbGUuaWRWZWN0b3IsIHRydWUgLyogY2hlY2tPbmx5ICovKTsK
KyAgICByZXR1cm4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQocHJvZHVjZVJwSWRIYXNoKHJlcXVl
c3QucnAuaWQpLCBjbGllbnREYXRhSGFzaCwga2V5SGFuZGxlLmlkLCB0cnVlIC8qIGNoZWNrT25s
eSAqLyk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZT
aWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQ
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmIHJlcXVlc3QsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5SGFuZGxlLCBib29sIGlzQXBwSWQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBj
bGllbnREYXRhSGFzaCwgY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiBy
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UmIGtleUhhbmRsZSwgYm9vbCBpc0Fw
cElkKQogewogICAgIGlmICghaXNDb252ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQocmVxdWVzdCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgKaW5k
ZXggNGY4YWM0MzI1ZTk1ZDNiN2Y1YWVkYWUzNWJlZjQ2ODNkNTg1M2ExNC4uZTRlNjU0Y2ZkNWY3
OTEzYjVmOTA3ZTNjMzBjNDhhZGIwYzM2ZTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaApA
QCAtMSw1ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBCdWZmZXJTb3VyY2U7CiBzdHJ1Y3QgQXV0aGVudGljYXRpb25FeHRl
bnNpb25zQ2xpZW50SW5wdXRzOwogc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM7CiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I7CkBAIC02Myw3ICs2
NCw3IEBAIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252
ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQoY29uc3QKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3Jl
ZGVudGlhbERlc2NyaXB0b3ImKTsKIAogLy8gRXh0cmFjdHMgQVBEVSBlbmNvZGVkIFUyRiBzaWdu
IGNvbW1hbmQgZnJvbSBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuCi1XRUJDT1JF
X0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmU2lnbkNv
bW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgV2ViQ29y
ZTo6UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiwgY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBrZXlIYW5kbGUsIGJvb2wgaXNBcHBJZCA9IGZhbHNlKTsKK1dFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb25z
dCBWZWN0b3I8dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMmLCBjb25zdCBXZWJDb3JlOjpCdWZmZXJTb3VyY2Um
IGtleUhhbmRsZSwgYm9vbCBpc0FwcElkID0gZmFsc2UpOwogCiBXRUJDT1JFX0VYUE9SVCBWZWN0
b3I8dWludDhfdD4gY29uc3RydWN0Qm9ndXNVMmZSZWdpc3RyYXRpb25Db21tYW5kKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25z
ZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
UmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmluZGV4IDFhN2QxMDViYjg1MjVkNTVkZTkzYmQ1MzkwNmE4
MTMwYTY2MTMwM2EuLjNmMzY2YWEyNzA2ODQ5NzQ1YWNhMjgxNzliNTk5NmU2NjZlZTI2ZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25z
ZUNvbnZlcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRv
L1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcApAQCAtMTYzLDkgKzE2Myw5IEBAIFJlZlB0cjxBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29u
c3QgU3RyaW5nJiByCiAgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNl
OjpjcmVhdGUoY3JlZGVudGlhbElkLCBhdHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CiB9
CiAKLVJlZlB0cjxBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVz
cG9uc2UoY29uc3QgU3RyaW5nJiBycElkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRs
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVu
dCBhdHRhY2htZW50KQorUmVmUHRyPEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVh
ZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFdlYkNvcmU6OkJ1ZmZl
clNvdXJjZSYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhl
bnRpY2F0b3JBdHRhY2htZW50IGF0dGFjaG1lbnQpCiB7Ci0gICAgaWYgKGtleUhhbmRsZS5pc0Vt
cHR5KCkgfHwgdTJmRGF0YS5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgpCisgICAgaWYgKCFrZXlI
YW5kbGUubGVuZ3RoKCkgfHwgdTJmRGF0YS5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gMSBieXRlIGZsYWdzLCA0IGJ5dGVzIGNvdW50
ZXIKQEAgLTE3OCw3ICsxNzgsOCBAQCBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgYwogCiAgICAgLy8g
RklYTUU6IEZpbmQgYSB3YXkgdG8gcmVtb3ZlIHRoZSBuZWVkIG9mIGNvbnN0cnVjdGluZyBhIHZl
Y3RvciBoZXJlLgogICAgIFZlY3Rvcjx1aW50OF90PiBzaWduYXR1cmUgeyB1MmZEYXRhLmRhdGEo
KSArIHNpZ25hdHVyZUluZGV4LCB1MmZEYXRhLnNpemUoKSAtIHNpZ25hdHVyZUluZGV4IH07Ci0g
ICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGtleUhhbmRs
ZSwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9LCBhdHRhY2htZW50KTsKKyAgICBWZWN0b3I8dWlu
dDhfdD4ga2V5SGFuZGxlVmVjdG9yIHsga2V5SGFuZGxlLmRhdGEoKSwga2V5SGFuZGxlLmxlbmd0
aCgpIH07CisgICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRl
KGtleUhhbmRsZVZlY3RvciwgYXV0aERhdGEsIHNpZ25hdHVyZSwgeyB9LCBhdHRhY2htZW50KTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgZmlkbwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCBlYzMz
NDI5NDhmMWQ1ZjM1YjExOTAyNDJlOGQxMWI4NGQ3ZGMxYjY4Li41N2Q1M2M3MWMyMTk4ODM0ZmQ5
OGRmYjIwM2RiNzc3ZjFjNDM3YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtMzYsNiAr
MzYsMTAgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJ1
ZmZlclNvdXJjZTsKK30KKwogbmFtZXNwYWNlIGZpZG8gewogCiAvLyBDb252ZXJ0cyBhIFUyRiBy
ZWdpc3RlciByZXNwb25zZSB0byBXZWJBdXRoTiBtYWtlQ3JlZGVudGlhbCByZXNwb25zZS4KQEAg
LTQ0LDcgKzQ4LDcgQEAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRlc3RhdGlvblJlc3BvbnNlPiByZWFkVTJmUmVnaXN0ZXIKIAogLy8gQ29udmVydHMgYSBV
MkYgYXV0aGVudGljYXRpb24gcmVzcG9uc2UgdG8gV2ViQXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3Bv
bnNlLgogLy8gaHR0cHM6Ly9maWRvYWxsaWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4
MDIyNy9maWRvLWNsaWVudC10by1hdXRoZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAy
MjcuaHRtbCN1MmYtYXV0aGVudGljYXRvckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5Ci1X
RUJDT1JFX0VYUE9SVCBSZWZQdHI8V2ViQ29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3Bv
bnNlPiByZWFkVTJmU2lnblJlc3BvbnNlKGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgV2Vi
Q29yZTo6QXV0aGVudGljYXRvckF0dGFjaG1lbnQpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdl
YkNvcmU6OkF1dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25z
ZShjb25zdCBTdHJpbmcmIHJwSWQsIGNvbnN0IFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSYga2V5SGFu
ZGxlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
b3JBdHRhY2htZW50KTsKIAogfSAvLyBuYW1lc3BhY2UgZmlkbwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9CdWZmZXJTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCmluZGV4IDM2YzE4NTM5OTk5ODBlYjYzNjczYmRlY2E0
MjhkM2YyZTBkNDMzY2EuLjE2NjM3MGJlOWQ5Njg0ZjE0YjdkZGQ3YTI0NDJjNjBhNTQ0NjFjMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx2YXJpYW50Pgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVk
KF9fT0JKQ19fKQorT0JKQ19DTEFTUyBOU0RhdGE7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2UgewpAQCAtNjQsOCArNjksNjMgQEAgcHVibGljOgog
ICAgICAgICB9LCBtX3ZhcmlhbnQpOwogICAgIH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxCdWZmZXJTb3VyY2U+IGRlY29kZShEZWNvZGVyJik7
CisKIHByaXZhdGU6CiAgICAgVmFyaWFudFR5cGUgbV92YXJpYW50OwogfTsKIAordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQnVmZmVyU291cmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgo
KSk7CisgICAgaWYgKCFsZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZW5jb2Rlci5l
bmNvZGVGaXhlZExlbmd0aERhdGEoZGF0YSgpLCBsZW5ndGgoKSAqIHNpemVvZih1aW50OF90KSwg
YWxpZ25vZih1aW50OF90KSk7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9w
dGlvbmFsPEJ1ZmZlclNvdXJjZT4gQnVmZmVyU291cmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBzaXplOworICAgIGRlY29kZXIgPj4g
c2l6ZTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
aWYgKCEqc2l6ZSkKKyAgICAgICAgcmV0dXJuIEJ1ZmZlclNvdXJjZSgpOworCisgICAgYXV0byBk
YXRhU2l6ZSA9IENoZWNrZWRTaXplIHsgKnNpemUgfSAqIHNpemVvZih1aW50OF90KTsKKyAgICBp
ZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBkZWNvZGVyLmRlY29kZUZp
eGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKHVpbnQ4X3QpKTsKKyAgICBpZiAo
IWRhdGEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIEJ1ZmZlclNv
dXJjZShKU0M6OkFycmF5QnVmZmVyOjp0cnlDcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4oZGF0YSksIGRhdGFTaXplLnZhbHVlKCkpKTsKK30KKworaW5saW5lIEJ1ZmZlclNvdXJj
ZSB0b0J1ZmZlclNvdXJjZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoKQorewor
ICAgIHJldHVybiBCdWZmZXJTb3VyY2UoSlNDOjpBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEs
IGxlbmd0aCkpOworfQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18p
CitpbmxpbmUgQnVmZmVyU291cmNlIHRvQnVmZmVyU291cmNlKE5TRGF0YSAqZGF0YSkKK3sKKyAg
ICByZXR1cm4gQnVmZmVyU291cmNlKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpKTsKK30K
KworaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IEJ1ZmZlclNvdXJjZSYg
ZGF0YSkKK3sKKyAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRl
czpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5sZW5ndGgoKV0pOworfQorI2VuZGlmCisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKwordXNpbmcgV2ViQ29yZTo6dG9CdWZmZXJTb3VyY2U7CisjaWYg
UExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQoX19PQkpDX18pCit1c2luZyBXZWJDb3JlOjp0b05T
RGF0YTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAzOTRkZTNiMDU4
OWU3ZjYzNTI0NDA2YTE4NzBhNmM5ZDIwMjA3MGI1Li44NzU4MThhNDA1NDFhZjliNjY5MDAzMDY4
ODY2Y2E1ODIxOGYxODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMzg5LDcg
KzM4OSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zOjpVc2VyRW50aXR5IHB1YmxpY0tleUNyZWRlbnRpCiAgICAgV2ViQ29yZTo6UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSByZXN1bHQ7CiAgICAgcmVzdWx0
Lm5hbWUgPSB1c2VyRW50aXR5Lm5hbWU7CiAgICAgcmVzdWx0Lmljb24gPSB1c2VyRW50aXR5Lmlj
b247Ci0gICAgcmVzdWx0LmlkVmVjdG9yID0gdmVjdG9yRnJvbU5TRGF0YSh1c2VyRW50aXR5Lmlk
ZW50aWZpZXIpOworICAgIHJlc3VsdC5pZCA9IHRvQnVmZmVyU291cmNlKHVzZXJFbnRpdHkuaWRl
bnRpZmllcik7CiAgICAgcmVzdWx0LmRpc3BsYXlOYW1lID0gdXNlckVudGl0eS5kaXNwbGF5TmFt
ZTsKIAogICAgIHJldHVybiByZXN1bHQ7CkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIFZlY3Rv
cjxXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gcHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXAKICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjcmVkZW50aWFs
cy5jb3VudCk7CiAKICAgICBmb3IgKF9XS1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yICpj
cmVkZW50aWFsIDogY3JlZGVudGlhbHMpCi0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQo
eyBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCB7IH0sIHZlY3Rv
ckZyb21OU0RhdGEoY3JlZGVudGlhbC5pZGVudGlmaWVyKSwgYXV0aGVudGljYXRvclRyYW5zcG9y
dHMoY3JlZGVudGlhbC50cmFuc3BvcnRzKSB9KTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFw
cGVuZCh7IFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXksIHRvQnVm
ZmVyU291cmNlKGNyZWRlbnRpYWwuaWRlbnRpZmllciksIGF1dGhlbnRpY2F0b3JUcmFuc3BvcnRz
KGNyZWRlbnRpYWwudHJhbnNwb3J0cykgfSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2Ev
TG9jYWxBdXRoZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDUzMzQ2ZGQ1MTM3ODZm
NWIxN2NmMzcxZGE2OTg3YzJiNzEzOWY3NjkuLjBiMDEwODk5N2ZjNTJhNDM4MDZhNGNlOTk0ZmFl
ODFlYThlNzMxMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0K
QEAgLTg0LDggKzg0LDggQEAgc3RhdGljIGlubGluZSBIYXNoU2V0PFN0cmluZz4gcHJvZHVjZUhh
c2hTZXQoY29uc3QgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXMKIHsKICAgICBIYXNoU2V0
PFN0cmluZz4gcmVzdWx0OwogICAgIGZvciAoYXV0byYgY3JlZGVudGlhbERlc2NyaXB0b3IgOiBj
cmVkZW50aWFsRGVzY3JpcHRvcnMpIHsKLSAgICAgICAgaWYgKGVtcHR5VHJhbnNwb3J0c09yQ29u
dGFpbihjcmVkZW50aWFsRGVzY3JpcHRvci50cmFuc3BvcnRzLCBBdXRoZW50aWNhdG9yVHJhbnNw
b3J0OjpJbnRlcm5hbCkgJiYgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9PSBQdWJsaWNLZXlD
cmVkZW50aWFsVHlwZTo6UHVibGljS2V5ICYmIGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9y
LnNpemUoKSA9PSBjcmVkZW50aWFsSWRMZW5ndGgpCi0gICAgICAgICAgICByZXN1bHQuYWRkKGJh
c2U2NEVuY29kZVRvU3RyaW5nKGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLmRhdGEoKSwg
Y3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3Iuc2l6ZSgpKSk7CisgICAgICAgIGlmIChlbXB0
eVRyYW5zcG9ydHNPckNvbnRhaW4oY3JlZGVudGlhbERlc2NyaXB0b3IudHJhbnNwb3J0cywgQXV0
aGVudGljYXRvclRyYW5zcG9ydDo6SW50ZXJuYWwpICYmIGNyZWRlbnRpYWxEZXNjcmlwdG9yLnR5
cGUgPT0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBjcmVkZW50aWFsRGVz
Y3JpcHRvci5pZC5sZW5ndGgoKSA9PSBjcmVkZW50aWFsSWRMZW5ndGgpCisgICAgICAgICAgICBy
ZXN1bHQuYWRkKGJhc2U2NEVuY29kZVRvU3RyaW5nKGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkLmRh
dGEoKSwgY3JlZGVudGlhbERlc2NyaXB0b3IuaWQubGVuZ3RoKCkpKTsKICAgICB9CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRv
cjo6Y29udGludWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3ND
bwogICAgIGNvbnN0IGF1dG8mIHNlY0F0dHJMYWJlbCA9IGNyZWF0aW9uT3B0aW9ucy5ycC5pZDsK
IAogICAgIGNib3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgdXNlckVudGl0eU1hcDsKLSAgICB1c2Vy
RW50aXR5TWFwW2Nib3I6OkNCT1JWYWx1ZShmaWRvOjprRW50aXR5SWRNYXBLZXkpXSA9IGNib3I6
OkNCT1JWYWx1ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CisgICAgdXNlckVudGl0
eU1hcFtjYm9yOjpDQk9SVmFsdWUoZmlkbzo6a0VudGl0eUlkTWFwS2V5KV0gPSBjYm9yOjpDQk9S
VmFsdWUoY3JlYXRpb25PcHRpb25zLnVzZXIuaWQpOwogICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6
Q0JPUlZhbHVlKGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoY3Jl
YXRpb25PcHRpb25zLnVzZXIubmFtZSk7CiAgICAgYXV0byB1c2VyRW50aXR5ID0gY2Jvcjo6Q0JP
UldyaXRlcjo6d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUodXNlckVudGl0eU1hcCkpKTsK
ICAgICBBU1NFUlQodXNlckVudGl0eSk7CkBAIC02ODYsOSArNjg2LDkgQEAgdm9pZCBMb2NhbEF1
dGhlbnRpY2F0b3I6OmRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwoKSBjb25zdAogICAgIG1fZXhp
c3RpbmdDcmVkZW50aWFscy5maW5kTWF0Y2hpbmcoW2NyZWF0aW9uT3B0aW9uc10gKGF1dG8mIGNy
ZWRlbnRpYWwpIHsKICAgICAgICAgYXV0byogdXNlckhhbmRsZSA9IGNyZWRlbnRpYWwtPnVzZXJI
YW5kbGUoKTsKICAgICAgICAgQVNTRVJUKHVzZXJIYW5kbGUpOwotICAgICAgICBpZiAodXNlckhh
bmRsZS0+Ynl0ZUxlbmd0aCgpICE9IGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLnNpemUo
KSkKKyAgICAgICAgaWYgKHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSAhPSBjcmVhdGlvbk9wdGlv
bnMudXNlci5pZC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
aWYgKG1lbWNtcCh1c2VySGFuZGxlLT5kYXRhKCksIGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVj
dG9yLmRhdGEoKSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKSkKKyAgICAgICAgaWYgKG1lbWNt
cCh1c2VySGFuZGxlLT5kYXRhKCksIGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkLmRhdGEoKSwgdXNl
ckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
ICAgICBhdXRvIHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkubW0KaW5kZXggNjFmOTU0MmRlOWUxZjAyY2JkMWZiZWMwMGQ4NDM3ZWUw
ZmZjODhjYi4uZWVjNTliZDdlYjk1ZTEwNGRjYzc5ZDg0OTU0NTBjZjEzZDMyMjM1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubW0KQEAgLTQ5LDExICs0OSw2IEBAIHN0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVy
PiB0b0FycmF5QnVmZmVyKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5s
ZW5ndGgpOwogfQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNv
bnN0IEJ1ZmZlclNvdXJjZSYgZGF0YSkKLXsKLSAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5sZW5ndGgoKV0pOwot
fQotCiBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiB2ZWN0b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0RhdGEgYWxsb2Nd
IGluaXRXaXRoQnl0ZXM6dmVjdG9yLmRhdGEoKSBsZW5ndGg6dmVjdG9yLnNpemUoKV0pOwpAQCAt
MTUxLDcgKzE0Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPEFTQ1B1YmxpY0tleUNyZWRl
bnRpYWxEZXNjcmlwdG9yPiB0b0FTQ0Rlc2NyaXB0b3IoUHVibGljCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gYWRvcHROUyhbYWxsb2NBU0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvckluc3RhbmNlKCkgaW5pdFdpdGhDcmVkZW50aWFsSUQ6dG9OU0RhdGEoZGVzY3JpcHRvci5p
ZFZlY3RvcikuZ2V0KCkgdHJhbnNwb3J0czp0cmFuc3BvcnRzLmdldCgpXSk7CisgICAgcmV0dXJu
IGFkb3B0TlMoW2FsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JJbnN0YW5jZSgp
IGluaXRXaXRoQ3JlZGVudGlhbElEOnRvTlNEYXRhKGRlc2NyaXB0b3IuaWQpLmdldCgpIHRyYW5z
cG9ydHM6dHJhbnNwb3J0cy5nZXQoKV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRl
bnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQo
Y29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE3
OCwxMCArMTczLDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250
ZXh0PiBjb25maWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4CiAKICAgICBhdXRvIGNyZWRl
bnRpYWxDcmVhdGlvbk9wdGlvbnMgPSBhZG9wdE5TKFthbGxvY0FTQ1B1YmxpY0tleUNyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnNJbnN0YW5jZSgpIGluaXRdKTsKIAotICAgIFtjcmVkZW50aWFsQ3Jl
YXRpb25PcHRpb25zIHNldENoYWxsZW5nZTp0b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZVZlY3Rv
cikuZ2V0KCldOworICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldENoYWxsZW5nZTp0
b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZSkuZ2V0KCldOwogICAgIFtjcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIHNldFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycC5pZF07CiAgICAg
W2NyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgc2V0VXNlck5hbWU6b3B0aW9ucy51c2VyLm5hbWVd
OwotICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldFVzZXJJZGVudGlmaWVyOnRvTlNE
YXRhKG9wdGlvbnMudXNlci5pZFZlY3RvcikuZ2V0KCldOworICAgIFtjcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zIHNldFVzZXJJZGVudGlmaWVyOnRvTlNEYXRhKG9wdGlvbnMudXNlci5pZC5kYXRh
KCkpLmdldCgpXTsKICAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRVc2VyRGlzcGxh
eU5hbWU6b3B0aW9ucy51c2VyLmRpc3BsYXlOYW1lXTsKICAgICBbY3JlZGVudGlhbENyZWF0aW9u
T3B0aW9ucyBzZXRVc2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdl
dCgpXTsKICAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRTaG91bGRSZXF1aXJlUmVz
aWRlbnRLZXk6c2hvdWxkUmVxdWlyZVJlc2lkZW50S2V5XTsKQEAgLTIzNiw3ICsyMzEsNyBAQCBz
dGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlv
bkFzc2VydGlvblJlcXVlc3RDb250ZQogICAgIGF1dG8gcmVxdWVzdENvbnRleHQgPSBhZG9wdE5T
KFthbGxvY0FTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dEluc3RhbmNlKCkgaW5pdFdpdGhSZXF1
ZXN0VHlwZXM6cmVxdWVzdFR5cGVzXSk7CiAgICAgW3JlcXVlc3RDb250ZXh0IHNldFJlbHlpbmdQ
YXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycElkXTsKIAotICAgIGF1dG8gY2hhbGxlbmdlID0gdG9O
U0RhdGEob3B0aW9ucy5jaGFsbGVuZ2VWZWN0b3IpOworICAgIGF1dG8gY2hhbGxlbmdlID0gdG9O
U0RhdGEob3B0aW9ucy5jaGFsbGVuZ2UpOwogCiAgICAgaWYgKHJlcXVlc3RUeXBlcyAmIEFTQ0Ny
ZWRlbnRpYWxSZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uKQogICAgICAgICBb
cmVxdWVzdENvbnRleHQgc2V0UGxhdGZvcm1LZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczpb
YWxsb2NBU0NQdWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uc0luc3RhbmNlKCkgaW5p
dFdpdGhLaW5kOkFTQ1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0gcmVseWluZ1BhcnR5
SWRlbnRpZmllcjpvcHRpb25zLnJwSWQgY2hhbGxlbmdlOmNoYWxsZW5nZS5nZXQoKSB1c2VyVmVy
aWZpY2F0aW9uUHJlZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50
aWFsczphbGxvd2VkQ3JlZGVudGlhbHMuZ2V0KCldXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhl
bnRpY2F0b3IuY3BwCmluZGV4IDQ5ZjIyMmVjOGMxZTkyZTU2NjE5ODhmYzhkYTVhMDk2NzAxZDRk
MjYuLjA0OThiZDAxZDBlMTU0MjA1NjliYTAzYTk2YTQ5MmQ2YTBjOTIyNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVu
dGljYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRp
b24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgVTJm
QXV0aGVudGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZChzaXplX3QgaW5kZXgpCiAgICAgICAgIHJl
Y2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBjcmVkZW50
aWFscyBmcm9tIHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhl
bnRpY2F0b3IuIl9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gdTJmQ21k
ID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQocmVxdWVzdERhdGEoKS5oYXNoLCByZXF1ZXN0T3B0
aW9ucywgcmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFsc1tpbmRleF0uaWRWZWN0b3IsIG1f
aXNBcHBJZCk7CisgICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChyZXF1
ZXN0RGF0YSgpLmhhc2gsIHJlcXVlc3RPcHRpb25zLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzW2luZGV4XS5pZCwgbV9pc0FwcElkKTsKICAgICBBU1NFUlQodTJmQ21kKTsKICAgICBp
c3N1ZU5ld0NvbW1hbmQoV1RGTW92ZSgqdTJmQ21kKSwgQ29tbWFuZFR5cGU6OlNpZ25Db21tYW5k
KTsKIH0KQEAgLTIwOSw5ICsyMDksOSBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVl
U2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJlc3BvbnNlJiYgYQogICAgICAg
ICBSZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZXNwb25zZTsKICAgICAg
ICAgaWYgKG1faXNBcHBJZCkgewogICAgICAgICAgICAgQVNTRVJUKHJlcXVlc3RPcHRpb25zLmV4
dGVuc2lvbnMgJiYgIXJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLmlzTnVsbCgpKTsK
LSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShyZXF1ZXN0T3B0aW9u
cy5leHRlbnNpb25zLT5hcHBpZCwgcmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFsc1ttX25l
eHRMaXN0SW5kZXggLSAxXS5pZFZlY3RvciwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVudGlj
YXRvckF0dGFjaG1lbnQ6OkNyb3NzUGxhdGZvcm0pOworICAgICAgICAgICAgcmVzcG9uc2UgPSBy
ZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLCByZXF1
ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlkLCBhcGR1
UmVzcG9uc2UuZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3Bv
bnNlKHJlcXVlc3RPcHRpb25zLnJwSWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNb
bV9uZXh0TGlzdEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCksIEF1dGhl
bnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKKyAgICAgICAgICAgIHJlc3BvbnNl
ID0gcmVhZFUyZlNpZ25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5ycElkLCByZXF1ZXN0T3B0aW9u
cy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlkLCBhcGR1UmVzcG9uc2Uu
ZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgICAg
IGlmICghcmVzcG9uc2UpIHsKICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRh
dGEgeyBVbmtub3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2Uu
Il9zIH0pOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc0Zjg5YTczNDk1ZmIxZmZkZjdkNTgyNjRkZDYzZDU2
OGQ0ZDNmYjQuLjQ2NmI4Zjg0MWRhMjk0OGJiZGI1ZDExOGQ0OGM4ZWQ1YzlhODU2MjQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NiBAQAorMjAyMS0xMS0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbV2ViQXV0aG5dIFN0b3Agc2VyaWFsaXppbmcgQnVmZmVyU291cmNlIGFuZCBWZWN0
b3I8dWludDhfdD4gZHVwbGljYXRlcyBvZiBpZGVudGlmaWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDExCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84NTMxMzgwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGUgb3JpZ2luYWwgV2ViQXV0aG4gbG9naWMgY29udmVydGVkIFdlYkNvcmU6OkJ1
ZmZlclNvdXJjZSBvYmplY3RzIHRvIFZlY3Rvcjx1aW50OF90PgorICAgICAgICBkdXJpbmcgc2Vy
aWFsaXphdGlvbiwgd2hpY2ggY3JlYXRlZCBhIHdlaXJkIGRlc2lnbiB3aGVyZSBzb21lIGNvZGUg
ZGVhbHQgd2l0aCBCdWZmZXJTb3VyY2UKKyAgICAgICAgb2JqZWN0cywgYW5kIG90aGVyIHdpdGgg
VmVjdG9ycywgYW5kIGxvdHMgb2YgY29udmVydGluZyB0byBhbmQgZnJvbSB0aGVzZSB0eXBlcy4g
SXQgYWxzbyBjYXVzZWQKKyAgICAgICAgV2ViQXV0aG4gZGF0YSBzdHJ1Y3R1cmVzIHRvIGhhdmUg
dHdvIHBsYWNlcyB3aGVyZSB0aGlzIGluZm9ybWF0aW9uIG1pZ2h0IGxpdmUsIHdpdGggdGhlCisg
ICAgICAgIFVJUHJvY2VzcyB1c2luZyBvbmUgcmVwcmVzZW50YXRpb24sIGFuZCB0aGUgV2ViQ29u
dGVudCBwcm9jZXNzIHVzaW5nIGFub3RoZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXZpc2Vz
IHRoZSBjb2RlIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gVGhlIGlkZW50aWZpZXJzIGFyZSBh
bHdheXMgc3RvcmVkIGFzIEJ1ZmZlclNvdXJjZSwgYW5kIHRoZSBzYW1lIG1lbWJlciBpcyB1c2Vk
IGluIFVJUHJvY2VzcworICAgICAgICAgICBhbmQgV2ViQ29udGVudCBwcm9jZXNzIHdoZW4gYWNj
ZXNzaW5nIHRoaXMgaW5mb3JtYXRpb24uCisgICAgICAgIDIuIFdlIG5vdyBzZXJpYWxpemUgQnVm
ZmVyU291cmNlIGRpcmVjdGx5LgorCisgICAgICAgIFRlc3RlZCBieSBleGlzdGluZyBXZWJBdXRo
biB0ZXN0IGNhc2VzIChBUEkgYW5kIExheW91dCB0ZXN0cykKKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0
YXBSZXNwb25zZVRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdENyZWRl
bnRpYWxSYXdJZEJ5dGVzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNvbnN0cnVjdE1ha2VDcmVkZW50aWFsUmVx
dWVzdCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMS0xMSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmZpbml0ZSByZWN1cnNpb24gdW5kZXIg
SW5qZWN0ZWRCdW5kbGVQYWdlOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcApp
bmRleCBjYTliYzIzYTY4YTJkOGFlZmZjNThlN2RhNDc4NTYwMjEzZDVkNzU1Li5hZTAzNTJjYjM4
NTg4NWQ4NzU0NDZhMmQzMzAzYmQ0OGM1ZWU0ZjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8vIENvcHlyaWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTU2LDEzICs1
NiwxMyBAQCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VDcmVkZW50aWFs
UmVxdWVzdFBhcmFtKQogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVz
ZXJFbnRpdHkgdXNlcjsKICAgICB1c2VyLm5hbWUgPSAiam9obnBzbWl0aEBleGFtcGxlLmNvbSI7
CiAgICAgdXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampqcHFQYi5w
bmciOwotICAgIHVzZXIuaWRWZWN0b3IuYXBwZW5kKFRlc3REYXRhOjprVXNlcklkLCBzaXplb2Yo
VGVzdERhdGE6OmtVc2VySWQpKTsKKyAgICB1c2VyLmlkID0gdG9CdWZmZXJTb3VyY2UoVGVzdERh
dGE6OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOwogICAgIHVzZXIuZGlzcGxh
eU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CiAKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlh
bENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJsaWNLZXlDcmVkZW50
aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1Ymxp
Y0tleSwgMjU3IH0gfTsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpB
dXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgQXV0aGVudGljYXRvckF0
dGFjaG1lbnQ6OlBsYXRmb3JtLCB0cnVlLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlBy
ZWZlcnJlZCB9OwogCi0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRp
b25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9u
LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxvcHQsIHsg
fSB9OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJw
LCB1c2VyLCB7IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRh
SGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlh
bGl6ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlv
bnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxh
YmlsaXR5OjprU3VwcG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC03OSwxMyArNzksMTMgQEAgVEVT
VChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJh
bU5vVVZOb1JLKQogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJF
bnRpdHkgdXNlcjsKICAgICB1c2VyLm5hbWUgPSAiam9obnBzbWl0aEBleGFtcGxlLmNvbSI7CiAg
ICAgdXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampqcHFQYi5wbmci
OwotICAgIHVzZXIuaWRWZWN0b3IuYXBwZW5kKFRlc3REYXRhOjprVXNlcklkLCBzaXplb2YoVGVz
dERhdGE6OmtVc2VySWQpKTsKKyAgICB1c2VyLmlkID0gdG9CdWZmZXJTb3VyY2UoVGVzdERhdGE6
OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOwogICAgIHVzZXIuZGlzcGxheU5h
bWUgPSAiSm9obiBQLiBTbWl0aCI7CiAKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJsaWNLZXlDcmVkZW50aWFs
VHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tl
eSwgMjU3IH0gfTsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRo
ZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQ6OlBsYXRmb3JtLCBmYWxzZSwgVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpEaXNj
b3VyYWdlZCB9OwogCi0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRp
b25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9u
LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxvcHQsIHsg
fSB9OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJw
LCB1c2VyLCB7IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0
YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRh
SGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlh
bGl6ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlv
bnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxh
YmlsaXR5OjprU3VwcG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC0xMDIsMTMgKzEwMiwxMyBAQCBU
RVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VDcmVkZW50aWFsUmVxdWVzdFBh
cmFtVVZSZXF1aXJlZEJ1dE5vdFN1cAogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnM6OlVzZXJFbnRpdHkgdXNlcjsKICAgICB1c2VyLm5hbWUgPSAiam9obnBzbWl0aEBleGFt
cGxlLmNvbSI7CiAgICAgdXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FC
ampqcHFQYi5wbmciOwotICAgIHVzZXIuaWRWZWN0b3IuYXBwZW5kKFRlc3REYXRhOjprVXNlcklk
LCBzaXplb2YoVGVzdERhdGE6OmtVc2VySWQpKTsKKyAgICB1c2VyLmlkID0gdG9CdWZmZXJTb3Vy
Y2UoVGVzdERhdGE6OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOwogICAgIHVz
ZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CiAKICAgICBWZWN0b3I8UHVibGljS2V5
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJsaWNL
ZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlhbFR5
cGU6OlB1YmxpY0tleSwgMjU3IH0gfTsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgQXV0aGVu
dGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCBmYWxzZSwgVXNlclZlcmlmaWNhdGlvblJlcXVp
cmVtZW50OjpSZXF1aXJlZCB9OwogCi0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0
aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwg
c2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51
bGxvcHQsIHsgfSB9OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0
aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlv
biwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07
CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtD
bGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBh
dXRvIHNlcmlhbGl6ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhh
c2gsIG9wdGlvbnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0
aW9uQXZhaWxhYmlsaXR5OjprTm90U3VwcG9ydGVkKTsKQEAgLTEyNSw3ICsxMjUsNyBAQCBURVNU
KENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VDcmVkZW50aWFsUmVxdWVzdFBhcmFt
V2l0aFBpbikKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpVc2VyRW50
aXR5IHVzZXI7CiAgICAgdXNlci5uYW1lID0gImpvaG5wc21pdGhAZXhhbXBsZS5jb20iOwogICAg
IHVzZXIuaWNvbiA9ICJodHRwczovL3BpY3MuYWNtZS5jb20vMDAvcC9hQmpqanBxUGIucG5nIjsK
LSAgICB1c2VyLmlkVmVjdG9yLmFwcGVuZChUZXN0RGF0YTo6a1VzZXJJZCwgc2l6ZW9mKFRlc3RE
YXRhOjprVXNlcklkKSk7CisgICAgdXNlci5pZCA9IHRvQnVmZmVyU291cmNlKFRlc3REYXRhOjpr
VXNlcklkLCBzaXplb2YoVGVzdERhdGE6OmtVc2VySWQpKTsKICAgICB1c2VyLmRpc3BsYXlOYW1l
ID0gIkpvaG4gUC4gU21pdGgiOwogCiAgICAgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IHBhcmFtcyB7IHsgUHVibGljS2V5Q3JlZGVudGlhbFR5
cGU6OlB1YmxpY0tleSwgNyB9LCB7IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXks
IDI1NyB9IH07CkBAIC0xMzUsNyArMTM1LDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RD
b25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJhbVdpdGhQaW4pCiAgICAgcGluLnByb3Rv
Y29sID0gcGluOjprUHJvdG9jb2xWZXJzaW9uOwogICAgIHBpbi5hdXRoLmFwcGVuZChUZXN0RGF0
YTo6a0N0YXAyUGluQXV0aCwgc2l6ZW9mKFRlc3REYXRhOjprQ3RhcDJQaW5BdXRoKSk7CiAKLSAg
ICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIG9wdGlvbnMgeyBycCwgdXNlciwg
eyB9LCBwYXJhbXMsIHN0ZDo6bnVsbG9wdCwgeyB9LCBzZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29u
dmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIHN0ZDo6bnVsbG9wdCwgeyB9IH07CisgICAgUHVibGlj
S2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFy
YW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQ
cmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxvcHQgfTsKICAgICBWZWN0b3I8dWludDhfdD4gaGFz
aDsKICAgICBoYXNoLmFwcGVuZChUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVz
dERhdGE6OmtDbGllbnREYXRhSGFzaCkpOwogICAgIGF1dG8gc2VyaWFsaXplZERhdGEgPSBlbmNv
ZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoaGFzaCwgb3B0aW9ucywgQXV0aGVudGljYXRv
clN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRpb25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0
ZWRBbmRDb25maWd1cmVkLCBwaW4pOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIFRFU1QoQ1RBUFJlcXVl
c3RUZXN0LCBUZXN0Q29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCkKICAgICAgICAgMHgzNCwg
MHg4NSwgMHg4YSwgMHhjNywgMHg1YiwgMHhlZCwgMHgzZiwgMHhkNSwgMHg4MCwgMHhiZiwgMHg5
OCwKICAgICAgICAgMHgwOCwgMHhkOSwgMHg0ZiwgMHhjYiwgMHhlZSwgMHg4MiwgMHhiOSwgMHhi
MiwgMHhlZiwgMHg2NiwgMHg3NywKICAgICAgICAgMHhhZiwgMHgwYSwgMHhkYywgMHhjMywgMHg1
OCwgMHg1MiwgMHhlYSwgMHg2YiwgMHg5ZSB9OwotICAgIGRlc2NyaXB0b3IxLmlkVmVjdG9yLmFw
cGVuZChpZDEsIHNpemVvZihpZDEpKTsKKyAgICBkZXNjcmlwdG9yMS5pZCA9IHRvQnVmZmVyU291
cmNlKGlkMSwgc2l6ZW9mKGlkMSkpOwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5hcHBl
bmQoZGVzY3JpcHRvcjEpOwogCiAgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZGVz
Y3JpcHRvcjI7CkBAIC0xNjgsNyArMTY4LDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RD
b25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KQogICAgICAgICAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAogICAgICAgICAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAogICAg
ICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAz
LCAweDAzIH07Ci0gICAgZGVzY3JpcHRvcjIuaWRWZWN0b3IuYXBwZW5kKGlkMiwgc2l6ZW9mKGlk
MikpOworICAgIGRlc2NyaXB0b3IyLmlkID0gdG9CdWZmZXJTb3VyY2UoaWQyLCBzaXplb2YoaWQy
KSk7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLmFwcGVuZChkZXNjcmlwdG9yMik7CiAK
ICAgICBvcHRpb25zLnVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1l
bnQ6OlJlcXVpcmVkOwpAQCAtMTk0LDcgKzE5NCw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBU
ZXN0Q29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdE5vVVYpCiAgICAgICAgIDB4MzQsIDB4ODUs
IDB4OGEsIDB4YzcsIDB4NWIsIDB4ZWQsIDB4M2YsIDB4ZDUsIDB4ODAsIDB4YmYsIDB4OTgsCiAg
ICAgICAgIDB4MDgsIDB4ZDksIDB4NGYsIDB4Y2IsIDB4ZWUsIDB4ODIsIDB4YjksIDB4YjIsIDB4
ZWYsIDB4NjYsIDB4NzcsCiAgICAgICAgIDB4YWYsIDB4MGEsIDB4ZGMsIDB4YzMsIDB4NTgsIDB4
NTIsIDB4ZWEsIDB4NmIsIDB4OWUgfTsKLSAgICBkZXNjcmlwdG9yMS5pZFZlY3Rvci5hcHBlbmQo
aWQxLCBzaXplb2YoaWQxKSk7CisgICAgZGVzY3JpcHRvcjEuaWQgPSB0b0J1ZmZlclNvdXJjZShp
ZDEsIHNpemVvZihpZDEpKTsKICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuYXBwZW5kKGRl
c2NyaXB0b3IxKTsKIAogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIGRlc2NyaXB0
b3IyOwpAQCAtMjA1LDcgKzIwNSw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3Ry
dWN0R2V0QXNzZXJ0aW9uUmVxdWVzdE5vVVYpCiAgICAgICAgIDB4MDMsIDB4MDMsIDB4MDMsIDB4
MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCiAgICAgICAgIDB4MDMsIDB4
MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCiAgICAg
ICAgIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMs
IDB4MDMgfTsKLSAgICBkZXNjcmlwdG9yMi5pZFZlY3Rvci5hcHBlbmQoaWQyLCBzaXplb2YoaWQy
KSk7CisgICAgZGVzY3JpcHRvcjIuaWQgPSB0b0J1ZmZlclNvdXJjZShpZDIsIHNpemVvZihpZDIp
KTsKICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuYXBwZW5kKGRlc2NyaXB0b3IyKTsKIAog
ICAgIG9wdGlvbnMudXNlclZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb25SZXF1aXJlbWVu
dDo6RGlzY291cmFnZWQ7CkBAIC0yMzEsNyArMjMxLDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3Qs
IFRlc3RDb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0VVZSZXF1aXJlZEJ1dE5vdFN1cHBvcnRl
ZCkKICAgICAgICAgMHgzNCwgMHg4NSwgMHg4YSwgMHhjNywgMHg1YiwgMHhlZCwgMHgzZiwgMHhk
NSwgMHg4MCwgMHhiZiwgMHg5OCwKICAgICAgICAgMHgwOCwgMHhkOSwgMHg0ZiwgMHhjYiwgMHhl
ZSwgMHg4MiwgMHhiOSwgMHhiMiwgMHhlZiwgMHg2NiwgMHg3NywKICAgICAgICAgMHhhZiwgMHgw
YSwgMHhkYywgMHhjMywgMHg1OCwgMHg1MiwgMHhlYSwgMHg2YiwgMHg5ZSB9OwotICAgIGRlc2Ny
aXB0b3IxLmlkVmVjdG9yLmFwcGVuZChpZDEsIHNpemVvZihpZDEpKTsKKyAgICBkZXNjcmlwdG9y
MS5pZCA9IHRvQnVmZmVyU291cmNlKGlkMSwgc2l6ZW9mKGlkMSkpOwogICAgIG9wdGlvbnMuYWxs
b3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRvcjEpOwogCiAgICAgUHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3IgZGVzY3JpcHRvcjI7CkBAIC0yNDIsNyArMjQyLDcgQEAgVEVTVChDVEFQ
UmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0VVZSZXF1aXJlZEJ1
dE5vdFN1cHBvcnRlZCkKICAgICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKICAgICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKICAgICAgICAgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMyB9OwotICAg
IGRlc2NyaXB0b3IyLmlkVmVjdG9yLmFwcGVuZChpZDIsIHNpemVvZihpZDIpKTsKKyAgICBkZXNj
cmlwdG9yMi5pZCA9IHRvQnVmZmVyU291cmNlKGlkMiwgc2l6ZW9mKGlkMikpOwogICAgIG9wdGlv
bnMuYWxsb3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRvcjIpOwogCiAgICAgb3B0aW9ucy51
c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZDsK
QEAgLTI2OCw3ICsyNjgsNyBAQCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdEdl
dEFzc2VydGlvblJlcXVlc3RXaXRoUGluKQogICAgICAgICAweDM0LCAweDg1LCAweDhhLCAweGM3
LCAweDViLCAweGVkLCAweDNmLCAweGQ1LCAweDgwLCAweGJmLCAweDk4LAogICAgICAgICAweDA4
LCAweGQ5LCAweDRmLCAweGNiLCAweGVlLCAweDgyLCAweGI5LCAweGIyLCAweGVmLCAweDY2LCAw
eDc3LAogICAgICAgICAweGFmLCAweDBhLCAweGRjLCAweGMzLCAweDU4LCAweDUyLCAweGVhLCAw
eDZiLCAweDllIH07Ci0gICAgZGVzY3JpcHRvcjEuaWRWZWN0b3IuYXBwZW5kKGlkMSwgc2l6ZW9m
KGlkMSkpOworICAgIGRlc2NyaXB0b3IxLmlkID0gdG9CdWZmZXJTb3VyY2UoaWQxLCBzaXplb2Yo
aWQxKSk7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLmFwcGVuZChkZXNjcmlwdG9yMSk7
CiAKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciBkZXNjcmlwdG9yMjsKQEAgLTI3
OSw3ICsyNzksNyBAQCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdEdldEFzc2Vy
dGlvblJlcXVlc3RXaXRoUGluKQogICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAz
LCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAogICAgICAgICAweDAzLCAweDAzLCAweDAz
LCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAogICAgICAgICAweDAz
LCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzIH07
Ci0gICAgZGVzY3JpcHRvcjIuaWRWZWN0b3IuYXBwZW5kKGlkMiwgc2l6ZW9mKGlkMikpOworICAg
IGRlc2NyaXB0b3IyLmlkID0gdG9CdWZmZXJTb3VyY2UoaWQyLCBzaXplb2YoaWQyKSk7CiAgICAg
b3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzLmFwcGVuZChkZXNjcmlwdG9yMik7CiAKICAgICBvcHRp
b25zLnVzZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlJlcXVp
cmVkOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBS
ZXNwb25zZVRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBS
ZXNwb25zZVRlc3QuY3BwCmluZGV4IDM4MzY2ZDZkM2NlYjMzN2RjYjI5ODY3MmJlODc5ODkyNWY3
NzcyODguLmUwMGYxYjBjZTEwMTU1MjRiYzk0MWYwNzBhM2E0ZmFhZmJjOWNkYWUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVz
dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1
dGhlbnRpY2F0b3JBdHRhY2htZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9CdWZmZXJTb3VyY2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JSZWFkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NC
T1JWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgpAQCAtMzMzLDEyICsz
MzQsOSBAQCBWZWN0b3I8dWludDhfdD4gZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZShzaXpl
X3QgbGVuZ3RoKQogfQogCiAvLyBSZXR1cm4gYSBrZXkgaGFuZGxlIHVzZWQgZm9yIEdldEFzc2Vy
dGlvbiByZXF1ZXN0LgotVmVjdG9yPHVpbnQ4X3Q+IGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRl
cygpCitCdWZmZXJTb3VyY2UgZ2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCkKIHsKLSAgICBW
ZWN0b3I8dWludDhfdD4gdGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzOwotICAgIHRlc3RDcmVkZW50
aWFsUmF3SWRCeXRlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNpemVvZihUZXN0RGF0YTo6a1Uy
ZlNpZ25LZXlIYW5kbGUpKTsKLSAgICB0ZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMuYXBwZW5kKFRl
c3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhh
bmRsZSkpOwotICAgIHJldHVybiB0ZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXM7CisgICAgcmV0dXJu
IHRvQnVmZmVyU291cmNlKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3RE
YXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogfQogCiAvLyBSZXR1cm4gYSBtYWxmb3JtZWQgVTJm
UmVnaXN0ZXJSZXNwb25zZS4KQEAgLTU1OCw3ICs1NTYsNyBAQCBURVNUKENUQVBSZXNwb25zZVRl
c3QsIFRlc3RQYXJzZVNpZ25SZXNwb25zZURhdGEpCiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwg
VGVzdFBhcnNlVTJmU2lnbldpdGhOdWxsS2V5SGFuZGxlKQogewotICAgIGF1dG8gcmVzcG9uc2Ug
PSByZWFkVTJmU2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1
aW50OF90PigpLCBnZXRUZXN0U2lnblJlc3BvbnNlKCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50
OjpDcm9zc1BsYXRmb3JtKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25z
ZShUZXN0RGF0YTo6a1JlbHlpbmdQYXJ0eUlkLCBCdWZmZXJTb3VyY2UoKSwgZ2V0VGVzdFNpZ25S
ZXNwb25zZSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAg
RVhQRUNUX0ZBTFNFKHJlc3BvbnNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3Bw
CmluZGV4IDJiOGI5NmJhYmYyYmVlYzAwYmJjYmIzMzMzOTg3MDM3MzBmYTBmNDQuLjE1YjI4YzUy
MWY1ODI1NmQ2NzIwNWMzMzRhZDdkNWJhZmNiNDc3NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29tbWFuZENvbnN0cnVjdG9y
VGVzdC5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0g
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC01MCw3ICs1MCw3IEBAIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMgY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCkKICAgICBycC5uYW1lID0gImFj
bWUuY29tIjsKIAogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJF
bnRpdHkgdXNlcjsKLSAgICB1c2VyLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVz
dERhdGE6OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOworICAgIHVzZXIuaWQg
PSB0b0J1ZmZlclNvdXJjZShUZXN0RGF0YTo6a1VzZXJJZCwgc2l6ZW9mKFRlc3REYXRhOjprVXNl
cklkKSk7CiAgICAgdXNlci5uYW1lID0gImpvaG5wc21pdGhAZXhhbXBsZS5jb20iOwogICAgIHVz
ZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CiAgICAgdXNlci5pY29uID0gImh0dHBz
Oi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampqcHFQYi5wbmciOwpAQCAtMTEyLDcgKzExMiw3IEBA
IFRFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdENvbnZlcnRDdGFwTWFrZUNyZWRl
bnRpYWxUb1UyZkNoZWNrT25seVNpZ24pCiAgICAgYXV0byBtYWtlQ3JlZGVudGlhbFBhcmFtID0g
Y29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCk7CiAgICAgUHVibGljS2V5Q3JlZGVudGlh
bERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAgY3JlZGVudGlhbERlc2NyaXB0
b3IudHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7Ci0gICAgY3JlZGVu
dGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6
a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsK
KyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZCA9IHRvQnVmZmVyU291cmNlKFRlc3REYXRhOjpr
VTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwog
ICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gZXhjbHVkZUxpc3Q7CiAg
ICAgZXhjbHVkZUxpc3QuYXBwZW5kKGNyZWRlbnRpYWxEZXNjcmlwdG9yKTsKICAgICBtYWtlQ3Jl
ZGVudGlhbFBhcmFtLmV4Y2x1ZGVDcmVkZW50aWFscyA9IFdURk1vdmUoZXhjbHVkZUxpc3QpOwpA
QCAtMTI4LDcgKzEyOCw3IEBAIFRFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdENv
bnZlcnRDdGFwTWFrZUNyZWRlbnRpYWxUb1UyZkNoZWNrT25seVNpZ25XCiAgICAgYXV0byBtYWtl
Q3JlZGVudGlhbFBhcmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCk7CiAgICAg
UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAg
Y3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9IHN0YXRpY19jYXN0PFB1YmxpY0tleUNyZWRlbnRp
YWxUeXBlPigtMSk7Ci0gICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0
YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZCA9IHRv
QnVmZmVyU291cmNlKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRh
OjprVTJmU2lnbktleUhhbmRsZSkpOwogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVz
Y3JpcHRvcj4gZXhjbHVkZUxpc3Q7CiAgICAgZXhjbHVkZUxpc3QuYXBwZW5kKGNyZWRlbnRpYWxE
ZXNjcmlwdG9yKTsKICAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLmV4Y2x1ZGVDcmVkZW50aWFscyA9
IFdURk1vdmUoZXhjbHVkZUxpc3QpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIFRFU1QoVTJmQ29tbWFu
ZENvbnN0cnVjdG9yVGVzdCwgVGVzdFUyZlJlZ2lzdGVyQ3JlZGVudGlhbEFsZ29yaXRobVJlcXVp
cmVtZW50KQogICAgIHJwLm5hbWUgPSAiYWNtZS5jb20iOwogCiAgICAgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSB1c2VyOwotICAgIHVzZXIuaWRWZWN0b3Ig
PSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1VzZXJJZCwgc2l6ZW9mKFRlc3REYXRh
OjprVXNlcklkKSk7CisgICAgdXNlci5pZCA9IHRvQnVmZmVyU291cmNlKFRlc3REYXRhOjprVXNl
cklkLCBzaXplb2YoVGVzdERhdGE6OmtVc2VySWQpKTsKICAgICB1c2VyLm5hbWUgPSAiam9obnBz
bWl0aEBleGFtcGxlLmNvbSI7CiAgICAgdXNlci5kaXNwbGF5TmFtZSA9ICJKb2huIFAuIFNtaXRo
IjsKICAgICB1c2VyLmljb24gPSAiaHR0cHM6Ly9waWNzLmFjbWUuY29tLzAwL3AvYUJqampwcVBi
LnBuZyI7CkBAIC0xODcsMTMgKzE4NywxMyBAQCBURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRl
c3QsIFRlc3RDb252ZXJ0Q3RhcEdldEFzc2VydGlvblRvVTJmU2lnblJlcXVlc3QpCiAgICAgYXV0
byBnZXRBc3NlcnRpb25SZXEgPSBjb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CiAgICAg
UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAg
Y3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJs
aWNLZXk7Ci0gICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNU
b1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1Uy
ZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZCA9IHRvQnVmZmVy
U291cmNlKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSkpOwogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRv
cj4gYWxsb3dlZExpc3Q7CiAgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlh
bERlc2NyaXB0b3IpKTsKICAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdU
Rk1vdmUoYWxsb3dlZExpc3QpOwogICAgIEVYUEVDVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlNp
Z25Db21tYW5kKGdldEFzc2VydGlvblJlcSkpOwogCi0gICAgY29uc3QgYXV0byB1MmZTaWduQ29t
bWFuZCA9IGNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3RE
YXRhOjprQ2xpZW50RGF0YUhhc2gsIHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSks
IGdldEFzc2VydGlvblJlcSwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWdu
S2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSkpOworICAgIGNv
bnN0IGF1dG8gdTJmU2lnbkNvbW1hbmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb252ZXJ0
Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6
OmtDbGllbnREYXRhSGFzaCkpLCBnZXRBc3NlcnRpb25SZXEsIHRvQnVmZmVyU291cmNlKFRlc3RE
YXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRs
ZSkpKTsKICAgICBBU1NFUlRfVFJVRSh1MmZTaWduQ29tbWFuZCk7CiAgICAgRVhQRUNUX0VRKCp1
MmZTaWduQ29tbWFuZCwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWduQ29t
bWFuZEFwZHUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25Db21tYW5kQXBkdSkpKTsKIH0KQEAg
LTIwMyw3ICsyMDMsNyBAQCBURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RDb252
ZXJ0Q3RhcEdldEFzc2VydGlvbldpdGhBcHBJRFRvVTJmU2lnblJlcQogICAgIGF1dG8gZ2V0QXNz
ZXJ0aW9uUmVxID0gY29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCgpOwogICAgIFB1YmxpY0tl
eUNyZWRlbnRpYWxEZXNjcmlwdG9yIGNyZWRlbnRpYWxEZXNjcmlwdG9yOwogICAgIGNyZWRlbnRp
YWxEZXNjcmlwdG9yLnR5cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5Owot
ICAgIGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3Io
VGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5
SGFuZGxlKSk7CisgICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWQgPSB0b0J1ZmZlclNvdXJjZShU
ZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlI
YW5kbGUpKTsKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IGFsbG93
ZWRMaXN0OwogICAgIGFsbG93ZWRMaXN0LmFwcGVuZChXVEZNb3ZlKGNyZWRlbnRpYWxEZXNjcmlw
dG9yKSk7CiAgICAgZ2V0QXNzZXJ0aW9uUmVxLmFsbG93Q3JlZGVudGlhbHMgPSBXVEZNb3ZlKGFs
bG93ZWRMaXN0KTsKQEAgLTIxNCw3ICsyMTQsNyBAQCBURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3Rv
clRlc3QsIFRlc3RDb252ZXJ0Q3RhcEdldEFzc2VydGlvbldpdGhBcHBJRFRvVTJmU2lnblJlcQog
ICAgIGV4dGVuc2lvbnMuYXBwaWQgPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vYXBwaWQiOwog
ICAgIGdldEFzc2VydGlvblJlcS5leHRlbnNpb25zID0gV1RGTW92ZShleHRlbnNpb25zKTsKIAot
ICAgIGNvbnN0IGF1dG8gdTJmU2lnbkNvbW1hbmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChj
b252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVz
dERhdGE6OmtDbGllbnREYXRhSGFzaCkpLCBnZXRBc3NlcnRpb25SZXEsIGNvbnZlcnRCeXRlc1Rv
VmVjdG9yKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSkpLCB0cnVlKTsKKyAgICBjb25zdCBhdXRvIHUyZlNpZ25Db21tYW5kID0g
Y29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtD
bGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNz
ZXJ0aW9uUmVxLCB0b0J1ZmZlclNvdXJjZShUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNp
emVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKSwgdHJ1ZSk7CiAgICAgQVNTRVJUX1RS
VUUodTJmU2lnbkNvbW1hbmQpOwogICAgIEVYUEVDVF9FUSgqdTJmU2lnbkNvbW1hbmQsIGNvbnZl
cnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVTJmQXBwSURTaWduQ29tbWFuZEFwZHUsIHNpemVv
ZihUZXN0RGF0YTo6a1UyZkFwcElEU2lnbkNvbW1hbmRBcGR1KSkpOwogfQpAQCAtMjMwLDcgKzIz
MCw3IEBAIFRFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdFUyZlNpZ25Vc2VyVmVy
aWZpY2F0aW9uUmVxdWlyZW1lbnQpCiAgICAgYXV0byBnZXRBc3NlcnRpb25SZXEgPSBjb25zdHJ1
Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0
b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9
IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7Ci0gICAgY3JlZGVudGlhbERlc2Ny
aXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25L
ZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBjcmVk
ZW50aWFsRGVzY3JpcHRvci5pZCA9IHRvQnVmZmVyU291cmNlKFRlc3REYXRhOjprVTJmU2lnbktl
eUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogICAgIFZlY3Rv
cjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dlZExpc3Q7CiAgICAgYWxsb3dl
ZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2NyaXB0b3IpKTsKICAgICBnZXRBc3Nl
cnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUoYWxsb3dlZExpc3QpOwpAQCAtMjQ0
LDE4ICsyNDQsMTggQEAgVEVTVChVMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LCBUZXN0Q3JlYXRl
U2lnbldpdGhJbmNvcnJlY3RLZXlIYW5kbGUpCiAgICAgYXV0byBnZXRBc3NlcnRpb25SZXEgPSBj
b25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbERl
c2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAgY3JlZGVudGlhbERlc2NyaXB0b3Iu
dHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7Ci0gICAgY3JlZGVudGlh
bERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Uy
ZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAg
ICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZCA9IHRvQnVmZmVyU291cmNlKFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogICAg
IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dlZExpc3Q7CiAgICAg
YWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2NyaXB0b3IpKTsKICAgICBn
ZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUoYWxsb3dlZExpc3QpOwog
ICAgIEFTU0VSVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlv
blJlcSkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtleUhhbmRsZShrTWF4S2V5SGFuZGxlTGVu
Z3RoLCAweGZmKTsKLSAgICBjb25zdCBhdXRvIHZhbGlkU2lnbkNvbW1hbmQgPSBjb252ZXJ0VG9V
MmZTaWduQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0NsaWVudERhdGFI
YXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpLCBnZXRBc3NlcnRpb25SZXEs
IGtleUhhbmRsZSk7CisgICAgY29uc3QgYXV0byB2YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRv
VTJmU2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRh
SGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVx
LCB0b0J1ZmZlclNvdXJjZShrZXlIYW5kbGUuZGF0YSgpLCBrZXlIYW5kbGUuc2l6ZSgpKSk7CiAg
ICAgRVhQRUNUX1RSVUUodmFsaWRTaWduQ29tbWFuZCk7CiAKICAgICBrZXlIYW5kbGUuYXBwZW5k
KDB4ZmYpOwotICAgIGNvbnN0IGF1dG8gaW52YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRvVTJm
U2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFz
aCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVxLCBr
ZXlIYW5kbGUpOworICAgIGNvbnN0IGF1dG8gaW52YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRv
VTJmU2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRh
SGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVx
LCB0b0J1ZmZlclNvdXJjZShrZXlIYW5kbGUuZGF0YSgpLCBrZXlIYW5kbGUuc2l6ZSgpKSk7CiAg
ICAgRVhQRUNUX0ZBTFNFKGludmFsaWRTaWduQ29tbWFuZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQppbmRleCAxY2M0YzcxZWNhY2ZkZDk4MGQ0N2MzZjU3ZDg4YTk0
ODRhYWQzZDNjLi40OWQ1NDE4ZmUxMTA5YThhNzIyOTBlZjA3MjJhM2E5NjViOWEyZWVjIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWwubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9fV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MjMsOCArMTYyMyw4IEBAIFRFU1Qo
V2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
c01pbmltdW4pCiAKICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LnVzZXIubmFtZSwgImphcHBs
ZXNlZWRAZXhhbXBsZS5jb20iKTsKICAgICBFWFBFQ1RfVFJVRShyZXN1bHQudXNlci5pY29uLmlz
TnVsbCgpKTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0LnVzZXIuaWRWZWN0b3Iuc2l6ZSgpLCBzaXpl
b2YoaWRlbnRpZmllcikpOwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LnVzZXIuaWRWZWN0
b3IuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBFWFBF
Q1RfRVEocmVzdWx0LnVzZXIuaWQubGVuZ3RoKCksIHNpemVvZihpZGVudGlmaWVyKSk7CisgICAg
RVhQRUNUX0VRKG1lbWNtcChyZXN1bHQudXNlci5pZC5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVv
ZihpZGVudGlmaWVyKSksIDApOwogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5kaXNw
bGF5TmFtZSwgIkogQXBwbGVzZWVkIik7CiAKICAgICBFWFBFQ1RfRVEocmVzdWx0LnB1YktleUNy
ZWRQYXJhbXMuc2l6ZSgpLCAxbHUpOwpAQCAtMTY2Nyw4ICsxNjY3LDggQEAgVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11
bURlZmF1bHQpCiAKICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LnVzZXIubmFtZSwgImphcHBs
ZXNlZWRAZXhhbXBsZS5jb20iKTsKICAgICBFWFBFQ1RfVFJVRShyZXN1bHQudXNlci5pY29uLmlz
TnVsbCgpKTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0LnVzZXIuaWRWZWN0b3Iuc2l6ZSgpLCBzaXpl
b2YoaWRlbnRpZmllcikpOwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LnVzZXIuaWRWZWN0
b3IuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBFWFBF
Q1RfRVEocmVzdWx0LnVzZXIuaWQubGVuZ3RoKCksIHNpemVvZihpZGVudGlmaWVyKSk7CisgICAg
RVhQRUNUX0VRKG1lbWNtcChyZXN1bHQudXNlci5pZC5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVv
ZihpZGVudGlmaWVyKSksIDApOwogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5kaXNw
bGF5TmFtZSwgIkogQXBwbGVzZWVkIik7CiAKICAgICBFWFBFQ1RfRVEocmVzdWx0LnB1YktleUNy
ZWRQYXJhbXMuc2l6ZSgpLCAybHUpOwpAQCAtMTY4MSw4ICsxNjgxLDggQEAgVEVTVChXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11
bURlZmF1bHQpCiAKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFscy5zaXpl
KCksIDFsdSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHNbMF0udHlw
ZSwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSk7Ci0gICAgRVhQ
RUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHNbMF0uaWRWZWN0b3Iuc2l6ZSgpLCBzaXpl
b2YoaWRlbnRpZmllcikpOwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVk
ZW50aWFsc1swXS5pZFZlY3Rvci5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVy
KSksIDApOworICAgIEVYUEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLmlkLmxl
bmd0aCgpLCBzaXplb2YoaWRlbnRpZmllcikpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0
LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZC5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVu
dGlmaWVyKSksIDApOwogCiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0
aW9uLT5hdXRoZW50aWNhdG9yQXR0YWNobWVudCwgc3RkOjpudWxsb3B0KTsKICAgICBFWFBFQ1Rf
RVEocmVzdWx0LmF1dGhlbnRpY2F0b3JTZWxlY3Rpb24tPnJlcXVpcmVSZXNpZGVudEtleSwgZmFs
c2UpOwpAQCAtMTczNCw4ICsxNzM0LDggQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11bTEpCiAKICAgICBFWFBFQ1Rf
V0tfU1RSRVEocmVzdWx0LnVzZXIubmFtZSwgImphcHBsZXNlZWRAZXhhbXBsZS5jb20iKTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LnVzZXIuaWNvbiwgQCJodHRwcy8vd3d3LmV4YW1wbGUu
Y29tL2ljb24uanBnIik7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC51c2VyLmlkVmVjdG9yLnNpemUo
KSwgc2l6ZW9mKGlkZW50aWZpZXIpKTsKLSAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3VsdC51c2Vy
LmlkVmVjdG9yLmRhdGEoKSwgaWRlbnRpZmllciwgc2l6ZW9mKGlkZW50aWZpZXIpKSwgMCk7Cisg
ICAgRVhQRUNUX0VRKHJlc3VsdC51c2VyLmlkLmxlbmd0aCgpLCBzaXplb2YoaWRlbnRpZmllcikp
OworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LnVzZXIuaWQuZGF0YSgpLCBpZGVudGlmaWVy
LCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LnVz
ZXIuZGlzcGxheU5hbWUsICJKIEFwcGxlc2VlZCIpOwogCiAgICAgRVhQRUNUX0VRKHJlc3VsdC5w
dWJLZXlDcmVkUGFyYW1zLnNpemUoKSwgMmx1KTsKQEAgLTE3NDgsOCArMTc0OCw4IEBAIFRFU1Qo
V2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
c01heGltdW0xKQogCiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHMuc2l6
ZSgpLCAybHUpOwogICAgIEVYUEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLnR5
cGUsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXkpOwotICAgIEVY
UEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLmlkVmVjdG9yLnNpemUoKSwgc2l6
ZW9mKGlkZW50aWZpZXIpKTsKLSAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3VsdC5leGNsdWRlQ3Jl
ZGVudGlhbHNbMF0uaWRWZWN0b3IuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRpZmll
cikpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZC5s
ZW5ndGgoKSwgc2l6ZW9mKGlkZW50aWZpZXIpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3Vs
dC5leGNsdWRlQ3JlZGVudGlhbHNbMF0uaWQuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRl
bnRpZmllcikpLCAwKTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1sw
XS50cmFuc3BvcnRzLnNpemUoKSwgM2x1KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVD
cmVkZW50aWFsc1swXS50cmFuc3BvcnRzWzBdLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2Ip
OwogICAgIEVYUEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLnRyYW5zcG9ydHNb
MV0sIEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6Ok5mYyk7CkBAIC0xODA0LDggKzE4MDQsOCBAQCBU
RVNUKFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwsIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnNNYXhpbXVtMikKIAogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5uYW1lLCAi
amFwcGxlc2VlZEBleGFtcGxlLmNvbSIpOwogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNl
ci5pY29uLCBAImh0dHBzLy93d3cuZXhhbXBsZS5jb20vaWNvbi5qcGciKTsKLSAgICBFWFBFQ1Rf
RVEocmVzdWx0LnVzZXIuaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwotICAg
IEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LnVzZXIuaWRWZWN0b3IuZGF0YSgpLCBpZGVudGlmaWVy
LCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LnVzZXIuaWQu
bGVuZ3RoKCksIHNpemVvZihpZGVudGlmaWVyKSk7CisgICAgRVhQRUNUX0VRKG1lbWNtcChyZXN1
bHQudXNlci5pZC5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwog
ICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5kaXNwbGF5TmFtZSwgIkogQXBwbGVzZWVk
Iik7CiAKICAgICBFWFBFQ1RfRVEocmVzdWx0LnB1YktleUNyZWRQYXJhbXMuc2l6ZSgpLCAybHUp
OwpAQCAtMTgxOCw4ICsxODE4LDggQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11bTIpCiAKICAgICBFWFBFQ1RfRVEo
cmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFscy5zaXplKCksIDJsdSk7CiAgICAgRVhQRUNUX0VRKHJl
c3VsdC5leGNsdWRlQ3JlZGVudGlhbHNbMF0udHlwZSwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVu
dGlhbFR5cGU6OlB1YmxpY0tleSk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVu
dGlhbHNbMF0uaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwotICAgIEVYUEVD
VF9FUShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5kYXRhKCks
IGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOworICAgIEVYUEVDVF9FUShyZXN1
bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLmlkLmxlbmd0aCgpLCBzaXplb2YoaWRlbnRpZmllcikp
OworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZC5k
YXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwogICAgIEVYUEVDVF9F
UShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLnRyYW5zcG9ydHMuc2l6ZSgpLCAzbHUpOwog
ICAgIEVYUEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLnRyYW5zcG9ydHNbMF0s
IEF1dGhlbnRpY2F0b3JUcmFuc3BvcnQ6OlVzYik7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNs
dWRlQ3JlZGVudGlhbHNbMF0udHJhbnNwb3J0c1sxXSwgQXV0aGVudGljYXRvclRyYW5zcG9ydDo6
TmZjKTsKQEAgLTE5MzEsOCArMTkzMSw4IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zTWF4aW11bURlZmF1bHQpCiAKICAgICBF
WFBFQ1RfRVEocmVzdWx0LmFsbG93Q3JlZGVudGlhbHMuc2l6ZSgpLCAxbHUpOwogICAgIEVYUEVD
VF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1swXS50eXBlLCBXZWJDb3JlOjpQdWJsaWNLZXlD
cmVkZW50aWFsVHlwZTo6UHVibGljS2V5KTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0LmFsbG93Q3Jl
ZGVudGlhbHNbMF0uaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwotICAgIEVY
UEVDVF9FUShtZW1jbXAocmVzdWx0LmFsbG93Q3JlZGVudGlhbHNbMF0uaWRWZWN0b3IuZGF0YSgp
LCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVz
dWx0LmFsbG93Q3JlZGVudGlhbHNbMF0uaWQubGVuZ3RoKCksIHNpemVvZihpZGVudGlmaWVyKSk7
CisgICAgRVhQRUNUX0VRKG1lbWNtcChyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1swXS5pZC5kYXRh
KCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwogCiAgICAgRVhQRUNUX0VR
KHJlc3VsdC51c2VyVmVyaWZpY2F0aW9uLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlBy
ZWZlcnJlZCk7CiAgICAgRVhQRUNUX1RSVUUocmVzdWx0LmV4dGVuc2lvbnMtPmFwcGlkLmlzTnVs
bCgpKTsKQEAgLTE5NjUsOCArMTk2NSw4IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwg
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zTWF4aW11bSkKIAogICAgIEVYUEVDVF9F
UShyZXN1bHQuYWxsb3dDcmVkZW50aWFscy5zaXplKCksIDJsdSk7CiAgICAgRVhQRUNUX0VRKHJl
c3VsdC5hbGxvd0NyZWRlbnRpYWxzWzBdLnR5cGUsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRp
YWxUeXBlOjpQdWJsaWNLZXkpOwotICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFs
c1swXS5pZFZlY3Rvci5zaXplKCksIHNpemVvZihpZGVudGlmaWVyKSk7Ci0gICAgRVhQRUNUX0VR
KG1lbWNtcChyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5kYXRhKCksIGlkZW50
aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOworICAgIEVYUEVDVF9FUShyZXN1bHQuYWxs
b3dDcmVkZW50aWFsc1swXS5pZC5sZW5ndGgoKSwgc2l6ZW9mKGlkZW50aWZpZXIpKTsKKyAgICBF
WFBFQ1RfRVEobWVtY21wKHJlc3VsdC5hbGxvd0NyZWRlbnRpYWxzWzBdLmlkLmRhdGEoKSwgaWRl
bnRpZmllciwgc2l6ZW9mKGlkZW50aWZpZXIpKSwgMCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5h
bGxvd0NyZWRlbnRpYWxzWzBdLnRyYW5zcG9ydHMuc2l6ZSgpLCAzbHUpOwogICAgIEVYUEVDVF9F
UShyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1swXS50cmFuc3BvcnRzWzBdLCBBdXRoZW50aWNhdG9y
VHJhbnNwb3J0OjpVc2IpOwogICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1sw
XS50cmFuc3BvcnRzWzFdLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444024</attachid>
            <date>2021-11-11 16:43:19 -0800</date>
            <delta_ts>2021-11-11 17:42:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-233011-20211111164318.patch</filename>
            <type>text/plain</type>
            <size>66266</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NjQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2I2MDM1ZTcxZDhjMGFm
ODE0YmM0NDNlOGI1YmI0ZGYzMjJlM2U0Yi4uYjcyMmQ1YTJjOGY2NDgxMmRlOTdjZTU1Mzg5ZTVi
MmIwMGE1YWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIxLTExLTExICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXZWJBdXRobl0gU3Rv
cCBzZXJpYWxpemluZyBCdWZmZXJTb3VyY2UgYW5kIFZlY3Rvcjx1aW50OF90PiBkdXBsaWNhdGVz
IG9mIGlkZW50aWZpZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzMwMTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg1MzEzODA3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFRoZSBvcmlnaW5hbCBXZWJB
dXRobiBsb2dpYyBjb252ZXJ0ZWQgV2ViQ29yZTo6QnVmZmVyU291cmNlIG9iamVjdHMgdG8gVmVj
dG9yPHVpbnQ4X3Q+CisgICAgICAgIGR1cmluZyBzZXJpYWxpemF0aW9uLCB3aGljaCBjcmVhdGVk
IGEgd2VpcmQgZGVzaWduIHdoZXJlIHNvbWUgY29kZSBkZWFsdCB3aXRoIEJ1ZmZlclNvdXJjZQor
ICAgICAgICBvYmplY3RzLCBhbmQgb3RoZXIgd2l0aCBWZWN0b3JzLCBhbmQgbG90cyBvZiBjb252
ZXJ0aW5nIHRvIGFuZCBmcm9tIHRoZXNlIHR5cGVzLiBJdCBhbHNvIGNhdXNlZAorICAgICAgICBX
ZWJBdXRobiBkYXRhIHN0cnVjdHVyZXMgdG8gaGF2ZSB0d28gcGxhY2VzIHdoZXJlIHRoaXMgaW5m
b3JtYXRpb24gbWlnaHQgbGl2ZSwgd2l0aCB0aGUKKyAgICAgICAgVUlQcm9jZXNzIHVzaW5nIG9u
ZSByZXByZXNlbnRhdGlvbiwgYW5kIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdXNpbmcgYW5vdGhl
ci4KKworICAgICAgICBUaGlzIHBhdGNoIHJldmlzZXMgdGhlIGNvZGUgYXMgZm9sbG93czoKKwor
ICAgICAgICAxLiBUaGUgaWRlbnRpZmllcnMgYXJlIGFsd2F5cyBzdG9yZWQgYXMgQnVmZmVyU291
cmNlLCBhbmQgdGhlIHNhbWUgbWVtYmVyIGlzIHVzZWQgaW4gVUlQcm9jZXNzCisgICAgICAgICAg
IGFuZCBXZWJDb250ZW50IHByb2Nlc3Mgd2hlbiBhY2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlvbi4K
KyAgICAgICAgMi4gV2Ugbm93IHNlcmlhbGl6ZSBCdWZmZXJTb3VyY2UgZGlyZWN0bHkuCisKKyAg
ICAgICAgVGVzdGVkIGJ5IGV4aXN0aW5nIFdlYkF1dGhuIHRlc3QgY2FzZXMgKEFQSSBhbmQgTGF5
b3V0IHRlc3RzKQorCisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zLmg6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6ZGVjb2RlKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yOjpkZWNvZGUpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRp
b25zLmg6CisgICAgICAgIChXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnM6OmRlY29kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5j
cHA6CisgICAgICAgIChjYm9yOjpDQk9SVmFsdWU6OkNCT1JWYWx1ZSk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0
aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86OmNvbnZl
cnRVc2VyRW50aXR5VG9DQk9SKToKKyAgICAgICAgKGZpZG86OmNvbnZlcnREZXNjcmlwdG9yVG9D
Qk9SKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKGZpZG86OldlYkNvcmU6OmNvbnN0cnVjdFUyZlNpZ25Db21tYW5k
KToKKyAgICAgICAgKGZpZG86OmNvbnZlcnRUb1UyZkNoZWNrT25seVNpZ25Db21tYW5kKToKKyAg
ICAgICAgKGZpZG86OmNvbnZlcnRUb1UyZlNpZ25Db21tYW5kKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNwcDoKKyAgICAgICAgKGZpZG86
OnJlYWRVMmZTaWduUmVzcG9uc2UpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXV0aG4vZmlkby9V
MmZSZXNwb25zZUNvbnZlcnRlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0J1ZmZlclNvdXJj
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6QnVmZmVyU291cmNlOjplbmNvZGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6QnVmZmVyU291cmNlOjpkZWNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
dG9CdWZmZXJTb3VyY2UpOgorCiAyMDIxLTExLTExICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIFJlc2V0IElubGluZVRleHRJdGVtIHdpZHRoIG9u
IGJpZGkgc3BsaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMmNhMzliOTU1YmQ1YjU0NDk3NjBkODY1NGQ1ODA2MTJj
M2NlODNiZi4uZTVlZmEyYzVmNDRlYmJmNjFhNjU2ZGIwNmZlYTMyZTcyZmYyNzcxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw0MCBAQAorMjAyMS0xMS0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViQXV0aG5dIFN0b3Agc2VyaWFsaXppbmcgQnVmZmVy
U291cmNlIGFuZCBWZWN0b3I8dWludDhfdD4gZHVwbGljYXRlcyBvZiBpZGVudGlmaWVycworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDExCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS84NTMxMzgwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJp
cyBEdW1lei4KKworICAgICAgICBUaGUgb3JpZ2luYWwgV2ViQXV0aG4gbG9naWMgY29udmVydGVk
IFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSBvYmplY3RzIHRvIFZlY3Rvcjx1aW50OF90PgorICAgICAg
ICBkdXJpbmcgc2VyaWFsaXphdGlvbiwgd2hpY2ggY3JlYXRlZCBhIHdlaXJkIGRlc2lnbiB3aGVy
ZSBzb21lIGNvZGUgZGVhbHQgd2l0aCBCdWZmZXJTb3VyY2UKKyAgICAgICAgb2JqZWN0cywgYW5k
IG90aGVyIHdpdGggVmVjdG9ycywgYW5kIGxvdHMgb2YgY29udmVydGluZyB0byBhbmQgZnJvbSB0
aGVzZSB0eXBlcy4gSXQgYWxzbyBjYXVzZWQKKyAgICAgICAgV2ViQXV0aG4gZGF0YSBzdHJ1Y3R1
cmVzIHRvIGhhdmUgdHdvIHBsYWNlcyB3aGVyZSB0aGlzIGluZm9ybWF0aW9uIG1pZ2h0IGxpdmUs
IHdpdGggdGhlCisgICAgICAgIFVJUHJvY2VzcyB1c2luZyBvbmUgcmVwcmVzZW50YXRpb24sIGFu
ZCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHVzaW5nIGFub3RoZXIuCisKKyAgICAgICAgVGhpcyBw
YXRjaCByZXZpc2VzIHRoZSBjb2RlIGFzIGZvbGxvd3M6CisKKyAgICAgICAgMS4gVGhlIGlkZW50
aWZpZXJzIGFyZSBhbHdheXMgc3RvcmVkIGFzIEJ1ZmZlclNvdXJjZSwgYW5kIHRoZSBzYW1lIG1l
bWJlciBpcyB1c2VkIGluIFVJUHJvY2VzcworICAgICAgICAgICBhbmQgV2ViQ29udGVudCBwcm9j
ZXNzIHdoZW4gYWNjZXNzaW5nIHRoaXMgaW5mb3JtYXRpb24uCisgICAgICAgIDIuIFdlIG5vdyBz
ZXJpYWxpemUgQnVmZmVyU291cmNlIGRpcmVjdGx5LgorCisgICAgICAgIFRlc3RlZCBieSBleGlz
dGluZyBXZWJBdXRobiB0ZXN0IGNhc2VzIChBUEkgYW5kIExheW91dCB0ZXN0cykKKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbToKKyAg
ICAgICAgKHB1YmxpY0tleUNyZWRlbnRpYWxVc2VyRW50aXR5KToKKyAgICAgICAgKHB1YmxpY0tl
eUNyZWRlbnRpYWxEZXNjcmlwdG9ycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRp
Y2F0aW9uL0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6TG9j
YWxBdXRoZW50aWNhdG9ySW50ZXJuYWw6OnByb2R1Y2VIYXNoU2V0KToKKyAgICAgICAgKFdlYktp
dDo6TG9jYWxBdXRoZW50aWNhdG9yOjpjb250aW51ZU1ha2VDcmVkZW50aWFsQWZ0ZXJVc2VyVmVy
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TG9jYWxBdXRoZW50aWNhdG9yOjpkZWxldGVE
dXBsaWNhdGVDcmVkZW50aWFsIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW06CisgICAg
ICAgIChXZWJLaXQ6OnRvQVNDRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJLaXQ6OmNvbmZpZ3Vy
ZVJlZ2lzdHJhdGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Y29uZmlndXJh
dGlvbkFzc2VydGlvblJlcXVlc3RDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQXV0
aGVudGljYXRpb24vZmlkby9VMmZBdXRoZW50aWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VTJmQXV0aGVudGljYXRvcjo6aXNzdWVTaWduQ29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OlUy
ZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1hbmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQp
OgorCiAyMDIxLTExLTExICBUb21va2kgSW1haSAgPFRvbW9raS5JbWFpQHNvbnkuY29tPgogCiAg
ICAgICAgIFtSZW1vdGVJbnNwZWN0b3JdW1NvY2tldF0gQ2FuJ3QgZmluZCB0aGUgdGFyZ2V0IHNp
bmNlIHIyNzc3ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgKaW5kZXgg
NGQ1ZjRiZGQ5NjJkNDJjMzVmOGI1NTZhOWFkZTZiODYwOTMxMjY1MS4uMWM3YTcwYjlhOGJlZDUw
MTE1ZDMyZmQ4Zjg3NzEzYjFhNTZjMWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTEsOCArNTEsNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucyB7CiAgICAgfTsKIAogICAgIHN0cnVjdCBVc2VyRW50aXR5IDogcHVibGljIEVu
dGl0eSB7Ci0gICAgICAgIEJ1ZmZlclNvdXJjZSBpZDsgLy8gaWQgYmVjb21lcyBpZFZlY3RvciBv
bmNlIGl0IGlzIHBhc3NlZCB0byBVSVByb2Nlc3MuCi0gICAgICAgIFZlY3Rvcjx1aW50OF90PiBp
ZFZlY3RvcjsKKyAgICAgICAgQnVmZmVyU291cmNlIGlkOwogICAgICAgICBTdHJpbmcgZGlzcGxh
eU5hbWU7CiAgICAgfTsKIApAQCAtNzYsNyArNzUsNyBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyB7CiAgICAgUnBFbnRpdHkgcnA7CiAgICAgVXNlckVudGl0eSB1
c2VyOwogCi0gICAgQnVmZmVyU291cmNlIGNoYWxsZW5nZTsgLy8gY2hhbGxlbmdlIGJlY29tZXMg
Y2hhbGxlbmdlVmVjdG9yIG9uY2UgaXQgaXMgcGFzc2VkIHRvIFVJUHJvY2Vzcy4KKyAgICBCdWZm
ZXJTb3VyY2UgY2hhbGxlbmdlOwogICAgIFZlY3RvcjxQYXJhbWV0ZXJzPiBwdWJLZXlDcmVkUGFy
YW1zOwogCiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZW91dDsKQEAgLTg1LDggKzg0
LDYgQEAgc3RydWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgewogICAgIEF0
dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2UgYXR0ZXN0YXRpb247CiAgICAgbXV0YWJsZSBz
dGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVudElucHV0cz4gZXh0ZW5z
aW9uczsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBjaGFsbGVuZ2VWZWN0b3I7Ci0KICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucz4gZGVjb2RlKERlY29kZXImKTsKICNlbmRpZiAvLyBFTkFCTEUo
V0VCX0FVVEhOKQpAQCAtMTQzLDggKzE0MCw3IEBAIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2
b2lkIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwgcnAuaWQgPDwgcnAubmFtZSA8PCBycC5p
Y29uOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHVzZXIuaWQubGVuZ3Ro
KCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHVzZXIuaWQuZGF0YSgpLCB1
c2VyLmlkLmxlbmd0aCgpLCAxKTsKKyAgICBlbmNvZGVyIDw8IHVzZXIuaWQ7CiAgICAgZW5jb2Rl
ciA8PCB1c2VyLmRpc3BsYXlOYW1lIDw8IHVzZXIubmFtZSA8PCB1c2VyLmljb24gPDwgcHViS2V5
Q3JlZFBhcmFtcyA8PCB0aW1lb3V0IDw8IGV4Y2x1ZGVDcmVkZW50aWFscyA8PCBhdXRoZW50aWNh
dG9yU2VsZWN0aW9uIDw8IGF0dGVzdGF0aW9uIDw8IGV4dGVuc2lvbnM7CiAgICAgZW5jb2RlciA8
PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY2hhbGxlbmdlLmxlbmd0aCgpKTsKICAgICBlbmNvZGVy
LmVuY29kZUZpeGVkTGVuZ3RoRGF0YShjaGFsbGVuZ2UuZGF0YSgpLCBjaGFsbGVuZ2UubGVuZ3Ro
KCksIDEpOwpAQCAtMTYwLDcgKzE1Niw3IEBAIHN0ZDo6b3B0aW9uYWw8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucz4gUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0CiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
cnAuaWNvbikpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQudXNlci5pZFZlY3RvcikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQudXNlci5pZCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShyZXN1bHQudXNlci5kaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CkBAIC0xOTgsNyArMTk0LDcgQEAgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlD
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zPiBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHQK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICByZXN1bHQuZXh0ZW5zaW9ucyA9IFdU
Rk1vdmUoKmV4dGVuc2lvbnMpOwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hh
bGxlbmdlVmVjdG9yKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFsbGVuZ2Up
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGljS2V5Q3JlZGVu
dGlhbERlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vUHVibGlj
S2V5Q3JlZGVudGlhbERlc2NyaXB0b3IuaAppbmRleCBkMjliZTAzMmFiNzc2MzIxYTc1YTEzNjNj
Yzc5MzIxNjBmNTQ1Mzg1Li40YzQ1NDZjOWViMzJiNmJhM2FjYjA5YzcxMTI4YzIwNGFlYzg4OTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNy
ZWRlbnRpYWxEZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRo
bi9QdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDggKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgewogICAg
IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlIHR5cGU7Ci0gICAgQnVmZmVyU291cmNlIGlkOyAvLyBp
ZCBiZWNvbWVzIGlkVmVjdG9yIG9uY2UgaXQgaXMgcGFzc2VkIHRvIFVJUHJvY2Vzcy4KLSAgICBW
ZWN0b3I8dWludDhfdD4gaWRWZWN0b3I7CisgICAgQnVmZmVyU291cmNlIGlkOwogICAgIFZlY3Rv
cjxBdXRoZW50aWNhdG9yVHJhbnNwb3J0PiB0cmFuc3BvcnRzOwogCiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsOCArNDYsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCB0
eXBlOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlkLmxlbmd0aCgpKTsK
LSAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShpZC5kYXRhKCksIGlkLmxlbmd0aCgp
LCAxKTsKKyAgICBlbmNvZGVyIDw8IGlkOwogICAgIGVuY29kZXIgPDwgdHJhbnNwb3J0czsKIH0K
IApAQCAtNTgsNyArNTYsNyBAQCBzdGQ6Om9wdGlvbmFsPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNj
cmlwdG9yPiBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcjo6ZGVjbwogICAgIFB1YmxpY0tl
eUNyZWRlbnRpYWxEZXNjcmlwdG9yIHJlc3VsdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC50eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pZFZlY3RvcikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaWQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnRyYW5zcG9ydHMpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9QdWJsaWNLZXlDcmVk
ZW50aWFsUmVxdWVzdE9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4v
UHVibGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmgKaW5kZXggZmIxN2ZhNjc4NzhkZjIw
ODk1YjY4YTViNzE5ODU0ZWEyYTg2NGRmMi4uYjI1MmUxZjljYjQyZmE4MzljMzRiMjUyNjIxNGRm
Zjc4YTljYmIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9Q
dWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL1B1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDcg
KzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zIHsKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQotICAgIEJ1ZmZlclNvdXJj
ZSBjaGFsbGVuZ2U7IC8vIGNoYWxsZW5nZSBiZWNvbWVzIGNoYWxsZW5nZVZlY3RvciBvbmNlIGl0
IGlzIHBhc3NlZCB0byBVSVByb2Nlc3MuCisgICAgQnVmZmVyU291cmNlIGNoYWxsZW5nZTsKICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1lb3V0OwogICAgIG11dGFibGUgU3RyaW5nIHJw
SWQ7CiAgICAgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yPiBhbGxvd0NyZWRl
bnRpYWxzOwpAQCAtNDYsOCArNDYsNiBAQCBzdHJ1Y3QgUHVibGljS2V5Q3JlZGVudGlhbFJlcXVl
c3RPcHRpb25zIHsKICAgICBzdGQ6Om9wdGlvbmFsPEF1dGhlbnRpY2F0b3JBdHRhY2htZW50PiBh
dXRoZW50aWNhdG9yQXR0YWNobWVudDsKICAgICBtdXRhYmxlIHN0ZDo6b3B0aW9uYWw8QXV0aGVu
dGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzPiBleHRlbnNpb25zOwogCi0gICAgVmVjdG9y
PHVpbnQ4X3Q+IGNoYWxsZW5nZVZlY3RvcjsKLQogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+
IGRlY29kZShEZWNvZGVyJik7CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9BVVRITikKQEAgLTkxLDcg
Kzg5LDcgQEAgc3RkOjpvcHRpb25hbDxQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnM+
IFB1YmxpY0tleUNyZWRlbnRpYWxSZXF1ZXN0T3B0aW8KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICByZXN1bHQuZXh0ZW5zaW9ucyA9IFdURk1vdmUoKmV4dGVuc2lvbnMpOwogCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY2hhbGxlbmdlVmVjdG9yKSkKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5jcHAKaW5kZXggNGM4ZmZhZDFhOGNmMGY1MTQ3
Y2M3Njc0NGJiYTg2ZGU1MWM5ZGNjNy4uOWIyOGYwZTVlMTAwNmQ0ZWIxN2JkOTAzMGY5Y2IyYmJh
ZjQ3YTdmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9y
L0NCT1JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9y
L0NCT1JWYWx1ZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hy
b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zMiw2ICszMiw3IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhO
KQogCisjaW5jbHVkZSAiQnVmZmVyU291cmNlLmgiCiAjaW5jbHVkZSA8bmV3PgogI2luY2x1ZGUg
PHV0aWxpdHk+CiAKQEAgLTEwMCw2ICsxMDEsMTIgQEAgQ0JPUlZhbHVlOjpDQk9SVmFsdWUoQmlu
YXJ5VmFsdWUmJiBpbkJ5dGVzKQogewogfQogCitDQk9SVmFsdWU6OkNCT1JWYWx1ZShjb25zdCBX
ZWJDb3JlOjpCdWZmZXJTb3VyY2UmIGJ1ZmZlclNvdXJjZSkKKyAgICA6IG1fdHlwZShUeXBlOjpC
eXRlU3RyaW5nKQorICAgICwgbV9ieXRlU3RyaW5nVmFsdWUoYnVmZmVyU291cmNlLmRhdGEoKSwg
YnVmZmVyU291cmNlLmxlbmd0aCgpKQoreworfQorCiBDQk9SVmFsdWU6OkNCT1JWYWx1ZShjb25z
dCBjaGFyKiBpblN0cmluZykKICAgICA6IENCT1JWYWx1ZShTdHJpbmcoaW5TdHJpbmcpKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9jYm9yL0NCT1JWYWx1ZS5oCmlu
ZGV4IDVlNTM4M2ZhY2Y1ZGZiZDI5Y2YxNTM1NTdjYTU4YjI4ZGI5OTg4NDEuLmY3OWVmZDQ4NmYy
Y2YxNzIxYjljNGQ3YzUzNDc0M2E2MzUyNTc5NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vY2Jvci9DQk9SVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1dGhuL2Nib3IvQ0JPUlZhbHVlLmgKQEAgLTEsNSArMSw1IEBACiAvLyBDb3B5
cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBD
b3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAv
LwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNyw2ICszNywxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgQnVmZmVyU291cmNlOworfQorCiBuYW1lc3BhY2Ug
Y2JvciB7CiAKIC8vIEEgY2xhc3MgZm9yIENvbmNpc2UgQmluYXJ5IE9iamVjdCBSZXByZXNlbnRh
dGlvbiAoQ0JPUikgdmFsdWVzLgpAQCAtMTI3LDYgKzEzMSw4IEBAIHB1YmxpYzoKICAgICBleHBs
aWNpdCBDQk9SVmFsdWUoY29uc3QgQmluYXJ5VmFsdWUmKTsKICAgICBleHBsaWNpdCBDQk9SVmFs
dWUoQmluYXJ5VmFsdWUmJik7CiAKKyAgICBleHBsaWNpdCBDQk9SVmFsdWUoY29uc3QgV2ViQ29y
ZTo6QnVmZmVyU291cmNlJik7CisKICAgICBleHBsaWNpdCBDQk9SVmFsdWUoY29uc3QgY2hhciop
OwogICAgIGV4cGxpY2l0IENCT1JWYWx1ZShTdHJpbmcmJik7CiAgICAgZXhwbGljaXQgQ0JPUlZh
bHVlKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdXRobi9maWRvL0RldmljZVJlcXVlc3RDb252ZXJ0ZXIuY3BwCmluZGV4IDVj
YmRlOTZmZDFlMGU0MmEwMDg5YWFhMzVhNDA5MjA3ODU4NjQyMTMuLjJmNjlkNzM4MzhmOTFkMDFi
MWVmZGFlOTI1NGM5Mjk3Y2I2YTU4ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vZmlkby9EZXZpY2VSZXF1ZXN0Q29udmVydGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vRGV2aWNlUmVxdWVzdENvbnZlcnRlci5jcHAK
QEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBDQk9SVmFsdWUgY29udmVydFVzZXJFbnRpdHlUb0NC
T1IoY29uc3QgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uCiAgICAgdXNlck1hcC5l
bXBsYWNlKENCT1JWYWx1ZShrRW50aXR5TmFtZU1hcEtleSksIENCT1JWYWx1ZSh1c2VyRW50aXR5
Lm5hbWUpKTsKICAgICBpZiAoIXVzZXJFbnRpdHkuaWNvbi5pc0VtcHR5KCkpCiAgICAgICAgIHVz
ZXJNYXAuZW1wbGFjZShDQk9SVmFsdWUoa0ljb25VcmxNYXBLZXkpLCBDQk9SVmFsdWUodXNlckVu
dGl0eS5pY29uKSk7Ci0gICAgdXNlck1hcC5lbXBsYWNlKENCT1JWYWx1ZShrRW50aXR5SWRNYXBL
ZXkpLCBDQk9SVmFsdWUodXNlckVudGl0eS5pZFZlY3RvcikpOworICAgIHVzZXJNYXAuZW1wbGFj
ZShDQk9SVmFsdWUoa0VudGl0eUlkTWFwS2V5KSwgQ0JPUlZhbHVlKHVzZXJFbnRpdHkuaWQpKTsK
ICAgICB1c2VyTWFwLmVtcGxhY2UoQ0JPUlZhbHVlKGtEaXNwbGF5TmFtZU1hcEtleSksIENCT1JW
YWx1ZSh1c2VyRW50aXR5LmRpc3BsYXlOYW1lKSk7CiAgICAgcmV0dXJuIENCT1JWYWx1ZShXVEZN
b3ZlKHVzZXJNYXApKTsKIH0KQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIENCT1JWYWx1ZSBjb252
ZXJ0RGVzY3JpcHRvclRvQ0JPUihjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvciYg
ZGUKIHsKICAgICBDQk9SVmFsdWU6Ok1hcFZhbHVlIGNib3JEZXNjcmlwdG9yTWFwOwogICAgIGNi
b3JEZXNjcmlwdG9yTWFwW0NCT1JWYWx1ZShrQ3JlZGVudGlhbFR5cGVLZXkpXSA9IENCT1JWYWx1
ZShwdWJsaWNLZXlDcmVkZW50aWFsVHlwZVRvU3RyaW5nKGRlc2NyaXB0b3IudHlwZSkpOwotICAg
IGNib3JEZXNjcmlwdG9yTWFwW0NCT1JWYWx1ZShrQ3JlZGVudGlhbElkS2V5KV0gPSBDQk9SVmFs
dWUoZGVzY3JpcHRvci5pZFZlY3Rvcik7CisgICAgY2JvckRlc2NyaXB0b3JNYXBbQ0JPUlZhbHVl
KGtDcmVkZW50aWFsSWRLZXkpXSA9IENCT1JWYWx1ZShkZXNjcmlwdG9yLmlkKTsKICAgICByZXR1
cm4gQ0JPUlZhbHVlKFdURk1vdmUoY2JvckRlc2NyaXB0b3JNYXApKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZkNvbW1hbmRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFu
ZENvbnN0cnVjdG9yLmNwcAppbmRleCAyNGUxNWQzNGU0MTVkYjViNjk3ZWU1NjNiNThjOTZlM2Nm
YWZhZWU1Li42NGRlZDJjMjIyMmMzNTIwNWE4MmY1MGUyNTRmMGRlMjZkYzRkZWU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmQ29tbWFuZENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJm
Q29tbWFuZENvbnN0cnVjdG9yLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8vIENvcHlyaWdodCAyMDE4
IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAo
QykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTYxLDE3ICs2MSwxNyBAQCBzdGF0aWMgVmVjdG9y
PHVpbnQ4X3Q+IGNvbnN0cnVjdFUyZlJlZ2lzdGVyQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhf
dD4mIGFwcGxpYwogICAgIHJldHVybiBjb21tYW5kLmdldEVuY29kZWRDb21tYW5kKCk7CiB9CiAK
LXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29uc3RydWN0VTJmU2lnbkNv
bW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBhcHBsaWNhdGlvblBhcmFtZXRlciwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQYXJhbWV0ZXIsIGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gY29uc3RydWN0VTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBhcHBsaWNhdGlvblBhcmFtZXRlciwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjaGFsbGVuZ2VQ
YXJhbWV0ZXIsIGNvbnN0IEJ1ZmZlclNvdXJjZSYga2V5SGFuZGxlLCBib29sIGNoZWNrT25seSkK
IHsKLSAgICBpZiAoa2V5SGFuZGxlLnNpemUoKSA+IGtNYXhLZXlIYW5kbGVMZW5ndGgpCisgICAg
aWYgKGtleUhhbmRsZS5sZW5ndGgoKSA+IGtNYXhLZXlIYW5kbGVMZW5ndGgpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBkYXRh
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa1UyZkNoYWxsZW5nZVBhcmFtTGVuZ3RoICsga1UyZkFw
cGxpY2F0aW9uUGFyYW1MZW5ndGggKyAxICsga2V5SGFuZGxlLnNpemUoKSk7CisgICAgZGF0YS5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGtVMmZDaGFsbGVuZ2VQYXJhbUxlbmd0aCArIGtVMmZBcHBs
aWNhdGlvblBhcmFtTGVuZ3RoICsgMSArIGtleUhhbmRsZS5sZW5ndGgoKSk7CiAgICAgZGF0YS5h
cHBlbmRWZWN0b3IoY2hhbGxlbmdlUGFyYW1ldGVyKTsKICAgICBkYXRhLmFwcGVuZFZlY3Rvcihh
cHBsaWNhdGlvblBhcmFtZXRlcik7Ci0gICAgZGF0YS5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhf
dD4oa2V5SGFuZGxlLnNpemUoKSkpOwotICAgIGRhdGEuYXBwZW5kVmVjdG9yKGtleUhhbmRsZSk7
CisgICAgZGF0YS5hcHBlbmQoc3RhdGljX2Nhc3Q8dWludDhfdD4oa2V5SGFuZGxlLmxlbmd0aCgp
KSk7CisgICAgZGF0YS5hcHBlbmQoa2V5SGFuZGxlLmRhdGEoKSwga2V5SGFuZGxlLmxlbmd0aCgp
KTsKIAogICAgIGFwZHU6OkFwZHVDb21tYW5kIGNvbW1hbmQ7CiAgICAgY29tbWFuZC5zZXRJbnMo
c3RhdGljX2Nhc3Q8dWludDhfdD4oVTJmQXBkdUluc3RydWN0aW9uOjprU2lnbikpOwpAQCAtMTEx
LDEwICsxMTEsMTAgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNvbnZlcnRUb1Uy
ZkNoZWNrT25seVNpZ25Db21tYW5kKGNvbnN0IFZlY3Rvcjx1aW4KICAgICBpZiAoa2V5SGFuZGxl
LnR5cGUgIT0gUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBjb25zdHJ1Y3RVMmZTaWduQ29tbWFuZChw
cm9kdWNlUnBJZEhhc2gocmVxdWVzdC5ycC5pZCksIGNsaWVudERhdGFIYXNoLCBrZXlIYW5kbGUu
aWRWZWN0b3IsIHRydWUgLyogY2hlY2tPbmx5ICovKTsKKyAgICByZXR1cm4gY29uc3RydWN0VTJm
U2lnbkNvbW1hbmQocHJvZHVjZVJwSWRIYXNoKHJlcXVlc3QucnAuaWQpLCBjbGllbnREYXRhSGFz
aCwga2V5SGFuZGxlLmlkLCB0cnVlIC8qIGNoZWNrT25seSAqLyk7CiB9CiAKLXN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8
dWludDhfdD4mIGNsaWVudERhdGFIYXNoLCBjb25zdCBQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMmIHJlcXVlc3QsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5SGFuZGxlLCBib29s
IGlzQXBwSWQpCitzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmU2ln
bkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbFJlcXVlc3RPcHRpb25zJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpC
dWZmZXJTb3VyY2UmIGtleUhhbmRsZSwgYm9vbCBpc0FwcElkKQogewogICAgIGlmICghaXNDb252
ZXJ0aWJsZVRvVTJmU2lnbkNvbW1hbmQocmVxdWVzdCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
VTJmQ29tbWFuZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhu
L2ZpZG8vVTJmQ29tbWFuZENvbnN0cnVjdG9yLmgKaW5kZXggNGY4YWM0MzI1ZTk1ZDNiN2Y1YWVk
YWUzNWJlZjQ2ODNkNTg1M2ExNC4uZTRlNjU0Y2ZkNWY3OTEzYjVmOTA3ZTNjMzBjNDhhZGIwYzM2
ZTg1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1Uy
ZkNvbW1hbmRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0
aG4vZmlkby9VMmZDb21tYW5kQ29uc3RydWN0b3IuaApAQCAtMSw1ICsxLDUgQEAKIC8vIENvcHly
aWdodCAyMDE4IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoQykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
CiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBCdWZmZXJT
b3VyY2U7CiBzdHJ1Y3QgQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50SW5wdXRzOwogc3Ry
dWN0IFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM7CiBzdHJ1Y3QgUHVibGljS2V5
Q3JlZGVudGlhbERlc2NyaXB0b3I7CkBAIC02Myw3ICs2NCw3IEBAIFdFQkNPUkVfRVhQT1JUIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252ZXJ0VG9VMmZSZWdpc3RlckNvbW1hbmQo
Y29uc3QKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjb252
ZXJ0VG9VMmZDaGVja09ubHlTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVu
dERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zJiwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3ImKTsKIAog
Ly8gRXh0cmFjdHMgQVBEVSBlbmNvZGVkIFUyRiBzaWduIGNvbW1hbmQgZnJvbSBQdWJsaWNLZXlD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuCi1XRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFZl
Y3Rvcjx1aW50OF90Pj4gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBjbGllbnREYXRhSGFzaCwgY29uc3QgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zJiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGJvb2wgaXNB
cHBJZCA9IGZhbHNlKTsKK1dFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb25zdCBWZWN0b3I8dWludDhfdD4mIGNsaWVu
dERhdGFIYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsUmVxdWVzdE9wdGlv
bnMmLCBjb25zdCBXZWJDb3JlOjpCdWZmZXJTb3VyY2UmIGtleUhhbmRsZSwgYm9vbCBpc0FwcElk
ID0gZmFsc2UpOwogCiBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhfdD4gY29uc3RydWN0Qm9n
dXNVMmZSZWdpc3RyYXRpb25Db21tYW5kKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9uc2VDb252ZXJ0ZXIuY3BwCmlu
ZGV4IDFhN2QxMDViYjg1MjVkNTVkZTkzYmQ1MzkwNmE4MTMwYTY2MTMwM2EuLjNmMzY2YWEyNzA2
ODQ5NzQ1YWNhMjgxNzliNTk5NmU2NjZlZTI2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXV0aG4vZmlkby9VMmZSZXNwb25zZUNvbnZlcnRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJlc3BvbnNlQ29udmVydGVyLmNw
cApAQCAtMTYzLDkgKzE2Myw5IEBAIFJlZlB0cjxBdXRoZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNw
b25zZT4gcmVhZFUyZlJlZ2lzdGVyUmVzcG9uc2UoY29uc3QgU3RyaW5nJiByCiAgICAgcmV0dXJu
IEF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlOjpjcmVhdGUoY3JlZGVudGlhbElkLCBh
dHRlc3RhdGlvbk9iamVjdCwgYXR0YWNobWVudCk7CiB9CiAKLVJlZlB0cjxBdXRoZW50aWNhdG9y
QXNzZXJ0aW9uUmVzcG9uc2U+IHJlYWRVMmZTaWduUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBycElk
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleUhhbmRsZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB1MmZEYXRhLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudCBhdHRhY2htZW50KQorUmVmUHRyPEF1
dGhlbnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBT
dHJpbmcmIHJwSWQsIGNvbnN0IFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSYga2V5SGFuZGxlLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHUyZkRhdGEsIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50IGF0dGFj
aG1lbnQpCiB7Ci0gICAgaWYgKGtleUhhbmRsZS5pc0VtcHR5KCkgfHwgdTJmRGF0YS5zaXplKCkg
PD0gc2lnbmF0dXJlSW5kZXgpCisgICAgaWYgKCFrZXlIYW5kbGUubGVuZ3RoKCkgfHwgdTJmRGF0
YS5zaXplKCkgPD0gc2lnbmF0dXJlSW5kZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgLy8gMSBieXRlIGZsYWdzLCA0IGJ5dGVzIGNvdW50ZXIKQEAgLTE3OCw3ICsxNzgsOCBAQCBS
ZWZQdHI8QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNl
KGNvbnN0IFN0cmluZyYgcnBJZCwgYwogCiAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gcmVt
b3ZlIHRoZSBuZWVkIG9mIGNvbnN0cnVjdGluZyBhIHZlY3RvciBoZXJlLgogICAgIFZlY3Rvcjx1
aW50OF90PiBzaWduYXR1cmUgeyB1MmZEYXRhLmRhdGEoKSArIHNpZ25hdHVyZUluZGV4LCB1MmZE
YXRhLnNpemUoKSAtIHNpZ25hdHVyZUluZGV4IH07Ci0gICAgcmV0dXJuIEF1dGhlbnRpY2F0b3JB
c3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGtleUhhbmRsZSwgYXV0aERhdGEsIHNpZ25hdHVyZSwg
eyB9LCBhdHRhY2htZW50KTsKKyAgICBWZWN0b3I8dWludDhfdD4ga2V5SGFuZGxlVmVjdG9yIHsg
a2V5SGFuZGxlLmRhdGEoKSwga2V5SGFuZGxlLmxlbmd0aCgpIH07CisgICAgcmV0dXJuIEF1dGhl
bnRpY2F0b3JBc3NlcnRpb25SZXNwb25zZTo6Y3JlYXRlKGtleUhhbmRsZVZlY3RvciwgYXV0aERh
dGEsIHNpZ25hdHVyZSwgeyB9LCBhdHRhY2htZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgZmlk
bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdXRobi9maWRvL1UyZlJl
c3BvbnNlQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
VTJmUmVzcG9uc2VDb252ZXJ0ZXIuaAppbmRleCBlYzMzNDI5NDhmMWQ1ZjM1YjExOTAyNDJlOGQx
MWI4NGQ3ZGMxYjY4Li41N2Q1M2M3MWMyMTk4ODM0ZmQ5OGRmYjIwM2RiNzc3ZjFjNDM3YjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8vVTJmUmVzcG9u
c2VDb252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL2ZpZG8v
VTJmUmVzcG9uc2VDb252ZXJ0ZXIuaApAQCAtMzYsNiArMzYsMTAgQEAKICNpbmNsdWRlICJBdXRo
ZW50aWNhdG9yQXR0ZXN0YXRpb25SZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEJ1ZmZlclNvdXJjZTsKK30KKwogbmFtZXNw
YWNlIGZpZG8gewogCiAvLyBDb252ZXJ0cyBhIFUyRiByZWdpc3RlciByZXNwb25zZSB0byBXZWJB
dXRoTiBtYWtlQ3JlZGVudGlhbCByZXNwb25zZS4KQEAgLTQ0LDcgKzQ4LDcgQEAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRlc3RhdGlvblJlc3BvbnNlPiBy
ZWFkVTJmUmVnaXN0ZXIKIAogLy8gQ29udmVydHMgYSBVMkYgYXV0aGVudGljYXRpb24gcmVzcG9u
c2UgdG8gV2ViQXV0aE4gZ2V0QXNzZXJ0aW9uIHJlc3BvbnNlLgogLy8gaHR0cHM6Ly9maWRvYWxs
aWFuY2Uub3JnL3NwZWNzL2ZpZG8tdjIuMC1pZC0yMDE4MDIyNy9maWRvLWNsaWVudC10by1hdXRo
ZW50aWNhdG9yLXByb3RvY29sLXYyLjAtaWQtMjAxODAyMjcuaHRtbCN1MmYtYXV0aGVudGljYXRv
ckdldEFzc2VydGlvbi1pbnRlcm9wZXJhYmlsaXR5Ci1XRUJDT1JFX0VYUE9SVCBSZWZQdHI8V2Vi
Q29yZTo6QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZWFkVTJmU2lnblJlc3BvbnNl
KGNvbnN0IFN0cmluZyYgcnBJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXlIYW5kbGUsIGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYgdTJmRGF0YSwgV2ViQ29yZTo6QXV0aGVudGljYXRvckF0dGFj
aG1lbnQpOworV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBc3Nl
cnRpb25SZXNwb25zZT4gcmVhZFUyZlNpZ25SZXNwb25zZShjb25zdCBTdHJpbmcmIHJwSWQsIGNv
bnN0IFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSYga2V5SGFuZGxlLCBjb25zdCBWZWN0b3I8dWludDhf
dD4mIHUyZkRhdGEsIFdlYkNvcmU6OkF1dGhlbnRpY2F0b3JBdHRhY2htZW50KTsKIAogfSAvLyBu
YW1lc3BhY2UgZmlkbwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9C
dWZmZXJTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5o
CmluZGV4IDM2YzE4NTM5OTk5ODBlYjYzNjczYmRlY2E0MjhkM2YyZTBkNDMzY2EuLjU5YTMxYTgy
NmZjMjY2NTI4OGRlNzk2ODE3MjFjODZhMjAyYzk0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0J1ZmZlclNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0J1ZmZlclNvdXJjZS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxNiBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAs
NiArMzEsMTAgQEAKICNpbmNsdWRlIDx2YXJpYW50PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAorI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVkKF9fT0JKQ19fKQorT0JKQ19DTEFTUyBO
U0RhdGE7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3Vy
Y2UgewpAQCAtNjQsOCArNjksNjIgQEAgcHVibGljOgogICAgICAgICB9LCBtX3ZhcmlhbnQpOwog
ICAgIH0KIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxCdWZmZXJTb3VyY2U+IGRlY29kZShEZWNvZGVyJik7CisKIHByaXZhdGU6CiAgICAgVmFyaWFu
dFR5cGUgbV92YXJpYW50OwogfTsKIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgQnVm
ZmVyU291cmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW5ndGgoKSk7CisgICAgaWYgKCFsZW5ndGgoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEoZGF0
YSgpLCBsZW5ndGgoKSAqIHNpemVvZih1aW50OF90KSwgYWxpZ25vZih1aW50OF90KSk7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPEJ1ZmZlclNvdXJjZT4gQnVm
ZmVyU291cmNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBzaXplOworICAgIGRlY29kZXIgPj4gc2l6ZTsKKyAgICBpZiAoIXNpemUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKCEqc2l6ZSkKKyAgICAgICAgcmV0
dXJuIEJ1ZmZlclNvdXJjZSgpOworCisgICAgYXV0byBkYXRhU2l6ZSA9IENoZWNrZWRTaXplIHsg
KnNpemUgfTsKKyAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEgPSBk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGlnbm9mKHVpbnQ4
X3QpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIEJ1ZmZlclNvdXJjZShKU0M6OkFycmF5QnVmZmVyOjp0cnlDcmVhdGUoc3RhdGljX2Nh
c3Q8Y29uc3Qgdm9pZCo+KGRhdGEpLCBkYXRhU2l6ZS52YWx1ZSgpKSk7Cit9CisKK2lubGluZSBC
dWZmZXJTb3VyY2UgdG9CdWZmZXJTb3VyY2UoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGxl
bmd0aCkKK3sKKyAgICByZXR1cm4gQnVmZmVyU291cmNlKEpTQzo6QXJyYXlCdWZmZXI6OnRyeUNy
ZWF0ZShkYXRhLCBsZW5ndGgpKTsKK30KKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBkZWZpbmVk
KF9fT0JKQ19fKQoraW5saW5lIEJ1ZmZlclNvdXJjZSB0b0J1ZmZlclNvdXJjZShOU0RhdGEgKmRh
dGEpCit7CisgICAgcmV0dXJuIEJ1ZmZlclNvdXJjZShKU0M6OkFycmF5QnVmZmVyOjp0cnlDcmVh
dGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCkp
OworfQorCitpbmxpbmUgUmV0YWluUHRyPE5TRGF0YT4gdG9OU0RhdGEoY29uc3QgQnVmZmVyU291
cmNlJiBkYXRhKQoreworICAgIHJldHVybiBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0
aEJ5dGVzOmRhdGEuZGF0YSgpIGxlbmd0aDpkYXRhLmxlbmd0aCgpXSk7Cit9CisjZW5kaWYKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIGRlZmluZWQo
X19PQkpDX18pCit1c2luZyBXZWJDb3JlOjp0b05TRGF0YTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5tbQppbmRleCAzOTRkZTNiMDU4OWU3ZjYzNTI0NDA2YTE4NzBhNmM5ZDIwMjA3
MGI1Li5mMmQ3NTIwN2NhMTQxYTI0YzE2M2E3N2YzMjkzYjcxMTFkMmFkNzExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2ViQXV0
aGVudGljYXRpb25QYW5lbC5tbQpAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBXZWJDb3JlOjpQ
dWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpVc2VyRW50aXR5IHB1YmxpY0tleUNy
ZWRlbnRpCiAgICAgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6
VXNlckVudGl0eSByZXN1bHQ7CiAgICAgcmVzdWx0Lm5hbWUgPSB1c2VyRW50aXR5Lm5hbWU7CiAg
ICAgcmVzdWx0Lmljb24gPSB1c2VyRW50aXR5Lmljb247Ci0gICAgcmVzdWx0LmlkVmVjdG9yID0g
dmVjdG9yRnJvbU5TRGF0YSh1c2VyRW50aXR5LmlkZW50aWZpZXIpOworICAgIHJlc3VsdC5pZCA9
IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKHVzZXJFbnRpdHkuaWRlbnRpZmllcik7CiAgICAgcmVz
dWx0LmRpc3BsYXlOYW1lID0gdXNlckVudGl0eS5kaXNwbGF5TmFtZTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC00MzgsNyArNDM4LDcgQEAgc3RhdGljIFZlY3RvcjxXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gcHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXAKICAgICBy
ZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjcmVkZW50aWFscy5jb3VudCk7CiAKICAgICBm
b3IgKF9XS1B1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yICpjcmVkZW50aWFsIDogY3JlZGVu
dGlhbHMpCi0gICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoeyBXZWJDb3JlOjpQdWJsaWNL
ZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCB7IH0sIHZlY3RvckZyb21OU0RhdGEoY3JlZGVu
dGlhbC5pZGVudGlmaWVyKSwgYXV0aGVudGljYXRvclRyYW5zcG9ydHMoY3JlZGVudGlhbC50cmFu
c3BvcnRzKSB9KTsKKyAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCh7IFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXksIFdlYkNvcmU6OnRvQnVmZmVyU291cmNl
KGNyZWRlbnRpYWwuaWRlbnRpZmllciksIGF1dGhlbnRpY2F0b3JUcmFuc3BvcnRzKGNyZWRlbnRp
YWwudHJhbnNwb3J0cykgfSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvTG9jYWxBdXRo
ZW50aWNhdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24v
Q29jb2EvTG9jYWxBdXRoZW50aWNhdG9yLm1tCmluZGV4IDUzMzQ2ZGQ1MTM3ODZmNWIxN2NmMzcx
ZGE2OTg3YzJiNzEzOWY3NjkuLjBiMDEwODk5N2ZjNTJhNDM4MDZhNGNlOTk0ZmFlODFlYThlNzMx
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQXV0aGVudGljYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9Mb2NhbEF1dGhlbnRpY2F0b3IubW0KQEAgLTg0LDgg
Kzg0LDggQEAgc3RhdGljIGlubGluZSBIYXNoU2V0PFN0cmluZz4gcHJvZHVjZUhhc2hTZXQoY29u
c3QgVmVjdG9yPFB1YmxpY0tleUNyZWRlbnRpYWxEZXMKIHsKICAgICBIYXNoU2V0PFN0cmluZz4g
cmVzdWx0OwogICAgIGZvciAoYXV0byYgY3JlZGVudGlhbERlc2NyaXB0b3IgOiBjcmVkZW50aWFs
RGVzY3JpcHRvcnMpIHsKLSAgICAgICAgaWYgKGVtcHR5VHJhbnNwb3J0c09yQ29udGFpbihjcmVk
ZW50aWFsRGVzY3JpcHRvci50cmFuc3BvcnRzLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpJbnRl
cm5hbCkgJiYgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9PSBQdWJsaWNLZXlDcmVkZW50aWFs
VHlwZTo6UHVibGljS2V5ICYmIGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLnNpemUoKSA9
PSBjcmVkZW50aWFsSWRMZW5ndGgpCi0gICAgICAgICAgICByZXN1bHQuYWRkKGJhc2U2NEVuY29k
ZVRvU3RyaW5nKGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkVmVjdG9yLmRhdGEoKSwgY3JlZGVudGlh
bERlc2NyaXB0b3IuaWRWZWN0b3Iuc2l6ZSgpKSk7CisgICAgICAgIGlmIChlbXB0eVRyYW5zcG9y
dHNPckNvbnRhaW4oY3JlZGVudGlhbERlc2NyaXB0b3IudHJhbnNwb3J0cywgQXV0aGVudGljYXRv
clRyYW5zcG9ydDo6SW50ZXJuYWwpICYmIGNyZWRlbnRpYWxEZXNjcmlwdG9yLnR5cGUgPT0gUHVi
bGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSAmJiBjcmVkZW50aWFsRGVzY3JpcHRvci5p
ZC5sZW5ndGgoKSA9PSBjcmVkZW50aWFsSWRMZW5ndGgpCisgICAgICAgICAgICByZXN1bHQuYWRk
KGJhc2U2NEVuY29kZVRvU3RyaW5nKGNyZWRlbnRpYWxEZXNjcmlwdG9yLmlkLmRhdGEoKSwgY3Jl
ZGVudGlhbERlc2NyaXB0b3IuaWQubGVuZ3RoKCkpKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIExvY2FsQXV0aGVudGljYXRvcjo6Y29udGlu
dWVNYWtlQ3JlZGVudGlhbEFmdGVyVXNlclZlcmlmaWNhdGlvbihTZWNBY2Nlc3NDbwogICAgIGNv
bnN0IGF1dG8mIHNlY0F0dHJMYWJlbCA9IGNyZWF0aW9uT3B0aW9ucy5ycC5pZDsKIAogICAgIGNi
b3I6OkNCT1JWYWx1ZTo6TWFwVmFsdWUgdXNlckVudGl0eU1hcDsKLSAgICB1c2VyRW50aXR5TWFw
W2Nib3I6OkNCT1JWYWx1ZShmaWRvOjprRW50aXR5SWRNYXBLZXkpXSA9IGNib3I6OkNCT1JWYWx1
ZShjcmVhdGlvbk9wdGlvbnMudXNlci5pZFZlY3Rvcik7CisgICAgdXNlckVudGl0eU1hcFtjYm9y
OjpDQk9SVmFsdWUoZmlkbzo6a0VudGl0eUlkTWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoY3Jl
YXRpb25PcHRpb25zLnVzZXIuaWQpOwogICAgIHVzZXJFbnRpdHlNYXBbY2Jvcjo6Q0JPUlZhbHVl
KGZpZG86OmtFbnRpdHlOYW1lTWFwS2V5KV0gPSBjYm9yOjpDQk9SVmFsdWUoY3JlYXRpb25PcHRp
b25zLnVzZXIubmFtZSk7CiAgICAgYXV0byB1c2VyRW50aXR5ID0gY2Jvcjo6Q0JPUldyaXRlcjo6
d3JpdGUoY2Jvcjo6Q0JPUlZhbHVlKFdURk1vdmUodXNlckVudGl0eU1hcCkpKTsKICAgICBBU1NF
UlQodXNlckVudGl0eSk7CkBAIC02ODYsOSArNjg2LDkgQEAgdm9pZCBMb2NhbEF1dGhlbnRpY2F0
b3I6OmRlbGV0ZUR1cGxpY2F0ZUNyZWRlbnRpYWwoKSBjb25zdAogICAgIG1fZXhpc3RpbmdDcmVk
ZW50aWFscy5maW5kTWF0Y2hpbmcoW2NyZWF0aW9uT3B0aW9uc10gKGF1dG8mIGNyZWRlbnRpYWwp
IHsKICAgICAgICAgYXV0byogdXNlckhhbmRsZSA9IGNyZWRlbnRpYWwtPnVzZXJIYW5kbGUoKTsK
ICAgICAgICAgQVNTRVJUKHVzZXJIYW5kbGUpOwotICAgICAgICBpZiAodXNlckhhbmRsZS0+Ynl0
ZUxlbmd0aCgpICE9IGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLnNpemUoKSkKKyAgICAg
ICAgaWYgKHVzZXJIYW5kbGUtPmJ5dGVMZW5ndGgoKSAhPSBjcmVhdGlvbk9wdGlvbnMudXNlci5p
ZC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKG1lbWNt
cCh1c2VySGFuZGxlLT5kYXRhKCksIGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkVmVjdG9yLmRhdGEo
KSwgdXNlckhhbmRsZS0+Ynl0ZUxlbmd0aCgpKSkKKyAgICAgICAgaWYgKG1lbWNtcCh1c2VySGFu
ZGxlLT5kYXRhKCksIGNyZWF0aW9uT3B0aW9ucy51c2VyLmlkLmRhdGEoKSwgdXNlckhhbmRsZS0+
Ynl0ZUxlbmd0aCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBhdXRv
IHF1ZXJ5ID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29h
L1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkubW0KaW5kZXggNjFmOTU0MmRlOWUxZjAyY2JkMWZiZWMwMGQ4NDM3ZWUwZmZjODhjYi4u
ZWVjNTliZDdlYjk1ZTEwNGRjYzc5ZDg0OTU0NTBjZjEzZDMyMjM1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
QXV0aGVudGljYXRpb24vQ29jb2EvV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkubW0K
QEAgLTQ5LDExICs0OSw2IEBAIHN0YXRpYyBpbmxpbmUgUmVmPEFycmF5QnVmZmVyPiB0b0FycmF5
QnVmZmVyKE5TRGF0YSAqZGF0YSkKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGgpOwog
fQogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IEJ1ZmZl
clNvdXJjZSYgZGF0YSkKLXsKLSAgICByZXR1cm4gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5p
dFdpdGhCeXRlczpkYXRhLmRhdGEoKSBsZW5ndGg6ZGF0YS5sZW5ndGgoKV0pOwotfQotCiBzdGF0
aWMgaW5saW5lIFJldGFpblB0cjxOU0RhdGE+IHRvTlNEYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3IpCiB7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRo
Qnl0ZXM6dmVjdG9yLmRhdGEoKSBsZW5ndGg6dmVjdG9yLnNpemUoKV0pOwpAQCAtMTUxLDcgKzE0
Niw3IEBAIHN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPEFTQ1B1YmxpY0tleUNyZWRlbnRpYWxEZXNj
cmlwdG9yPiB0b0FTQ0Rlc2NyaXB0b3IoUHVibGljCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gYWRvcHROUyhbYWxsb2NBU0NQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvckluc3Rh
bmNlKCkgaW5pdFdpdGhDcmVkZW50aWFsSUQ6dG9OU0RhdGEoZGVzY3JpcHRvci5pZFZlY3Rvciku
Z2V0KCkgdHJhbnNwb3J0czp0cmFuc3BvcnRzLmdldCgpXSk7CisgICAgcmV0dXJuIGFkb3B0TlMo
W2FsbG9jQVNDUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3JJbnN0YW5jZSgpIGluaXRXaXRo
Q3JlZGVudGlhbElEOnRvTlNEYXRhKGRlc2NyaXB0b3IuaWQpLmdldCgpIHRyYW5zcG9ydHM6dHJh
bnNwb3J0cy5nZXQoKV0pOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1
ZXN0Q29udGV4dD4gY29uZmlndXJlUmVnaXN0cmF0aW9uUmVxdWVzdENvbnRleHQoY29uc3QgUHVi
bGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyYgb3B0aW9ucykKQEAgLTE3OCwxMCArMTcz
LDEwIEBAIHN0YXRpYyBSZXRhaW5QdHI8QVNDQ3JlZGVudGlhbFJlcXVlc3RDb250ZXh0PiBjb25m
aWd1cmVSZWdpc3RyYXRpb25SZXF1ZXN0Q29udGV4CiAKICAgICBhdXRvIGNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMgPSBhZG9wdE5TKFthbGxvY0FTQ1B1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlv
bk9wdGlvbnNJbnN0YW5jZSgpIGluaXRdKTsKIAotICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zIHNldENoYWxsZW5nZTp0b05TRGF0YShvcHRpb25zLmNoYWxsZW5nZVZlY3RvcikuZ2V0KCld
OworICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldENoYWxsZW5nZTp0b05TRGF0YShv
cHRpb25zLmNoYWxsZW5nZSkuZ2V0KCldOwogICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
IHNldFJlbHlpbmdQYXJ0eUlkZW50aWZpZXI6b3B0aW9ucy5ycC5pZF07CiAgICAgW2NyZWRlbnRp
YWxDcmVhdGlvbk9wdGlvbnMgc2V0VXNlck5hbWU6b3B0aW9ucy51c2VyLm5hbWVdOwotICAgIFtj
cmVkZW50aWFsQ3JlYXRpb25PcHRpb25zIHNldFVzZXJJZGVudGlmaWVyOnRvTlNEYXRhKG9wdGlv
bnMudXNlci5pZFZlY3RvcikuZ2V0KCldOworICAgIFtjcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
IHNldFVzZXJJZGVudGlmaWVyOnRvTlNEYXRhKG9wdGlvbnMudXNlci5pZC5kYXRhKCkpLmdldCgp
XTsKICAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRVc2VyRGlzcGxheU5hbWU6b3B0
aW9ucy51c2VyLmRpc3BsYXlOYW1lXTsKICAgICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBz
ZXRVc2VyVmVyaWZpY2F0aW9uUHJlZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpXTsKICAg
ICBbY3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBzZXRTaG91bGRSZXF1aXJlUmVzaWRlbnRLZXk6
c2hvdWxkUmVxdWlyZVJlc2lkZW50S2V5XTsKQEAgLTIzNiw3ICsyMzEsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPEFTQ0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dD4gY29uZmlndXJhdGlvbkFzc2VydGlv
blJlcXVlc3RDb250ZQogICAgIGF1dG8gcmVxdWVzdENvbnRleHQgPSBhZG9wdE5TKFthbGxvY0FT
Q0NyZWRlbnRpYWxSZXF1ZXN0Q29udGV4dEluc3RhbmNlKCkgaW5pdFdpdGhSZXF1ZXN0VHlwZXM6
cmVxdWVzdFR5cGVzXSk7CiAgICAgW3JlcXVlc3RDb250ZXh0IHNldFJlbHlpbmdQYXJ0eUlkZW50
aWZpZXI6b3B0aW9ucy5ycElkXTsKIAotICAgIGF1dG8gY2hhbGxlbmdlID0gdG9OU0RhdGEob3B0
aW9ucy5jaGFsbGVuZ2VWZWN0b3IpOworICAgIGF1dG8gY2hhbGxlbmdlID0gdG9OU0RhdGEob3B0
aW9ucy5jaGFsbGVuZ2UpOwogCiAgICAgaWYgKHJlcXVlc3RUeXBlcyAmIEFTQ0NyZWRlbnRpYWxS
ZXF1ZXN0VHlwZVBsYXRmb3JtUHVibGljS2V5QXNzZXJ0aW9uKQogICAgICAgICBbcmVxdWVzdENv
bnRleHQgc2V0UGxhdGZvcm1LZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uczpbYWxsb2NBU0NQ
dWJsaWNLZXlDcmVkZW50aWFsQXNzZXJ0aW9uT3B0aW9uc0luc3RhbmNlKCkgaW5pdFdpdGhLaW5k
OkFTQ1B1YmxpY0tleUNyZWRlbnRpYWxLaW5kUGxhdGZvcm0gcmVseWluZ1BhcnR5SWRlbnRpZmll
cjpvcHRpb25zLnJwSWQgY2hhbGxlbmdlOmNoYWxsZW5nZS5nZXQoKSB1c2VyVmVyaWZpY2F0aW9u
UHJlZmVyZW5jZTp1c2VyVmVyaWZpY2F0aW9uLmdldCgpIGFsbG93ZWRDcmVkZW50aWFsczphbGxv
d2VkQ3JlZGVudGlhbHMuZ2V0KCldXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9maWRvL1UyZkF1dGhlbnRpY2F0b3Iu
Y3BwCmluZGV4IDQ5ZjIyMmVjOGMxZTkyZTU2NjE5ODhmYzhkYTVhMDk2NzAxZDRkMjYuLjA0OThi
ZDAxZDBlMTU0MjA1NjliYTAzYTk2YTQ5MmQ2YTBjOTIyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL2ZpZG8vVTJmQXV0aGVudGljYXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vZmlkby9V
MmZBdXRoZW50aWNhdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgVTJmQXV0aGVudGlj
YXRvcjo6aXNzdWVTaWduQ29tbWFuZChzaXplX3QgaW5kZXgpCiAgICAgICAgIHJlY2VpdmVSZXNw
b25kKEV4Y2VwdGlvbkRhdGEgeyBOb3RBbGxvd2VkRXJyb3IsICJObyBjcmVkZW50aWFscyBmcm9t
IHRoZSBhbGxvd0NyZWRlbnRpYWxzIGxpc3QgaXMgZm91bmQgaW4gdGhlIGF1dGhlbnRpY2F0b3Iu
Il9zIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gdTJmQ21kID0gY29udmVy
dFRvVTJmU2lnbkNvbW1hbmQocmVxdWVzdERhdGEoKS5oYXNoLCByZXF1ZXN0T3B0aW9ucywgcmVx
dWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFsc1tpbmRleF0uaWRWZWN0b3IsIG1faXNBcHBJZCk7
CisgICAgYXV0byB1MmZDbWQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChyZXF1ZXN0RGF0YSgp
Lmhhc2gsIHJlcXVlc3RPcHRpb25zLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzW2lu
ZGV4XS5pZCwgbV9pc0FwcElkKTsKICAgICBBU1NFUlQodTJmQ21kKTsKICAgICBpc3N1ZU5ld0Nv
bW1hbmQoV1RGTW92ZSgqdTJmQ21kKSwgQ29tbWFuZFR5cGU6OlNpZ25Db21tYW5kKTsKIH0KQEAg
LTIwOSw5ICsyMDksOSBAQCB2b2lkIFUyZkF1dGhlbnRpY2F0b3I6OmNvbnRpbnVlU2lnbkNvbW1h
bmRBZnRlclJlc3BvbnNlUmVjZWl2ZWQoQXBkdVJlc3BvbnNlJiYgYQogICAgICAgICBSZWZQdHI8
QXV0aGVudGljYXRvckFzc2VydGlvblJlc3BvbnNlPiByZXNwb25zZTsKICAgICAgICAgaWYgKG1f
aXNBcHBJZCkgewogICAgICAgICAgICAgQVNTRVJUKHJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMg
JiYgIXJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLmlzTnVsbCgpKTsKLSAgICAgICAg
ICAgIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5leHRlbnNp
b25zLT5hcHBpZCwgcmVxdWVzdE9wdGlvbnMuYWxsb3dDcmVkZW50aWFsc1ttX25leHRMaXN0SW5k
ZXggLSAxXS5pZFZlY3RvciwgYXBkdVJlc3BvbnNlLmRhdGEoKSwgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQ6OkNyb3NzUGxhdGZvcm0pOworICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2ln
blJlc3BvbnNlKHJlcXVlc3RPcHRpb25zLmV4dGVuc2lvbnMtPmFwcGlkLCByZXF1ZXN0T3B0aW9u
cy5hbGxvd0NyZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlkLCBhcGR1UmVzcG9uc2Uu
ZGF0YSgpLCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgcmVzcG9uc2UgPSByZWFkVTJmU2lnblJlc3BvbnNlKHJlcXVl
c3RPcHRpb25zLnJwSWQsIHJlcXVlc3RPcHRpb25zLmFsbG93Q3JlZGVudGlhbHNbbV9uZXh0TGlz
dEluZGV4IC0gMV0uaWRWZWN0b3IsIGFwZHVSZXNwb25zZS5kYXRhKCksIEF1dGhlbnRpY2F0b3JB
dHRhY2htZW50OjpDcm9zc1BsYXRmb3JtKTsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gcmVhZFUy
ZlNpZ25SZXNwb25zZShyZXF1ZXN0T3B0aW9ucy5ycElkLCByZXF1ZXN0T3B0aW9ucy5hbGxvd0Ny
ZWRlbnRpYWxzW21fbmV4dExpc3RJbmRleCAtIDFdLmlkLCBhcGR1UmVzcG9uc2UuZGF0YSgpLCBB
dXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgICAgIGlmICghcmVz
cG9uc2UpIHsKICAgICAgICAgICAgIHJlY2VpdmVSZXNwb25kKEV4Y2VwdGlvbkRhdGEgeyBVbmtu
b3duRXJyb3IsICJDb3VsZG4ndCBwYXJzZSB0aGUgVTJGIHNpZ24gcmVzcG9uc2UuIl9zIH0pOwog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDc0Zjg5YTczNDk1ZmIxZmZkZjdkNTgyNjRkZDYzZDU2OGQ0ZDNmYjQu
LjdjYzQ3NTUzODQ3YzUzY2ZkNmYwMWE2NmYzNDlmNjAyYTY5Y2Q2ZmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAy
MS0xMS0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViQXV0aG5dIFN0b3Agc2VyaWFsaXppbmcgQnVmZmVyU291cmNlIGFuZCBWZWN0b3I8dWludDhf
dD4gZHVwbGljYXRlcyBvZiBpZGVudGlmaWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzMDExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTMx
MzgwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBUaGUg
b3JpZ2luYWwgV2ViQXV0aG4gbG9naWMgY29udmVydGVkIFdlYkNvcmU6OkJ1ZmZlclNvdXJjZSBv
YmplY3RzIHRvIFZlY3Rvcjx1aW50OF90PgorICAgICAgICBkdXJpbmcgc2VyaWFsaXphdGlvbiwg
d2hpY2ggY3JlYXRlZCBhIHdlaXJkIGRlc2lnbiB3aGVyZSBzb21lIGNvZGUgZGVhbHQgd2l0aCBC
dWZmZXJTb3VyY2UKKyAgICAgICAgb2JqZWN0cywgYW5kIG90aGVyIHdpdGggVmVjdG9ycywgYW5k
IGxvdHMgb2YgY29udmVydGluZyB0byBhbmQgZnJvbSB0aGVzZSB0eXBlcy4gSXQgYWxzbyBjYXVz
ZWQKKyAgICAgICAgV2ViQXV0aG4gZGF0YSBzdHJ1Y3R1cmVzIHRvIGhhdmUgdHdvIHBsYWNlcyB3
aGVyZSB0aGlzIGluZm9ybWF0aW9uIG1pZ2h0IGxpdmUsIHdpdGggdGhlCisgICAgICAgIFVJUHJv
Y2VzcyB1c2luZyBvbmUgcmVwcmVzZW50YXRpb24sIGFuZCB0aGUgV2ViQ29udGVudCBwcm9jZXNz
IHVzaW5nIGFub3RoZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZXZpc2VzIHRoZSBjb2RlIGFz
IGZvbGxvd3M6CisKKyAgICAgICAgMS4gVGhlIGlkZW50aWZpZXJzIGFyZSBhbHdheXMgc3RvcmVk
IGFzIEJ1ZmZlclNvdXJjZSwgYW5kIHRoZSBzYW1lIG1lbWJlciBpcyB1c2VkIGluIFVJUHJvY2Vz
cworICAgICAgICAgICBhbmQgV2ViQ29udGVudCBwcm9jZXNzIHdoZW4gYWNjZXNzaW5nIHRoaXMg
aW5mb3JtYXRpb24uCisgICAgICAgIDIuIFdlIG5vdyBzZXJpYWxpemUgQnVmZmVyU291cmNlIGRp
cmVjdGx5LgorCisgICAgICAgIFRlc3RlZCBieSBleGlzdGluZyBXZWJBdXRobiB0ZXN0IGNhc2Vz
IChBUEkgYW5kIExheW91dCB0ZXN0cykKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9DdGFwUmVxdWVzdFRlc3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRl
c3QuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5
dGVzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcDoKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmNvbnN0cnVjdE1ha2VDcmVkZW50aWFsUmVxdWVzdCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0xMS0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbmZpbml0ZSByZWN1cnNpb24gdW5kZXIgSW5qZWN0ZWRCdW5k
bGVQYWdlOjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXF1ZXN0VGVzdC5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcAppbmRleCBjYTliYzIz
YTY4YTJkOGFlZmZjNThlN2RhNDc4NTYwMjEzZDVkNzU1Li5mMWE2ODM2OWY3MTIzZjE2OGMwZGMy
ZGE3OGZiMGJhZjZhMjM4NjBmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvQ3RhcFJlcXVlc3RUZXN0LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8vIENvcHly
aWdodCAyMDE3IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
CiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTU2LDEzICs1NiwxMyBAQCBURVNU
KENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VDcmVkZW50aWFsUmVxdWVzdFBhcmFt
KQogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJFbnRpdHkgdXNl
cjsKICAgICB1c2VyLm5hbWUgPSAiam9obnBzbWl0aEBleGFtcGxlLmNvbSI7CiAgICAgdXNlci5p
Y29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampqcHFQYi5wbmciOwotICAgIHVz
ZXIuaWRWZWN0b3IuYXBwZW5kKFRlc3REYXRhOjprVXNlcklkLCBzaXplb2YoVGVzdERhdGE6OmtV
c2VySWQpKTsKKyAgICB1c2VyLmlkID0gV2ViQ29yZTo6dG9CdWZmZXJTb3VyY2UoVGVzdERhdGE6
OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOwogICAgIHVzZXIuZGlzcGxheU5h
bWUgPSAiSm9obiBQLiBTbWl0aCI7CiAKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJsaWNLZXlDcmVkZW50aWFs
VHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tl
eSwgMjU3IH0gfTsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRo
ZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgQXV0aGVudGljYXRvckF0dGFj
aG1lbnQ6OlBsYXRmb3JtLCB0cnVlLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlByZWZl
cnJlZCB9OwogCi0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25z
IHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9uLCBB
dHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxvcHQsIHsgfSB9
OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1
c2VyLCB7IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRp
b25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFz
aCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6
ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMs
IEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmls
aXR5OjprU3VwcG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC03OSwxMyArNzksMTMgQEAgVEVTVChD
VEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJhbU5v
VVZOb1JLKQogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJFbnRp
dHkgdXNlcjsKICAgICB1c2VyLm5hbWUgPSAiam9obnBzbWl0aEBleGFtcGxlLmNvbSI7CiAgICAg
dXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampqcHFQYi5wbmciOwot
ICAgIHVzZXIuaWRWZWN0b3IuYXBwZW5kKFRlc3REYXRhOjprVXNlcklkLCBzaXplb2YoVGVzdERh
dGE6OmtVc2VySWQpKTsKKyAgICB1c2VyLmlkID0gV2ViQ29yZTo6dG9CdWZmZXJTb3VyY2UoVGVz
dERhdGE6OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOwogICAgIHVzZXIuZGlz
cGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CiAKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFyYW1zIHsgeyBQdWJsaWNLZXlDcmVk
ZW50aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1
YmxpY0tleSwgMjU3IH0gfTsKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25z
OjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2VsZWN0aW9uIHsgQXV0aGVudGljYXRv
ckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCBmYWxzZSwgVXNlclZlcmlmaWNhdGlvblJlcXVpcmVtZW50
OjpEaXNjb3VyYWdlZCB9OwogCi0gICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9u
cyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2Vs
ZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxv
cHQsIHsgfSB9OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgb3B0aW9u
cyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0LCB7IH0sIHNlbGVjdGlvbiwg
QXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwgc3RkOjpudWxsb3B0IH07CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBlbmQoVGVzdERhdGE6OmtDbGll
bnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKTsKICAgICBhdXRv
IHNlcmlhbGl6ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxSZXF1ZXN0QXNDQk9SKGhhc2gs
IG9wdGlvbnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25zOjpVc2VyVmVyaWZpY2F0aW9u
QXZhaWxhYmlsaXR5OjprU3VwcG9ydGVkQW5kQ29uZmlndXJlZCk7CkBAIC0xMDIsMTMgKzEwMiwx
MyBAQCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VDcmVkZW50aWFsUmVx
dWVzdFBhcmFtVVZSZXF1aXJlZEJ1dE5vdFN1cAogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnM6OlVzZXJFbnRpdHkgdXNlcjsKICAgICB1c2VyLm5hbWUgPSAiam9obnBzbWl0
aEBleGFtcGxlLmNvbSI7CiAgICAgdXNlci5pY29uID0gImh0dHBzOi8vcGljcy5hY21lLmNvbS8w
MC9wL2FCampqcHFQYi5wbmciOwotICAgIHVzZXIuaWRWZWN0b3IuYXBwZW5kKFRlc3REYXRhOjpr
VXNlcklkLCBzaXplb2YoVGVzdERhdGE6OmtVc2VySWQpKTsKKyAgICB1c2VyLmlkID0gV2ViQ29y
ZTo6dG9CdWZmZXJTb3VyY2UoVGVzdERhdGE6OmtVc2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1Vz
ZXJJZCkpOwogICAgIHVzZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CiAKICAgICBW
ZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6UGFyYW1ldGVycz4gcGFy
YW1zIHsgeyBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5LCA3IH0sIHsgUHVibGlj
S2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgMjU3IH0gfTsKICAgICBQdWJsaWNLZXlDcmVk
ZW50aWFsQ3JlYXRpb25PcHRpb25zOjpBdXRoZW50aWNhdG9yU2VsZWN0aW9uQ3JpdGVyaWEgc2Vs
ZWN0aW9uIHsgQXV0aGVudGljYXRvckF0dGFjaG1lbnQ6OlBsYXRmb3JtLCBmYWxzZSwgVXNlclZl
cmlmaWNhdGlvblJlcXVpcmVtZW50OjpSZXF1aXJlZCB9OwogCi0gICAgUHVibGljS2V5Q3JlZGVu
dGlhbENyZWF0aW9uT3B0aW9ucyBvcHRpb25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6
Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9uLCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNl
OjpOb25lLCBzdGQ6Om51bGxvcHQsIHsgfSB9OworICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVh
dGlvbk9wdGlvbnMgb3B0aW9ucyB7IHJwLCB1c2VyLCB7IH0sIHBhcmFtcywgc3RkOjpudWxsb3B0
LCB7IH0sIHNlbGVjdGlvbiwgQXR0ZXN0YXRpb25Db252ZXlhbmNlUHJlZmVyZW5jZTo6Tm9uZSwg
c3RkOjpudWxsb3B0IH07CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGhhc2g7CiAgICAgaGFzaC5hcHBl
bmQoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0
YUhhc2gpKTsKICAgICBhdXRvIHNlcmlhbGl6ZWREYXRhID0gZW5jb2RlTWFrZUNyZWRlbml0YWxS
ZXF1ZXN0QXNDQk9SKGhhc2gsIG9wdGlvbnMsIEF1dGhlbnRpY2F0b3JTdXBwb3J0ZWRPcHRpb25z
OjpVc2VyVmVyaWZpY2F0aW9uQXZhaWxhYmlsaXR5OjprTm90U3VwcG9ydGVkKTsKQEAgLTEyNSw3
ICsxMjUsNyBAQCBURVNUKENUQVBSZXF1ZXN0VGVzdCwgVGVzdENvbnN0cnVjdE1ha2VDcmVkZW50
aWFsUmVxdWVzdFBhcmFtV2l0aFBpbikKICAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zOjpVc2VyRW50aXR5IHVzZXI7CiAgICAgdXNlci5uYW1lID0gImpvaG5wc21pdGhAZXhh
bXBsZS5jb20iOwogICAgIHVzZXIuaWNvbiA9ICJodHRwczovL3BpY3MuYWNtZS5jb20vMDAvcC9h
QmpqanBxUGIucG5nIjsKLSAgICB1c2VyLmlkVmVjdG9yLmFwcGVuZChUZXN0RGF0YTo6a1VzZXJJ
ZCwgc2l6ZW9mKFRlc3REYXRhOjprVXNlcklkKSk7CisgICAgdXNlci5pZCA9IFdlYkNvcmU6OnRv
QnVmZmVyU291cmNlKFRlc3REYXRhOjprVXNlcklkLCBzaXplb2YoVGVzdERhdGE6OmtVc2VySWQp
KTsKICAgICB1c2VyLmRpc3BsYXlOYW1lID0gIkpvaG4gUC4gU21pdGgiOwogCiAgICAgVmVjdG9y
PFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlBhcmFtZXRlcnM+IHBhcmFtcyB7
IHsgUHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSwgNyB9LCB7IFB1YmxpY0tleUNy
ZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXksIDI1NyB9IH07CkBAIC0xMzUsNyArMTM1LDcgQEAgVEVT
VChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RNYWtlQ3JlZGVudGlhbFJlcXVlc3RQYXJh
bVdpdGhQaW4pCiAgICAgcGluLnByb3RvY29sID0gcGluOjprUHJvdG9jb2xWZXJzaW9uOwogICAg
IHBpbi5hdXRoLmFwcGVuZChUZXN0RGF0YTo6a0N0YXAyUGluQXV0aCwgc2l6ZW9mKFRlc3REYXRh
OjprQ3RhcDJQaW5BdXRoKSk7CiAKLSAgICBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRp
b25zIG9wdGlvbnMgeyBycCwgdXNlciwgeyB9LCBwYXJhbXMsIHN0ZDo6bnVsbG9wdCwgeyB9LCBz
ZWxlY3Rpb24sIEF0dGVzdGF0aW9uQ29udmV5YW5jZVByZWZlcmVuY2U6Ok5vbmUsIHN0ZDo6bnVs
bG9wdCwgeyB9IH07CisgICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucyBvcHRp
b25zIHsgcnAsIHVzZXIsIHsgfSwgcGFyYW1zLCBzdGQ6Om51bGxvcHQsIHsgfSwgc2VsZWN0aW9u
LCBBdHRlc3RhdGlvbkNvbnZleWFuY2VQcmVmZXJlbmNlOjpOb25lLCBzdGQ6Om51bGxvcHQgfTsK
ICAgICBWZWN0b3I8dWludDhfdD4gaGFzaDsKICAgICBoYXNoLmFwcGVuZChUZXN0RGF0YTo6a0Ns
aWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpOwogICAgIGF1
dG8gc2VyaWFsaXplZERhdGEgPSBlbmNvZGVNYWtlQ3JlZGVuaXRhbFJlcXVlc3RBc0NCT1IoaGFz
aCwgb3B0aW9ucywgQXV0aGVudGljYXRvclN1cHBvcnRlZE9wdGlvbnM6OlVzZXJWZXJpZmljYXRp
b25BdmFpbGFiaWxpdHk6OmtTdXBwb3J0ZWRBbmRDb25maWd1cmVkLCBwaW4pOwpAQCAtMTU3LDcg
KzE1Nyw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0R2V0QXNzZXJ0aW9u
UmVxdWVzdCkKICAgICAgICAgMHgzNCwgMHg4NSwgMHg4YSwgMHhjNywgMHg1YiwgMHhlZCwgMHgz
ZiwgMHhkNSwgMHg4MCwgMHhiZiwgMHg5OCwKICAgICAgICAgMHgwOCwgMHhkOSwgMHg0ZiwgMHhj
YiwgMHhlZSwgMHg4MiwgMHhiOSwgMHhiMiwgMHhlZiwgMHg2NiwgMHg3NywKICAgICAgICAgMHhh
ZiwgMHgwYSwgMHhkYywgMHhjMywgMHg1OCwgMHg1MiwgMHhlYSwgMHg2YiwgMHg5ZSB9OwotICAg
IGRlc2NyaXB0b3IxLmlkVmVjdG9yLmFwcGVuZChpZDEsIHNpemVvZihpZDEpKTsKKyAgICBkZXNj
cmlwdG9yMS5pZCA9IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKGlkMSwgc2l6ZW9mKGlkMSkpOwog
ICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRvcjEpOwogCiAgICAg
UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZGVzY3JpcHRvcjI7CkBAIC0xNjgsNyArMTY4
LDcgQEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1
ZXN0KQogICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLAogICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLAogICAgICAgICAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzIH07Ci0gICAgZGVzY3JpcHRv
cjIuaWRWZWN0b3IuYXBwZW5kKGlkMiwgc2l6ZW9mKGlkMikpOworICAgIGRlc2NyaXB0b3IyLmlk
ID0gV2ViQ29yZTo6dG9CdWZmZXJTb3VyY2UoaWQyLCBzaXplb2YoaWQyKSk7CiAgICAgb3B0aW9u
cy5hbGxvd0NyZWRlbnRpYWxzLmFwcGVuZChkZXNjcmlwdG9yMik7CiAKICAgICBvcHRpb25zLnVz
ZXJWZXJpZmljYXRpb24gPSBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOwpA
QCAtMTk0LDcgKzE5NCw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0R2V0
QXNzZXJ0aW9uUmVxdWVzdE5vVVYpCiAgICAgICAgIDB4MzQsIDB4ODUsIDB4OGEsIDB4YzcsIDB4
NWIsIDB4ZWQsIDB4M2YsIDB4ZDUsIDB4ODAsIDB4YmYsIDB4OTgsCiAgICAgICAgIDB4MDgsIDB4
ZDksIDB4NGYsIDB4Y2IsIDB4ZWUsIDB4ODIsIDB4YjksIDB4YjIsIDB4ZWYsIDB4NjYsIDB4Nzcs
CiAgICAgICAgIDB4YWYsIDB4MGEsIDB4ZGMsIDB4YzMsIDB4NTgsIDB4NTIsIDB4ZWEsIDB4NmIs
IDB4OWUgfTsKLSAgICBkZXNjcmlwdG9yMS5pZFZlY3Rvci5hcHBlbmQoaWQxLCBzaXplb2YoaWQx
KSk7CisgICAgZGVzY3JpcHRvcjEuaWQgPSBXZWJDb3JlOjp0b0J1ZmZlclNvdXJjZShpZDEsIHNp
emVvZihpZDEpKTsKICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuYXBwZW5kKGRlc2NyaXB0
b3IxKTsKIAogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxEZXNjcmlwdG9yIGRlc2NyaXB0b3IyOwpA
QCAtMjA1LDcgKzIwNSw3IEBAIFRFU1QoQ1RBUFJlcXVlc3RUZXN0LCBUZXN0Q29uc3RydWN0R2V0
QXNzZXJ0aW9uUmVxdWVzdE5vVVYpCiAgICAgICAgIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4
MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCiAgICAgICAgIDB4MDMsIDB4MDMsIDB4
MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsCiAgICAgICAgIDB4
MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMsIDB4MDMg
fTsKLSAgICBkZXNjcmlwdG9yMi5pZFZlY3Rvci5hcHBlbmQoaWQyLCBzaXplb2YoaWQyKSk7Cisg
ICAgZGVzY3JpcHRvcjIuaWQgPSBXZWJDb3JlOjp0b0J1ZmZlclNvdXJjZShpZDIsIHNpemVvZihp
ZDIpKTsKICAgICBvcHRpb25zLmFsbG93Q3JlZGVudGlhbHMuYXBwZW5kKGRlc2NyaXB0b3IyKTsK
IAogICAgIG9wdGlvbnMudXNlclZlcmlmaWNhdGlvbiA9IFVzZXJWZXJpZmljYXRpb25SZXF1aXJl
bWVudDo6RGlzY291cmFnZWQ7CkBAIC0yMzEsNyArMjMxLDcgQEAgVEVTVChDVEFQUmVxdWVzdFRl
c3QsIFRlc3RDb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0VVZSZXF1aXJlZEJ1dE5vdFN1cHBv
cnRlZCkKICAgICAgICAgMHgzNCwgMHg4NSwgMHg4YSwgMHhjNywgMHg1YiwgMHhlZCwgMHgzZiwg
MHhkNSwgMHg4MCwgMHhiZiwgMHg5OCwKICAgICAgICAgMHgwOCwgMHhkOSwgMHg0ZiwgMHhjYiwg
MHhlZSwgMHg4MiwgMHhiOSwgMHhiMiwgMHhlZiwgMHg2NiwgMHg3NywKICAgICAgICAgMHhhZiwg
MHgwYSwgMHhkYywgMHhjMywgMHg1OCwgMHg1MiwgMHhlYSwgMHg2YiwgMHg5ZSB9OwotICAgIGRl
c2NyaXB0b3IxLmlkVmVjdG9yLmFwcGVuZChpZDEsIHNpemVvZihpZDEpKTsKKyAgICBkZXNjcmlw
dG9yMS5pZCA9IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKGlkMSwgc2l6ZW9mKGlkMSkpOwogICAg
IG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRvcjEpOwogCiAgICAgUHVi
bGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgZGVzY3JpcHRvcjI7CkBAIC0yNDIsNyArMjQyLDcg
QEAgVEVTVChDVEFQUmVxdWVzdFRlc3QsIFRlc3RDb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0
VVZSZXF1aXJlZEJ1dE5vdFN1cHBvcnRlZCkKICAgICAgICAgMHgwMywgMHgwMywgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKICAgICAgICAgMHgwMywgMHgw
MywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywKICAgICAg
ICAgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywgMHgwMywg
MHgwMyB9OwotICAgIGRlc2NyaXB0b3IyLmlkVmVjdG9yLmFwcGVuZChpZDIsIHNpemVvZihpZDIp
KTsKKyAgICBkZXNjcmlwdG9yMi5pZCA9IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKGlkMiwgc2l6
ZW9mKGlkMikpOwogICAgIG9wdGlvbnMuYWxsb3dDcmVkZW50aWFscy5hcHBlbmQoZGVzY3JpcHRv
cjIpOwogCiAgICAgb3B0aW9ucy51c2VyVmVyaWZpY2F0aW9uID0gVXNlclZlcmlmaWNhdGlvblJl
cXVpcmVtZW50OjpSZXF1aXJlZDsKQEAgLTI2OCw3ICsyNjgsNyBAQCBURVNUKENUQVBSZXF1ZXN0
VGVzdCwgVGVzdENvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3RXaXRoUGluKQogICAgICAgICAw
eDM0LCAweDg1LCAweDhhLCAweGM3LCAweDViLCAweGVkLCAweDNmLCAweGQ1LCAweDgwLCAweGJm
LCAweDk4LAogICAgICAgICAweDA4LCAweGQ5LCAweDRmLCAweGNiLCAweGVlLCAweDgyLCAweGI5
LCAweGIyLCAweGVmLCAweDY2LCAweDc3LAogICAgICAgICAweGFmLCAweDBhLCAweGRjLCAweGMz
LCAweDU4LCAweDUyLCAweGVhLCAweDZiLCAweDllIH07Ci0gICAgZGVzY3JpcHRvcjEuaWRWZWN0
b3IuYXBwZW5kKGlkMSwgc2l6ZW9mKGlkMSkpOworICAgIGRlc2NyaXB0b3IxLmlkID0gV2ViQ29y
ZTo6dG9CdWZmZXJTb3VyY2UoaWQxLCBzaXplb2YoaWQxKSk7CiAgICAgb3B0aW9ucy5hbGxvd0Ny
ZWRlbnRpYWxzLmFwcGVuZChkZXNjcmlwdG9yMSk7CiAKICAgICBQdWJsaWNLZXlDcmVkZW50aWFs
RGVzY3JpcHRvciBkZXNjcmlwdG9yMjsKQEAgLTI3OSw3ICsyNzksNyBAQCBURVNUKENUQVBSZXF1
ZXN0VGVzdCwgVGVzdENvbnN0cnVjdEdldEFzc2VydGlvblJlcXVlc3RXaXRoUGluKQogICAgICAg
ICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLAogICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLAogICAgICAgICAweDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzLCAw
eDAzLCAweDAzLCAweDAzLCAweDAzLCAweDAzIH07Ci0gICAgZGVzY3JpcHRvcjIuaWRWZWN0b3Iu
YXBwZW5kKGlkMiwgc2l6ZW9mKGlkMikpOworICAgIGRlc2NyaXB0b3IyLmlkID0gV2ViQ29yZTo6
dG9CdWZmZXJTb3VyY2UoaWQyLCBzaXplb2YoaWQyKSk7CiAgICAgb3B0aW9ucy5hbGxvd0NyZWRl
bnRpYWxzLmFwcGVuZChkZXNjcmlwdG9yMik7CiAKICAgICBvcHRpb25zLnVzZXJWZXJpZmljYXRp
b24gPSBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlJlcXVpcmVkOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0N0YXBSZXNwb25zZVRlc3QuY3BwCmlu
ZGV4IDM4MzY2ZDZkM2NlYjMzN2RjYjI5ODY3MmJlODc5ODkyNWY3NzcyODguLjU1MjFjNWJlYzg0
NDRkNjZlZGYzN2M3Mjk3YjJlZGNmZTYxNmI5ZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9DdGFwUmVzcG9uc2VUZXN0LmNwcAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ3RhcFJlc3BvbnNlVGVzdC5jcHAKQEAgLTEsNSArMSw1
IEBACiAvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW5jbHVkZSAiRmlkb1Rlc3REYXRhLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0b3JBdHRhY2ht
ZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9CdWZmZXJTb3VyY2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0NCT1JSZWFkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NCT1JWYWx1ZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQ0JPUldyaXRlci5oPgpAQCAtMzMzLDEyICszMzQsOSBAQCBWZWN0b3I8dWlu
dDhfdD4gZ2V0VGVzdENvcnJ1cHRlZFNpZ25SZXNwb25zZShzaXplX3QgbGVuZ3RoKQogfQogCiAv
LyBSZXR1cm4gYSBrZXkgaGFuZGxlIHVzZWQgZm9yIEdldEFzc2VydGlvbiByZXF1ZXN0LgotVmVj
dG9yPHVpbnQ4X3Q+IGdldFRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcygpCitCdWZmZXJTb3VyY2Ug
Z2V0VGVzdENyZWRlbnRpYWxSYXdJZEJ5dGVzKCkKIHsKLSAgICBWZWN0b3I8dWludDhfdD4gdGVz
dENyZWRlbnRpYWxSYXdJZEJ5dGVzOwotICAgIHRlc3RDcmVkZW50aWFsUmF3SWRCeXRlcy5yZXNl
cnZlSW5pdGlhbENhcGFjaXR5KHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsK
LSAgICB0ZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXMuYXBwZW5kKFRlc3REYXRhOjprVTJmU2lnbktl
eUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwotICAgIHJldHVy
biB0ZXN0Q3JlZGVudGlhbFJhd0lkQnl0ZXM7CisgICAgcmV0dXJuIFdlYkNvcmU6OnRvQnVmZmVy
U291cmNlKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSkpOwogfQogCiAvLyBSZXR1cm4gYSBtYWxmb3JtZWQgVTJmUmVnaXN0ZXJS
ZXNwb25zZS4KQEAgLTU1OCw3ICs1NTYsNyBAQCBURVNUKENUQVBSZXNwb25zZVRlc3QsIFRlc3RQ
YXJzZVNpZ25SZXNwb25zZURhdGEpCiAKIFRFU1QoQ1RBUFJlc3BvbnNlVGVzdCwgVGVzdFBhcnNl
VTJmU2lnbldpdGhOdWxsS2V5SGFuZGxlKQogewotICAgIGF1dG8gcmVzcG9uc2UgPSByZWFkVTJm
U2lnblJlc3BvbnNlKFRlc3REYXRhOjprUmVseWluZ1BhcnR5SWQsIFZlY3Rvcjx1aW50OF90Pigp
LCBnZXRUZXN0U2lnblJlc3BvbnNlKCksIEF1dGhlbnRpY2F0b3JBdHRhY2htZW50OjpDcm9zc1Bs
YXRmb3JtKTsKKyAgICBhdXRvIHJlc3BvbnNlID0gcmVhZFUyZlNpZ25SZXNwb25zZShUZXN0RGF0
YTo6a1JlbHlpbmdQYXJ0eUlkLCBCdWZmZXJTb3VyY2UoKSwgZ2V0VGVzdFNpZ25SZXNwb25zZSgp
LCBBdXRoZW50aWNhdG9yQXR0YWNobWVudDo6Q3Jvc3NQbGF0Zm9ybSk7CiAgICAgRVhQRUNUX0ZB
TFNFKHJlc3BvbnNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1UyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QuY3BwCmluZGV4IDJi
OGI5NmJhYmYyYmVlYzAwYmJjYmIzMzMzOTg3MDM3MzBmYTBmNDQuLjFlMDQzOTQ3OTU4YTRmM2Qz
Yzk5YTdjOGRlZWQxYmU4OWU2ZWE4ZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VMmZDb21tYW5kQ29uc3RydWN0b3JUZXN0LmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvLyBDb3B5cmlnaHQgMjAxOCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC01MCw3ICs1MCw3IEBAIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMgY29u
c3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCkKICAgICBycC5uYW1lID0gImFjbWUuY29tIjsK
IAogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnM6OlVzZXJFbnRpdHkgdXNl
cjsKLSAgICB1c2VyLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtV
c2VySWQsIHNpemVvZihUZXN0RGF0YTo6a1VzZXJJZCkpOworICAgIHVzZXIuaWQgPSBXZWJDb3Jl
Ojp0b0J1ZmZlclNvdXJjZShUZXN0RGF0YTo6a1VzZXJJZCwgc2l6ZW9mKFRlc3REYXRhOjprVXNl
cklkKSk7CiAgICAgdXNlci5uYW1lID0gImpvaG5wc21pdGhAZXhhbXBsZS5jb20iOwogICAgIHVz
ZXIuZGlzcGxheU5hbWUgPSAiSm9obiBQLiBTbWl0aCI7CiAgICAgdXNlci5pY29uID0gImh0dHBz
Oi8vcGljcy5hY21lLmNvbS8wMC9wL2FCampqcHFQYi5wbmciOwpAQCAtMTEyLDcgKzExMiw3IEBA
IFRFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdENvbnZlcnRDdGFwTWFrZUNyZWRl
bnRpYWxUb1UyZkNoZWNrT25seVNpZ24pCiAgICAgYXV0byBtYWtlQ3JlZGVudGlhbFBhcmFtID0g
Y29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0KCk7CiAgICAgUHVibGljS2V5Q3JlZGVudGlh
bERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAgY3JlZGVudGlhbERlc2NyaXB0
b3IudHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7Ci0gICAgY3JlZGVu
dGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6
a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsK
KyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZCA9IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKFRl
c3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhh
bmRsZSkpOwogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gZXhjbHVk
ZUxpc3Q7CiAgICAgZXhjbHVkZUxpc3QuYXBwZW5kKGNyZWRlbnRpYWxEZXNjcmlwdG9yKTsKICAg
ICBtYWtlQ3JlZGVudGlhbFBhcmFtLmV4Y2x1ZGVDcmVkZW50aWFscyA9IFdURk1vdmUoZXhjbHVk
ZUxpc3QpOwpAQCAtMTI4LDcgKzEyOCw3IEBAIFRFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVz
dCwgVGVzdENvbnZlcnRDdGFwTWFrZUNyZWRlbnRpYWxUb1UyZkNoZWNrT25seVNpZ25XCiAgICAg
YXV0byBtYWtlQ3JlZGVudGlhbFBhcmFtID0gY29uc3RydWN0TWFrZUNyZWRlbnRpYWxSZXF1ZXN0
KCk7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0
b3I7CiAgICAgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9IHN0YXRpY19jYXN0PFB1YmxpY0tl
eUNyZWRlbnRpYWxUeXBlPigtMSk7Ci0gICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3Ig
PSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVv
ZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBjcmVkZW50aWFsRGVzY3JpcHRv
ci5pZCA9IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRs
ZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogICAgIFZlY3RvcjxQdWJs
aWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gZXhjbHVkZUxpc3Q7CiAgICAgZXhjbHVkZUxpc3Qu
YXBwZW5kKGNyZWRlbnRpYWxEZXNjcmlwdG9yKTsKICAgICBtYWtlQ3JlZGVudGlhbFBhcmFtLmV4
Y2x1ZGVDcmVkZW50aWFscyA9IFdURk1vdmUoZXhjbHVkZUxpc3QpOwpAQCAtMTQ1LDcgKzE0NSw3
IEBAIFRFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdFUyZlJlZ2lzdGVyQ3JlZGVu
dGlhbEFsZ29yaXRobVJlcXVpcmVtZW50KQogICAgIHJwLm5hbWUgPSAiYWNtZS5jb20iOwogCiAg
ICAgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uczo6VXNlckVudGl0eSB1c2VyOwot
ICAgIHVzZXIuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1VzZXJJ
ZCwgc2l6ZW9mKFRlc3REYXRhOjprVXNlcklkKSk7CisgICAgdXNlci5pZCA9IFdlYkNvcmU6OnRv
QnVmZmVyU291cmNlKFRlc3REYXRhOjprVXNlcklkLCBzaXplb2YoVGVzdERhdGE6OmtVc2VySWQp
KTsKICAgICB1c2VyLm5hbWUgPSAiam9obnBzbWl0aEBleGFtcGxlLmNvbSI7CiAgICAgdXNlci5k
aXNwbGF5TmFtZSA9ICJKb2huIFAuIFNtaXRoIjsKICAgICB1c2VyLmljb24gPSAiaHR0cHM6Ly9w
aWNzLmFjbWUuY29tLzAwL3AvYUJqampwcVBiLnBuZyI7CkBAIC0xODcsMTMgKzE4NywxMyBAQCBU
RVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RDb252ZXJ0Q3RhcEdldEFzc2VydGlv
blRvVTJmU2lnblJlcXVlc3QpCiAgICAgYXV0byBnZXRBc3NlcnRpb25SZXEgPSBjb25zdHJ1Y3RH
ZXRBc3NlcnRpb25SZXF1ZXN0KCk7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3Ig
Y3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAgY3JlZGVudGlhbERlc2NyaXB0b3IudHlwZSA9IFB1
YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7Ci0gICAgY3JlZGVudGlhbERlc2NyaXB0
b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1UyZlNpZ25LZXlI
YW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAgICBjcmVkZW50
aWFsRGVzY3JpcHRvci5pZCA9IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKFRlc3REYXRhOjprVTJm
U2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpOwogICAg
IFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dlZExpc3Q7CiAgICAg
YWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2NyaXB0b3IpKTsKICAgICBn
ZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUoYWxsb3dlZExpc3QpOwog
ICAgIEVYUEVDVF9UUlVFKGlzQ29udmVydGlibGVUb1UyZlNpZ25Db21tYW5kKGdldEFzc2VydGlv
blJlcSkpOwogCi0gICAgY29uc3QgYXV0byB1MmZTaWduQ29tbWFuZCA9IGNvbnZlcnRUb1UyZlNp
Z25Db21tYW5kKGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gs
IHNpemVvZihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoKSksIGdldEFzc2VydGlvblJlcSwgY29u
dmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVz
dERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSkpOworICAgIGNvbnN0IGF1dG8gdTJmU2lnbkNvbW1h
bmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0
YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCkpLCBn
ZXRBc3NlcnRpb25SZXEsIFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKFRlc3REYXRhOjprVTJmU2ln
bktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSkpKTsKICAgICBB
U1NFUlRfVFJVRSh1MmZTaWduQ29tbWFuZCk7CiAgICAgRVhQRUNUX0VRKCp1MmZTaWduQ29tbWFu
ZCwgY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtVMmZTaWduQ29tbWFuZEFwZHUsIHNp
emVvZihUZXN0RGF0YTo6a1UyZlNpZ25Db21tYW5kQXBkdSkpKTsKIH0KQEAgLTIwMyw3ICsyMDMs
NyBAQCBURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRlc3QsIFRlc3RDb252ZXJ0Q3RhcEdldEFz
c2VydGlvbldpdGhBcHBJRFRvVTJmU2lnblJlcQogICAgIGF1dG8gZ2V0QXNzZXJ0aW9uUmVxID0g
Y29uc3RydWN0R2V0QXNzZXJ0aW9uUmVxdWVzdCgpOwogICAgIFB1YmxpY0tleUNyZWRlbnRpYWxE
ZXNjcmlwdG9yIGNyZWRlbnRpYWxEZXNjcmlwdG9yOwogICAgIGNyZWRlbnRpYWxEZXNjcmlwdG9y
LnR5cGUgPSBQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6UHVibGljS2V5OwotICAgIGNyZWRlbnRp
YWxEZXNjcmlwdG9yLmlkVmVjdG9yID0gY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtV
MmZTaWduS2V5SGFuZGxlLCBzaXplb2YoVGVzdERhdGE6OmtVMmZTaWduS2V5SGFuZGxlKSk7Cisg
ICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWQgPSBXZWJDb3JlOjp0b0J1ZmZlclNvdXJjZShUZXN0
RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5k
bGUpKTsKICAgICBWZWN0b3I8UHVibGljS2V5Q3JlZGVudGlhbERlc2NyaXB0b3I+IGFsbG93ZWRM
aXN0OwogICAgIGFsbG93ZWRMaXN0LmFwcGVuZChXVEZNb3ZlKGNyZWRlbnRpYWxEZXNjcmlwdG9y
KSk7CiAgICAgZ2V0QXNzZXJ0aW9uUmVxLmFsbG93Q3JlZGVudGlhbHMgPSBXVEZNb3ZlKGFsbG93
ZWRMaXN0KTsKQEAgLTIxNCw3ICsyMTQsNyBAQCBURVNUKFUyZkNvbW1hbmRDb25zdHJ1Y3RvclRl
c3QsIFRlc3RDb252ZXJ0Q3RhcEdldEFzc2VydGlvbldpdGhBcHBJRFRvVTJmU2lnblJlcQogICAg
IGV4dGVuc2lvbnMuYXBwaWQgPSAiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vYXBwaWQiOwogICAg
IGdldEFzc2VydGlvblJlcS5leHRlbnNpb25zID0gV1RGTW92ZShleHRlbnNpb25zKTsKIAotICAg
IGNvbnN0IGF1dG8gdTJmU2lnbkNvbW1hbmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb252
ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERh
dGE6OmtDbGllbnREYXRhSGFzaCkpLCBnZXRBc3NlcnRpb25SZXEsIGNvbnZlcnRCeXRlc1RvVmVj
dG9yKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2ln
bktleUhhbmRsZSkpLCB0cnVlKTsKKyAgICBjb25zdCBhdXRvIHUyZlNpZ25Db21tYW5kID0gY29u
dmVydFRvVTJmU2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGll
bnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0
aW9uUmVxLCBXZWJDb3JlOjp0b0J1ZmZlclNvdXJjZShUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5k
bGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKSwgdHJ1ZSk7CiAgICAgQVNT
RVJUX1RSVUUodTJmU2lnbkNvbW1hbmQpOwogICAgIEVYUEVDVF9FUSgqdTJmU2lnbkNvbW1hbmQs
IGNvbnZlcnRCeXRlc1RvVmVjdG9yKFRlc3REYXRhOjprVTJmQXBwSURTaWduQ29tbWFuZEFwZHUs
IHNpemVvZihUZXN0RGF0YTo6a1UyZkFwcElEU2lnbkNvbW1hbmRBcGR1KSkpOwogfQpAQCAtMjMw
LDcgKzIzMCw3IEBAIFRFU1QoVTJmQ29tbWFuZENvbnN0cnVjdG9yVGVzdCwgVGVzdFUyZlNpZ25V
c2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQpCiAgICAgYXV0byBnZXRBc3NlcnRpb25SZXEgPSBj
b25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CiAgICAgUHVibGljS2V5Q3JlZGVudGlhbERl
c2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAgY3JlZGVudGlhbERlc2NyaXB0b3Iu
dHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7Ci0gICAgY3JlZGVudGlh
bERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3RvcihUZXN0RGF0YTo6a1Uy
ZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUpKTsKKyAg
ICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZCA9IFdlYkNvcmU6OnRvQnVmZmVyU291cmNlKFRlc3RE
YXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRs
ZSkpOwogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3JpcHRvcj4gYWxsb3dlZExp
c3Q7CiAgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVudGlhbERlc2NyaXB0b3Ip
KTsKICAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9IFdURk1vdmUoYWxsb3dl
ZExpc3QpOwpAQCAtMjQ0LDE4ICsyNDQsMTggQEAgVEVTVChVMmZDb21tYW5kQ29uc3RydWN0b3JU
ZXN0LCBUZXN0Q3JlYXRlU2lnbldpdGhJbmNvcnJlY3RLZXlIYW5kbGUpCiAgICAgYXV0byBnZXRB
c3NlcnRpb25SZXEgPSBjb25zdHJ1Y3RHZXRBc3NlcnRpb25SZXF1ZXN0KCk7CiAgICAgUHVibGlj
S2V5Q3JlZGVudGlhbERlc2NyaXB0b3IgY3JlZGVudGlhbERlc2NyaXB0b3I7CiAgICAgY3JlZGVu
dGlhbERlc2NyaXB0b3IudHlwZSA9IFB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXk7
Ci0gICAgY3JlZGVudGlhbERlc2NyaXB0b3IuaWRWZWN0b3IgPSBjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a1UyZlNpZ25LZXlIYW5kbGUsIHNpemVvZihUZXN0RGF0YTo6a1UyZlNpZ25L
ZXlIYW5kbGUpKTsKKyAgICBjcmVkZW50aWFsRGVzY3JpcHRvci5pZCA9IFdlYkNvcmU6OnRvQnVm
ZmVyU291cmNlKFRlc3REYXRhOjprVTJmU2lnbktleUhhbmRsZSwgc2l6ZW9mKFRlc3REYXRhOjpr
VTJmU2lnbktleUhhbmRsZSkpOwogICAgIFZlY3RvcjxQdWJsaWNLZXlDcmVkZW50aWFsRGVzY3Jp
cHRvcj4gYWxsb3dlZExpc3Q7CiAgICAgYWxsb3dlZExpc3QuYXBwZW5kKFdURk1vdmUoY3JlZGVu
dGlhbERlc2NyaXB0b3IpKTsKICAgICBnZXRBc3NlcnRpb25SZXEuYWxsb3dDcmVkZW50aWFscyA9
IFdURk1vdmUoYWxsb3dlZExpc3QpOwogICAgIEFTU0VSVF9UUlVFKGlzQ29udmVydGlibGVUb1Uy
ZlNpZ25Db21tYW5kKGdldEFzc2VydGlvblJlcSkpOwogCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtl
eUhhbmRsZShrTWF4S2V5SGFuZGxlTGVuZ3RoLCAweGZmKTsKLSAgICBjb25zdCBhdXRvIHZhbGlk
U2lnbkNvbW1hbmQgPSBjb252ZXJ0VG9VMmZTaWduQ29tbWFuZChjb252ZXJ0Qnl0ZXNUb1ZlY3Rv
cihUZXN0RGF0YTo6a0NsaWVudERhdGFIYXNoLCBzaXplb2YoVGVzdERhdGE6OmtDbGllbnREYXRh
SGFzaCkpLCBnZXRBc3NlcnRpb25SZXEsIGtleUhhbmRsZSk7CisgICAgY29uc3QgYXV0byB2YWxp
ZFNpZ25Db21tYW5kID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29udmVydEJ5dGVzVG9WZWN0
b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xpZW50RGF0
YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVxLCBXZWJDb3JlOjp0b0J1ZmZlclNvdXJjZShrZXlIYW5k
bGUuZGF0YSgpLCBrZXlIYW5kbGUuc2l6ZSgpKSk7CiAgICAgRVhQRUNUX1RSVUUodmFsaWRTaWdu
Q29tbWFuZCk7CiAKICAgICBrZXlIYW5kbGUuYXBwZW5kKDB4ZmYpOwotICAgIGNvbnN0IGF1dG8g
aW52YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29udmVydEJ5dGVz
VG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjprQ2xp
ZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVxLCBrZXlIYW5kbGUpOworICAgIGNvbnN0IGF1
dG8gaW52YWxpZFNpZ25Db21tYW5kID0gY29udmVydFRvVTJmU2lnbkNvbW1hbmQoY29udmVydEJ5
dGVzVG9WZWN0b3IoVGVzdERhdGE6OmtDbGllbnREYXRhSGFzaCwgc2l6ZW9mKFRlc3REYXRhOjpr
Q2xpZW50RGF0YUhhc2gpKSwgZ2V0QXNzZXJ0aW9uUmVxLCBXZWJDb3JlOjp0b0J1ZmZlclNvdXJj
ZShrZXlIYW5kbGUuZGF0YSgpLCBrZXlIYW5kbGUuc2l6ZSgpKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KGludmFsaWRTaWduQ29tbWFuZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5lbC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tbQppbmRleCAxY2M0YzcxZWNhY2ZkZDk4MGQ0N2MzZjU3ZDg4YTk0ODRhYWQzZDNjLi40OWQ1
NDE4ZmUxMTA5YThhNzIyOTBlZjA3MjJhM2E5NjViOWEyZWVjIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE2MjMsOCArMTYyMyw4IEBAIFRFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc01pbmltdW4pCiAKICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LnVzZXIubmFtZSwgImphcHBsZXNlZWRAZXhhbXBsZS5j
b20iKTsKICAgICBFWFBFQ1RfVFJVRShyZXN1bHQudXNlci5pY29uLmlzTnVsbCgpKTsKLSAgICBF
WFBFQ1RfRVEocmVzdWx0LnVzZXIuaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikp
OwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LnVzZXIuaWRWZWN0b3IuZGF0YSgpLCBpZGVu
dGlmaWVyLCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LnVz
ZXIuaWQubGVuZ3RoKCksIHNpemVvZihpZGVudGlmaWVyKSk7CisgICAgRVhQRUNUX0VRKG1lbWNt
cChyZXN1bHQudXNlci5pZC5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSks
IDApOwogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5kaXNwbGF5TmFtZSwgIkogQXBw
bGVzZWVkIik7CiAKICAgICBFWFBFQ1RfRVEocmVzdWx0LnB1YktleUNyZWRQYXJhbXMuc2l6ZSgp
LCAxbHUpOwpAQCAtMTY2Nyw4ICsxNjY3LDggQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11bURlZmF1bHQpCiAKICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LnVzZXIubmFtZSwgImphcHBsZXNlZWRAZXhhbXBsZS5j
b20iKTsKICAgICBFWFBFQ1RfVFJVRShyZXN1bHQudXNlci5pY29uLmlzTnVsbCgpKTsKLSAgICBF
WFBFQ1RfRVEocmVzdWx0LnVzZXIuaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikp
OwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LnVzZXIuaWRWZWN0b3IuZGF0YSgpLCBpZGVu
dGlmaWVyLCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LnVz
ZXIuaWQubGVuZ3RoKCksIHNpemVvZihpZGVudGlmaWVyKSk7CisgICAgRVhQRUNUX0VRKG1lbWNt
cChyZXN1bHQudXNlci5pZC5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSks
IDApOwogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5kaXNwbGF5TmFtZSwgIkogQXBw
bGVzZWVkIik7CiAKICAgICBFWFBFQ1RfRVEocmVzdWx0LnB1YktleUNyZWRQYXJhbXMuc2l6ZSgp
LCAybHUpOwpAQCAtMTY4MSw4ICsxNjgxLDggQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVs
LCBQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11bURlZmF1bHQpCiAKICAg
ICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFscy5zaXplKCksIDFsdSk7CiAgICAg
RVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHNbMF0udHlwZSwgV2ViQ29yZTo6UHVi
bGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1YmxpY0tleSk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5l
eGNsdWRlQ3JlZGVudGlhbHNbMF0uaWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikp
OwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZFZl
Y3Rvci5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOworICAgIEVY
UEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLmlkLmxlbmd0aCgpLCBzaXplb2Yo
aWRlbnRpZmllcikpOworICAgIEVYUEVDVF9FUShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVkZW50
aWFsc1swXS5pZC5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwog
CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hdXRoZW50aWNhdG9yU2VsZWN0aW9uLT5hdXRoZW50aWNh
dG9yQXR0YWNobWVudCwgc3RkOjpudWxsb3B0KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmF1dGhl
bnRpY2F0b3JTZWxlY3Rpb24tPnJlcXVpcmVSZXNpZGVudEtleSwgZmFsc2UpOwpAQCAtMTczNCw4
ICsxNzM0LDggQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50
aWFsQ3JlYXRpb25PcHRpb25zTWF4aW11bTEpCiAKICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0
LnVzZXIubmFtZSwgImphcHBsZXNlZWRAZXhhbXBsZS5jb20iKTsKICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzdWx0LnVzZXIuaWNvbiwgQCJodHRwcy8vd3d3LmV4YW1wbGUuY29tL2ljb24uanBnIik7
Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC51c2VyLmlkVmVjdG9yLnNpemUoKSwgc2l6ZW9mKGlkZW50
aWZpZXIpKTsKLSAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3VsdC51c2VyLmlkVmVjdG9yLmRhdGEo
KSwgaWRlbnRpZmllciwgc2l6ZW9mKGlkZW50aWZpZXIpKSwgMCk7CisgICAgRVhQRUNUX0VRKHJl
c3VsdC51c2VyLmlkLmxlbmd0aCgpLCBzaXplb2YoaWRlbnRpZmllcikpOworICAgIEVYUEVDVF9F
UShtZW1jbXAocmVzdWx0LnVzZXIuaWQuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRp
ZmllcikpLCAwKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzdWx0LnVzZXIuZGlzcGxheU5hbWUs
ICJKIEFwcGxlc2VlZCIpOwogCiAgICAgRVhQRUNUX0VRKHJlc3VsdC5wdWJLZXlDcmVkUGFyYW1z
LnNpemUoKSwgMmx1KTsKQEAgLTE3NDgsOCArMTc0OCw4IEBAIFRFU1QoV2ViQXV0aGVudGljYXRp
b25QYW5lbCwgUHVibGljS2V5Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9uc01heGltdW0xKQogCiAg
ICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHMuc2l6ZSgpLCAybHUpOwogICAg
IEVYUEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLnR5cGUsIFdlYkNvcmU6OlB1
YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNLZXkpOwotICAgIEVYUEVDVF9FUShyZXN1bHQu
ZXhjbHVkZUNyZWRlbnRpYWxzWzBdLmlkVmVjdG9yLnNpemUoKSwgc2l6ZW9mKGlkZW50aWZpZXIp
KTsKLSAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHNbMF0uaWRW
ZWN0b3IuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBF
WFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZC5sZW5ndGgoKSwgc2l6ZW9m
KGlkZW50aWZpZXIpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21wKHJlc3VsdC5leGNsdWRlQ3JlZGVu
dGlhbHNbMF0uaWQuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRpZmllcikpLCAwKTsK
ICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS50cmFuc3BvcnRzLnNp
emUoKSwgM2x1KTsKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS50
cmFuc3BvcnRzWzBdLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2IpOwogICAgIEVYUEVDVF9F
UShyZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLnRyYW5zcG9ydHNbMV0sIEF1dGhlbnRpY2F0
b3JUcmFuc3BvcnQ6Ok5mYyk7CkBAIC0xODA0LDggKzE4MDQsOCBAQCBURVNUKFdlYkF1dGhlbnRp
Y2F0aW9uUGFuZWwsIFB1YmxpY0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnNNYXhpbXVtMikK
IAogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5uYW1lLCAiamFwcGxlc2VlZEBleGFt
cGxlLmNvbSIpOwogICAgIEVYUEVDVF9XS19TVFJFUShyZXN1bHQudXNlci5pY29uLCBAImh0dHBz
Ly93d3cuZXhhbXBsZS5jb20vaWNvbi5qcGciKTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0LnVzZXIu
aWRWZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwotICAgIEVYUEVDVF9FUShtZW1j
bXAocmVzdWx0LnVzZXIuaWRWZWN0b3IuZGF0YSgpLCBpZGVudGlmaWVyLCBzaXplb2YoaWRlbnRp
ZmllcikpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LnVzZXIuaWQubGVuZ3RoKCksIHNpemVv
ZihpZGVudGlmaWVyKSk7CisgICAgRVhQRUNUX0VRKG1lbWNtcChyZXN1bHQudXNlci5pZC5kYXRh
KCksIGlkZW50aWZpZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwogICAgIEVYUEVDVF9XS19T
VFJFUShyZXN1bHQudXNlci5kaXNwbGF5TmFtZSwgIkogQXBwbGVzZWVkIik7CiAKICAgICBFWFBF
Q1RfRVEocmVzdWx0LnB1YktleUNyZWRQYXJhbXMuc2l6ZSgpLCAybHUpOwpAQCAtMTgxOCw4ICsx
ODE4LDggQEAgVEVTVChXZWJBdXRoZW50aWNhdGlvblBhbmVsLCBQdWJsaWNLZXlDcmVkZW50aWFs
Q3JlYXRpb25PcHRpb25zTWF4aW11bTIpCiAKICAgICBFWFBFQ1RfRVEocmVzdWx0LmV4Y2x1ZGVD
cmVkZW50aWFscy5zaXplKCksIDJsdSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3Jl
ZGVudGlhbHNbMF0udHlwZSwgV2ViQ29yZTo6UHVibGljS2V5Q3JlZGVudGlhbFR5cGU6OlB1Ymxp
Y0tleSk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHNbMF0uaWRWZWN0
b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwotICAgIEVYUEVDVF9FUShtZW1jbXAocmVz
dWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5kYXRhKCksIGlkZW50aWZpZXIsIHNp
emVvZihpZGVudGlmaWVyKSksIDApOworICAgIEVYUEVDVF9FUShyZXN1bHQuZXhjbHVkZUNyZWRl
bnRpYWxzWzBdLmlkLmxlbmd0aCgpLCBzaXplb2YoaWRlbnRpZmllcikpOworICAgIEVYUEVDVF9F
UShtZW1jbXAocmVzdWx0LmV4Y2x1ZGVDcmVkZW50aWFsc1swXS5pZC5kYXRhKCksIGlkZW50aWZp
ZXIsIHNpemVvZihpZGVudGlmaWVyKSksIDApOwogICAgIEVYUEVDVF9FUShyZXN1bHQuZXhjbHVk
ZUNyZWRlbnRpYWxzWzBdLnRyYW5zcG9ydHMuc2l6ZSgpLCAzbHUpOwogICAgIEVYUEVDVF9FUShy
ZXN1bHQuZXhjbHVkZUNyZWRlbnRpYWxzWzBdLnRyYW5zcG9ydHNbMF0sIEF1dGhlbnRpY2F0b3JU
cmFuc3BvcnQ6OlVzYik7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5leGNsdWRlQ3JlZGVudGlhbHNb
MF0udHJhbnNwb3J0c1sxXSwgQXV0aGVudGljYXRvclRyYW5zcG9ydDo6TmZjKTsKQEAgLTE5MzEs
OCArMTkzMSw4IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zTWF4aW11bURlZmF1bHQpCiAKICAgICBFWFBFQ1RfRVEocmVzdWx0
LmFsbG93Q3JlZGVudGlhbHMuc2l6ZSgpLCAxbHUpOwogICAgIEVYUEVDVF9FUShyZXN1bHQuYWxs
b3dDcmVkZW50aWFsc1swXS50eXBlLCBXZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsVHlwZTo6
UHVibGljS2V5KTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0LmFsbG93Q3JlZGVudGlhbHNbMF0uaWRW
ZWN0b3Iuc2l6ZSgpLCBzaXplb2YoaWRlbnRpZmllcikpOwotICAgIEVYUEVDVF9FUShtZW1jbXAo
cmVzdWx0LmFsbG93Q3JlZGVudGlhbHNbMF0uaWRWZWN0b3IuZGF0YSgpLCBpZGVudGlmaWVyLCBz
aXplb2YoaWRlbnRpZmllcikpLCAwKTsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LmFsbG93Q3JlZGVu
dGlhbHNbMF0uaWQubGVuZ3RoKCksIHNpemVvZihpZGVudGlmaWVyKSk7CisgICAgRVhQRUNUX0VR
KG1lbWNtcChyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1swXS5pZC5kYXRhKCksIGlkZW50aWZpZXIs
IHNpemVvZihpZGVudGlmaWVyKSksIDApOwogCiAgICAgRVhQRUNUX0VRKHJlc3VsdC51c2VyVmVy
aWZpY2F0aW9uLCBVc2VyVmVyaWZpY2F0aW9uUmVxdWlyZW1lbnQ6OlByZWZlcnJlZCk7CiAgICAg
RVhQRUNUX1RSVUUocmVzdWx0LmV4dGVuc2lvbnMtPmFwcGlkLmlzTnVsbCgpKTsKQEAgLTE5NjUs
OCArMTk2NSw4IEBAIFRFU1QoV2ViQXV0aGVudGljYXRpb25QYW5lbCwgUHVibGljS2V5Q3JlZGVu
dGlhbFJlcXVlc3RPcHRpb25zTWF4aW11bSkKIAogICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dD
cmVkZW50aWFscy5zaXplKCksIDJsdSk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hbGxvd0NyZWRl
bnRpYWxzWzBdLnR5cGUsIFdlYkNvcmU6OlB1YmxpY0tleUNyZWRlbnRpYWxUeXBlOjpQdWJsaWNL
ZXkpOwotICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5z
aXplKCksIHNpemVvZihpZGVudGlmaWVyKSk7Ci0gICAgRVhQRUNUX0VRKG1lbWNtcChyZXN1bHQu
YWxsb3dDcmVkZW50aWFsc1swXS5pZFZlY3Rvci5kYXRhKCksIGlkZW50aWZpZXIsIHNpemVvZihp
ZGVudGlmaWVyKSksIDApOworICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1sw
XS5pZC5sZW5ndGgoKSwgc2l6ZW9mKGlkZW50aWZpZXIpKTsKKyAgICBFWFBFQ1RfRVEobWVtY21w
KHJlc3VsdC5hbGxvd0NyZWRlbnRpYWxzWzBdLmlkLmRhdGEoKSwgaWRlbnRpZmllciwgc2l6ZW9m
KGlkZW50aWZpZXIpKSwgMCk7CiAgICAgRVhQRUNUX0VRKHJlc3VsdC5hbGxvd0NyZWRlbnRpYWxz
WzBdLnRyYW5zcG9ydHMuc2l6ZSgpLCAzbHUpOwogICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dD
cmVkZW50aWFsc1swXS50cmFuc3BvcnRzWzBdLCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpVc2Ip
OwogICAgIEVYUEVDVF9FUShyZXN1bHQuYWxsb3dDcmVkZW50aWFsc1swXS50cmFuc3BvcnRzWzFd
LCBBdXRoZW50aWNhdG9yVHJhbnNwb3J0OjpOZmMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>