<?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>190946</bug_id>
          
          <creation_ts>2018-10-26 00:22:36 -0700</creation_ts>
          <short_desc>[EME][Cocoa] Cannot play unmuxed video and audio fMP4 streams encrypted with different keys via MSE</short_desc>
          <delta_ts>2018-10-31 13:23:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472346</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-26 00:22:36 -0700</bug_when>
    <thetext>-[EME][Cocoa] Cannot play unmuxed video and audio fMP4 streams encrypted with different keys via MSE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472348</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-26 00:24:00 -0700</bug_when>
    <thetext>&lt;rdar://problem/39383051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472349</commentid>
    <comment_count>2</comment_count>
      <attachid>353161</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-26 00:33:52 -0700</bug_when>
    <thetext>Created attachment 353161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472941</commentid>
    <comment_count>3</comment_count>
      <attachid>353297</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-29 10:21:48 -0700</bug_when>
    <thetext>Created attachment 353297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473133</commentid>
    <comment_count>4</comment_count>
      <attachid>353297</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-10-29 17:16:28 -0700</bug_when>
    <thetext>Comment on attachment 353297
Patch

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

&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:108
&gt; +    AVContentKeySession* contentKeySession() { return m_session.get(); }

Can m_session ever be null? If so, should you return ensureSession() instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473342</commentid>
    <comment_count>5</comment_count>
      <attachid>353297</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-30 11:34:20 -0700</bug_when>
    <thetext>Comment on attachment 353297
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.h:108
&gt;&gt; +    AVContentKeySession* contentKeySession() { return m_session.get(); }
&gt; 
&gt; Can m_session ever be null? If so, should you return ensureSession() instead?

The m_session is set at creation time (in requestLicense(), which is called immediately after the object is created). It can only be null if there was an error when creating the AVContentKeySession. This is an objc object, so returning nil is fine, and we probably don&apos;t want to call ensureSession() all the time if the initial ensure() failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473842</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2018-10-31 13:23:53 -0700</bug_when>
    <thetext>Committed r237649: &lt;https://trac.webkit.org/changeset/237649&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353161</attachid>
            <date>2018-10-26 00:33:52 -0700</date>
            <delta_ts>2018-10-29 10:21:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190946-20181026093350.patch</filename>
            <type>text/plain</type>
            <size>53465</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmQ0NzYyYTgwYTQ5ZmQy
YThhNjU3MjJmMzM3ZDUwNzA5MmEwMjRmNC4uNzk5MDEyZDlkMDk5OWFmMThlMGQ2MTk4MTgzMmFk
NTZmMmZlNDljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE4LTEwLTI2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtFTUVdW0NvY29hXSBDYW5u
b3QgcGxheSB1bm11eGVkIHZpZGVvIGFuZCBhdWRpbyBmTVA0IHN0cmVhbXMgZW5jcnlwdGVkIHdp
dGggZGlmZmVyZW50IGtleXMgdmlhIE1TRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIHNlcGFyYXRlIEFWQ29udGVudEtleVNlc3Npb25zIHBlciBD
RE1JbnN0YW5jZVNlc3Npb24gKHJhdGhlciB0aGFuIG9uZSBBVkNvbnRlbnRLZXlTZXNzaW9uIHBl
cgorICAgICAgICBDRE1JbnN0YW5jZSkuCisKKyAgICAgICAgLSBBZGQgYSBtZWNoYW5pc20gZm9y
IHNlbmRpbmcgYSBtZXNzYWdlIG91dCBmcm9tIHBsYXRmb3JtL0NETUluc3RhbmNlIHRvIE1lZGlh
S2V5U2Vzc2lvbiB3aXRob3V0CisgICAgICAgICAgcmVxdWlyaW5nIE1lZGlhS2V5U2Vzc2lvbiB0
byBzZW5kIGEgY2FsbGJhY2sgZmlyc3QuCisKKyAgICAgICAgLSBNb3ZlIGFsbCB0aGUgQVZDb250
ZW50S2V5U2Vzc2lvbiBkZWxlZ2F0ZSBtZXRob2RzIGZyb20gQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMgdG8KKyAgICAgICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuCisKKyAgICAgICAgLSBBZGQgYSBtZWNoYW5pc20gZm9yIHJlcXVlc3Rp
bmcgdGhlIGNvcnJlY3QgQ0RNSW5zdGFuY2VTZXNzaW9uIGZvciBhIGdpdmVuIEtleUlELgorCisg
ICAgICAgIC0gU3VwcG9ydCBrZXkgcmVuZXdhbCB0aHJvdWdoIGEgInJlbmV3IiBtZXNzYWdlLgor
CisgICAgICAgIC0gUmVtZW1iZXIgdGhlIGtleUlEIGluIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKCkKKyAgICAgICAgICBhbmQgYXNrIGZvciB0aGUgY29ycmVjdCBDRE1JbnN0YW5jZVNlc3Np
b24gZm9yIHRoYXQga2V5SUQgaW4gYXR0ZW1wdFRvRGVjcnlwdCgpLgorCisgICAgICAgIC0gUGFz
cyB0aGUgQ0RNSW5zdGFuY2UgZG93biBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyAtPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy4KKworICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUZQU0NvbnRl
bnRLZXlTZXNzaW9uRGVsZWdhdGUgaW5pdFdpdGhQYXJlbnQ6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50
RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbkZvcktleUlEcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6On5DRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92
ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZXF1ZXN0RGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcXVlc3RTdGF0dXNUb0NETVN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdp
dGhJbnN0YW5jZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQ
cm90ZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjZG1JbnN0YW5jZURldGFj
aGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OndhaXRpbmdGb3JLZXkgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNkbUluc3RhbmNlQXR0YWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y2RtSW5zdGFu
Y2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakM6OndhaXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3Vm
ZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGVzdHJveVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6c2V0Q0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRl
cm5hbFByb3RlY3Rpb25DaGFuZ2VkKToKKwogMjAxOC0xMC0yMiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgV2Vha1B0ciBhbmQgR2VuZXJpY1Rhc2tRdWV1
ZSB3aXRoaW4gT2JqQyBjbGFzc2VzIHVzZWQgYnkgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uT2JqQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGNlYjc0MWE4OTUwYjljZGNlYmNhNWQ5NjRh
M2EwMDg4MTRiNjAzOTUuLmU2ODY5MzA4MjQxNTcwNzQzYmZiYTZiMTc3ZjIzZDdhODUyOGE2MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlh
L01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTY1MSw2ICs2NTEsMTEgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZUtleVN0YXR1c2VzKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYgaW4KICAgICAgICAgfSk7CiB9CiAKK3ZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZW5kTWVz
c2FnZShDRE1NZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKQoreworICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKK30KKwog
dm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZUV4cGlyYXRpb24oZG91YmxlKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCA5ZTVmZDg3MGMzZGU1OGE3MDI3YzQx
MmYyZjc5NWJhZTQwNDVmOWU1Li4zNWQ4MTc0MjY4Y2FiMWQ3OGQ1ZjU2MGI2MmI0MDA5YmE2MTg1
MjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlTZXNzaW9uLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IENETUluc3RhbmNlU2Vzc2lvbkNsaWVudAogICAgIHZvaWQgdXBkYXRlS2V5U3RhdHVzZXMoQ0RN
SW5zdGFuY2VTZXNzaW9uQ2xpZW50OjpLZXlTdGF0dXNWZWN0b3ImJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNz
YWdlKSBmaW5hbDsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBNZWRpYUtl
eVNlc3Npb25FdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUluc3RhbmNlU2Vzc2lvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
aW5kZXggY2YzYjJkNDMzYzY0MzU2MmQ0Yjk3YWM2OWNhZjQ1NjYwOWE0MmJhZC4uYWE0OGYzNzM0
MjZkZThmYWRjOWQzMDAxZTQwMzNlYzEzOWNkYmY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmgK
QEAgLTQ1LDYgKzQ1LDcgQEAgcHVibGljOgogICAgIHVzaW5nIEtleVN0YXR1cyA9IENETUtleVN0
YXR1czsKICAgICB1c2luZyBLZXlTdGF0dXNWZWN0b3IgPSBWZWN0b3I8c3RkOjpwYWlyPFJlZjxT
aGFyZWRCdWZmZXI+LCBLZXlTdGF0dXM+PjsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlS2V5U3Rh
dHVzZXMoS2V5U3RhdHVzVmVjdG9yJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3Nh
Z2UoQ0RNTWVzc2FnZVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSkgPSAwOwogfTsK
IAogY2xhc3MgQ0RNSW5zdGFuY2VTZXNzaW9uIDogcHVibGljIFJlZkNvdW50ZWQ8Q0RNSW5zdGFu
Y2VTZXNzaW9uPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaAppbmRleCA1ZWY4NDFkMDNhYjNhMWEx
YjZlYWFhYTQyOTUxYmQ2YTBhNzdkZmMyLi5kN2ExOTAwZjEwNTI2OTM3YTdkZmUyNGY2YWE0MDEy
NGUyODhhMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKQEAgLTQ4LDggKzQ4LDcgQEAgc3Ry
dWN0IENETU1lZGlhQ2FwYWJpbGl0eTsKIAogY2xhc3MgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMgZmluYWwgOiBwdWJsaWMgQ0RNSW5zdGFuY2UsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gewogcHVibGljOgotICAg
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCk7Ci0gICAgdmlydHVhbCB+Q0RN
SW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKTsKKyAgICB2aXJ0dWFsIH5DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpID0gZGVmYXVsdDsKIAogICAgIHN0YXRpYyBi
b29sIHN1cHBvcnRzUGVyc2lzdGFibGVTdGF0ZSgpOwogICAgIHN0YXRpYyBib29sIHN1cHBvcnRz
UGVyc2lzdGVudEtleXMoKTsKQEAgLTY1LDQ2ICs2NCwyNiBAQCBwdWJsaWM6CiAgICAgU3VjY2Vz
c1ZhbHVlIHNldFN0b3JhZ2VEaXJlY3RvcnkoY29uc3QgU3RyaW5nJikgZmluYWw7CiAgICAgUmVm
UHRyPENETUluc3RhbmNlU2Vzc2lvbj4gY3JlYXRlU2Vzc2lvbigpIGZpbmFsOwogCi0gICAgdm9p
ZCBwcm9jZXNzQ29udGVudEtleVJlcXVlc3RGb3JTZXNzaW9uKENETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQyYsIFJldGFpblB0cjxOU1N0cmluZz4mJiBpZGVudGlmaWVy
LCBSZXRhaW5QdHI8TlNEYXRhPiYmIGluaXREYXRhKTsKLQogICAgIGNvbnN0IFN0cmluZyYga2V5
U3lzdGVtKCkgY29uc3QgZmluYWw7CiAKLSAgICB2b2lkIGRpZFByb3ZpZGVSZXF1ZXN0KEFWQ29u
dGVudEtleVJlcXVlc3QgKik7Ci0gICAgdm9pZCBkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFW
Q29udGVudEtleVJlcXVlc3QgKik7Ci0gICAgdm9pZCBkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1
ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKik7Ci0gICAgdm9pZCBkaWRGYWlsVG9Qcm92aWRlUmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICosIE5TRXJyb3IgKik7Ci0gICAgdm9pZCByZXF1ZXN0
RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICopOwotICAgIGJvb2wgc2hvdWxkUmV0cnlS
ZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QgKiwgTlNTdHJpbmcgKik7Ci0gICAg
dm9pZCBzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICopOwotICAgIHZvaWQgb3V0cHV0
T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCk7
Ci0KICAgICBOU1VSTCAqc3RvcmFnZURpcmVjdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFn
ZURpcmVjdG9yeS5nZXQoKTsgfQotICAgIEFWQ29udGVudEtleVNlc3Npb24gKmNvbnRlbnRLZXlT
ZXNzaW9uKCkgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9CiAgICAgYm9vbCBwZXJzaXN0ZW50
U3RhdGVBbGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkOyB9
CiAgICAgU2hhcmVkQnVmZmVyKiBzZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmVyQ2VydGlmaWNhdGUuZ2V0KCk7IH0KIAotcHJpdmF0ZToKLSAgICB2b2lkIHByb2Nlc3NO
ZXh0Q29udGVudEtleVJlcXVlc3QoKTsKLQotICAgIHN0cnVjdCBDb250ZW50S2V5UmVxdWVzdCB7
Ci0gICAgICAgIFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDPiBzZXNzaW9uSW5zdGFuY2U7Ci0gICAgICAgIFJldGFpblB0cjxOU1N0cmluZz4gaWRlbnRp
ZmllcjsKLSAgICAgICAgUmV0YWluUHRyPE5TRGF0YT4gaW5pdERhdGE7Ci0gICAgfTsKLSAgICBW
ZWN0b3I8Q29udGVudEtleVJlcXVlc3Q+IG1fY3VycmVudFJlcXVlc3RzOwotCi0gICAgSGFzaE1h
cDxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4sIFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPj4gbV9yZXF1ZXN0TWFwOworICAgIHZvaWQgb3V0
cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9v
bCk7CisgICAgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKiBzZXNz
aW9uRm9yS2V5SURzKGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4mKSBjb25zdDsKIAor
cHJpdmF0ZToKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX3NlcnZlckNlcnRpZmljYXRlOwog
ICAgIGJvb2wgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkIHsgdHJ1ZSB9OwogICAgIFJldGFpblB0
cjxOU1VSTD4gbV9zdG9yYWdlRGlyZWN0b3J5OwotICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlT
ZXNzaW9uPiBtX3Nlc3Npb247Ci0gICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlPiBtX2RlbGVnYXRlOworICAgIFZlY3RvcjxXZWFrUHRyPENETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4+IG1fc2Vzc2lvbnM7CiB9OwogCiBjbGFz
cyBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMgZmluYWwgOiBwdWJs
aWMgQ0RNSW5zdGFuY2VTZXNzaW9uLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8Q0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiB7CiBwdWJsaWM6CiAgICAgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKFJlZjxDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQz4mJik7CisgICAgdmlydHVhbCB+Q0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDKCk7CiAKICAgICAvLyBDRE1JbnN0YW5jZVNlc3Npb24KICAg
ICB2b2lkIHJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
aXREYXRhVHlwZSwgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBpbml0RGF0YSwgTGljZW5zZUNhbGxiYWNr
JiYpIGZpbmFsOwpAQCAtMTI2LDE1ICsxMDUsMjYgQEAgcHVibGljOgogICAgIHZvaWQgb3V0cHV0
T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCk7
CiAKICAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEcygpOworICAgIEFWQ29udGVu
dEtleVNlc3Npb24qIGNvbnRlbnRLZXlTZXNzaW9uKCkgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgp
OyB9CiAKIHByaXZhdGU6CisgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogZW5zdXJlU2Vzc2lvbigp
OwogICAgIGJvb2wgaXNMaWNlbnNlVHlwZVN1cHBvcnRlZChMaWNlbnNlVHlwZSkgY29uc3Q7CiAK
KyAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXMoKSBjb25zdDsKKyAgICB2b2lkIG5leHRS
ZXF1ZXN0KCk7CisKICAgICBSZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+
IG1faW5zdGFuY2U7Ci0gICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1fcmVxdWVz
dDsKKyAgICBSZXRhaW5QdHI8QVZDb250ZW50S2V5U2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFJl
dGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBtX2N1cnJlbnRSZXF1ZXN0OworICAgIFJldGFp
blB0cjxXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gbV9kZWxlZ2F0ZTsKICAg
ICBWZWN0b3I8UmV0YWluUHRyPE5TRGF0YT4+IG1fZXhwaXJlZFNlc3Npb25zOwogICAgIFdlYWtQ
dHI8Q0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50PiBtX2NsaWVudDsKICAgICBTdHJpbmcgbV9zZXNz
aW9uSWQ7CisgICAgYm9vbCBtX291dHB1dE9ic2N1cmVkIHsgZmFsc2UgfTsKKworICAgIFZlY3Rv
cjxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+IG1fcGVuZGluZ1JlcXVlc3RzOworICAg
IFZlY3RvcjxSZXRhaW5QdHI8QVZDb250ZW50S2V5UmVxdWVzdD4+IG1fcmVxdWVzdHM7CiAKICAg
ICBMaWNlbnNlQ2FsbGJhY2sgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrOwogICAgIExpY2Vuc2VV
cGRhdGVDYWxsYmFjayBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMubW0KaW5kZXggNWFjMjRlNDcwMjQ0ZjU1NGI5ZjU5YTZjOTAxZTBlZTAxMDU4Yzg0OS4uNmJk
YWE1N2YyN2YzNGY5NjY1MTM2NGM5YWVkNDIxNGM0ZDMxNjQwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VG
YWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNvbnRl
bnRLZXlTZXNzaW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL0FWRm91bmRhdGlvblNQSS5oPgorI2ltcG9ydCA8d3RmL0FsZ29yaXRobXMuaD4KICNp
bXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCkBAIC01MywxMiArNTQsMTIgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWRm91bmRh
dGlvbiwgQVZQZXJzaXN0YWJsZUNvbnRlbnRLZXlSZXF1ZXN0KTsKIHN0YXRpYyBjb25zdCBOU1N0
cmluZyAqUGxheWJhY2tTZXNzaW9uSWRLZXkgPSBAIlBsYXliYWNrU2Vzc2lvbklEIjsKIAogQGlu
dGVyZmFjZSBXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZSA6IE5TT2JqZWN0PEFW
Q29udGVudEtleVNlc3Npb25EZWxlZ2F0ZT4gewotICAgIFdlYkNvcmU6OkNETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDKiBfcGFyZW50OworICAgIFdlYkNvcmU6OkNETUluc3RhbmNl
U2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyogX3BhcmVudDsKIH0KIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlCi0tIChpZClp
bml0V2l0aFBhcmVudDooV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMgKilwYXJlbnQKKy0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMgKilwYXJlbnQKIHsKICAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTEzNCwxNyArMTM1LDYg
QEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpCi0gICAg
OiBDRE1JbnN0YW5jZSgpCi0gICAgLCBtX2RlbGVnYXRlKFtbV2ViQ29yZUZQU0NvbnRlbnRLZXlT
ZXNzaW9uRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKQotewotfQotCi1DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6fkNETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDKCkKLXsKLSAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKLX0KLQogYm9v
bCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c3VwcG9ydHNQZXJzaXN0YWJs
ZVN0YXRlKCkKIHsKICAgICByZXR1cm4gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocGVuZGluZ0V4cGlyZWRTZXNzaW9uUmVwb3J0c1dp
dGhBcHBJZGVudGlmaWVyOnN0b3JhZ2VEaXJlY3RvcnlBdFVSTDopXTsKQEAgLTE4OSwxNiArMTc5
LDYgQEAgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb24KICAgICBpZiAoIWNhbkxvYWRBVkNvbnRlbnRL
ZXlTeXN0ZW1GYWlyUGxheVN0cmVhbWluZygpKQogICAgICAgICByZXR1cm4gRmFpbGVkOwogCi0g
ICAgaWYgKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlID09IENETVJlcXVpcmVtZW50OjpO
b3RBbGxvd2VkIHx8ICFtX3N0b3JhZ2VEaXJlY3RvcnkpCi0gICAgICAgIG1fc2Vzc2lvbiA9IFtn
ZXRBVkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lvbldpdGhLZXlTeXN0
ZW06Z2V0QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKV07Ci0gICAgZWxzZQot
ICAgICAgICBtX3Nlc3Npb24gPSBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVu
dEtleVNlc3Npb25XaXRoS2V5U3lzdGVtOmdldEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3Ry
ZWFtaW5nKCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOm1fc3RvcmFnZURpcmVjdG9yeS5nZXQoKV07
Ci0KLSAgICBpZiAoIW1fc2Vzc2lvbikKLSAgICAgICAgcmV0dXJuIEZhaWxlZDsKLQotICAgIFtt
X3Nlc3Npb24gc2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKSBxdWV1ZTpkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpXTsKLQogICAgIHJldHVybiBTdWNjZWVkZWQ7CiB9CiAKQEAgLTIzMSwyMyAr
MjExLDkgQEAgQ0RNSW5zdGFuY2U6OlN1Y2Nlc3NWYWx1ZSBDRE1JbnN0YW5jZUZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQzo6c2V0U3RvcmFnZURpcmVjdG8KIAogUmVmUHRyPENETUluc3RhbmNlU2Vz
c2lvbj4gQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNyZWF0ZVNlc3Npb24o
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDKCp0aGlzKSk7Ci19Ci0KLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OnByb2Nlc3NDb250ZW50S2V5UmVxdWVzdEZvclNlc3Npb24oQ0RNSW5z
dGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJiBzZXNzaW9uLCBSZXRhaW5QdHI8
TlNTdHJpbmc+JiYgaWRlbnRpZmllciwgUmV0YWluUHRyPE5TRGF0YT4mJiBpbml0RGF0YSkKLXsK
LSAgICBtX2N1cnJlbnRSZXF1ZXN0cy5hcHBlbmQoeyBtYWtlV2Vha1B0cihzZXNzaW9uKSwgV1RG
TW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShpbml0RGF0YSkgfSk7Ci0gICAgaWYgKG1fY3VycmVu
dFJlcXVlc3RzLnNpemUoKSA9PSAxKQotICAgICAgICBwcm9jZXNzTmV4dENvbnRlbnRLZXlSZXF1
ZXN0KCk7Ci19Ci0KLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnBy
b2Nlc3NOZXh0Q29udGVudEtleVJlcXVlc3QoKQotewotICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8mIG5leHRSZXF1ZXN0ID0g
bV9jdXJyZW50UmVxdWVzdHMuZmlyc3QoKTsKLSAgICBbbV9zZXNzaW9uIHByb2Nlc3NDb250ZW50
S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOm5leHRSZXF1ZXN0LmlkZW50aWZpZXIuZ2V0KCkgaW5p
dGlhbGl6YXRpb25EYXRhOm5leHRSZXF1ZXN0LmluaXREYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsK
KyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQygqdGhpcykpOworICAgIG1fc2Vzc2lvbnMuYXBwZW5kKG1ha2VX
ZWFrUHRyKHNlc3Npb24uZ2V0KCkpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAogY29uc3Qg
U3RyaW5nJiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5U3lzdGVtKCkg
Y29uc3QKQEAgLTI1NiwxMDkgKzIyMiw2NCBAQCBjb25zdCBTdHJpbmcmIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjprZXlTeXN0ZW0oKSBjb25zdAogICAgIHJldHVybiBrZXlT
eXN0ZW07CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmRp
ZFByb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCi17Ci0gICAgaWYg
KG1fY3VycmVudFJlcXVlc3RzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0
byBjdXJyZW50UmVxdWVzdCA9IFdURk1vdmUobV9jdXJyZW50UmVxdWVzdHMuZmlyc3QoKSk7Ci0g
ICAgbV9jdXJyZW50UmVxdWVzdHMucmVtb3ZlKDApOwotCi0gICAgaWYgKCFjdXJyZW50UmVxdWVz
dC5zZXNzaW9uSW5zdGFuY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVzdE1hcC5z
ZXQocmVxdWVzdCwgY3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlKTsKLSAgICBjdXJyZW50
UmVxdWVzdC5zZXNzaW9uSW5zdGFuY2UtPmRpZFByb3ZpZGVSZXF1ZXN0KHJlcXVlc3QpOwotICAg
IHByb2Nlc3NOZXh0Q29udGVudEtleVJlcXVlc3QoKTsKLX0KLQotdm9pZCBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVxdWVzdChBVkNvbnRl
bnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQotewotICAgIGlmIChtX2N1cnJlbnRSZXF1ZXN0cy5pc0Vt
cHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY3VycmVudFJlcXVlc3QgPSBXVEZN
b3ZlKG1fY3VycmVudFJlcXVlc3RzLmZpcnN0KCkpOwotICAgIG1fY3VycmVudFJlcXVlc3RzLnJl
bW92ZSgwKTsKLQotICAgIGlmICghY3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBtX3JlcXVlc3RNYXAuc2V0KHJlcXVlc3QsIGN1cnJlbnRSZXF1
ZXN0LnNlc3Npb25JbnN0YW5jZSk7Ci0gICAgY3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNl
LT5kaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KHJlcXVlc3QpOwotICAgIHByb2Nlc3NOZXh0Q29u
dGVudEtleVJlcXVlc3QoKTsKLX0KLQotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVBlcnNpc3RhYmxlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0
ICpyZXF1ZXN0KQordm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0
cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9v
bCBvYnNjdXJlZCkKIHsKLSAgICBpZiAobV9jdXJyZW50UmVxdWVzdHMuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZShtX2N1cnJl
bnRSZXF1ZXN0cy5maXJzdCgpKTsKLSAgICBtX2N1cnJlbnRSZXF1ZXN0cy5yZW1vdmUoMCk7Ci0K
LSAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0LCBjdXJyZW50UmVxdWVzdC5zZXNzaW9u
SW5zdGFuY2UpOwotICAgIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZS0+ZGlkUHJvdmlk
ZVBlcnNpc3RhYmxlUmVxdWVzdChyZXF1ZXN0KTsKLSAgICBwcm9jZXNzTmV4dENvbnRlbnRLZXlS
ZXF1ZXN0KCk7CisgICAgZm9yIChhdXRvJiBzZXNzaW9uSW50ZXJmYWNlIDogbV9zZXNzaW9ucykg
eworICAgICAgICBpZiAoc2Vzc2lvbkludGVyZmFjZSkKKyAgICAgICAgICAgIHNlc3Npb25JbnRl
cmZhY2UtPm91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25D
aGFuZ2VkKG9ic2N1cmVkKTsKKyAgICB9CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVl
c3QgKnJlcXVlc3QsIE5TRXJyb3IgKmVycm9yKQorQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vz
c2lvbkZvcktleUlEcyhjb25zdCBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+JiBrZXlJRHMpIGNv
bnN0CiB7Ci0gICAgaWYgKGF1dG8gc2Vzc2lvbkludGVyZmFjZSA9IG1fcmVxdWVzdE1hcC5nZXQo
cmVxdWVzdCkpCi0gICAgICAgIHNlc3Npb25JbnRlcmZhY2UtPmRpZEZhaWxUb1Byb3ZpZGVSZXF1
ZXN0KHJlcXVlc3QsIGVycm9yKTsKLX0KKyAgICBmb3IgKGF1dG8mIHNlc3Npb25JbnRlcmZhY2Ug
OiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmICghc2Vzc2lvbkludGVyZmFjZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOwogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
OjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQotewotICAg
IGlmIChhdXRvIHNlc3Npb25JbnRlcmZhY2UgPSBtX3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3QpKQot
ICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5yZXF1ZXN0RGlkU3VjY2VlZChyZXF1ZXN0KTsKKyAg
ICAgICAgYXV0byBzZXNzaW9uS2V5cyA9IHNlc3Npb25JbnRlcmZhY2UtPmtleUlEcygpOworICAg
ICAgICBpZiAoYW55T2Yoc2Vzc2lvbktleXMsIFsmXShhdXRvJiBzZXNzaW9uS2V5KSB7CisgICAg
ICAgICAgICByZXR1cm4ga2V5SURzLmNvbnRhaW5zKHNlc3Npb25LZXkpOworICAgICAgICB9KSkK
KyAgICAgICAgICAgIHJldHVybiBzZXNzaW9uSW50ZXJmYWNlLmdldCgpOworICAgIH0KKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKEFWQ29udGVudEtleVJlcXVlc3QgKnJl
cXVlc3QsIE5TU3RyaW5nICpyZWFzb24pCitDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakM6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyhS
ZWY8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+JiYgaW5zdGFuY2UpCisgICAg
OiBtX2luc3RhbmNlKFdURk1vdmUoaW5zdGFuY2UpKQorICAgICwgbV9kZWxlZ2F0ZShbW1dlYkNv
cmVGUFNDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBhcmVudDp0aGlz
XSkKIHsKLSAgICBpZiAoYXV0byBzZXNzaW9uSW50ZXJmYWNlID0gbV9yZXF1ZXN0TWFwLmdldChy
ZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIHNlc3Npb25JbnRlcmZhY2UtPnNob3VsZFJldHJ5UmVx
dWVzdEZvclJlYXNvbihyZXF1ZXN0LCByZWFzb24pOwotICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbklkZW50aWZp
ZXJDaGFuZ2VkKE5TRGF0YSAqc2Vzc2lvbklkZW50aWZpZXIpCitDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6On5DRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMoKQogewotICAgIGZvciAoYXV0byBzZXNzaW9uSW50ZXJmYWNlIDogbV9yZXF1
ZXN0TWFwLnZhbHVlcygpKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uSW50ZXJmYWNlKQotICAgICAg
ICAgICAgc2Vzc2lvbkludGVyZmFjZS0+c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKHNlc3Npb25J
ZGVudGlmaWVyKTsKLSAgICB9CisgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiB9CiAKLXZv
aWQgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVl
VG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQpCitz
dGF0aWMgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHNGb3JSZXF1ZXN0KEFWQ29udGVu
dEtleVJlcXVlc3QqIHJlcXVlc3QpCiB7Ci0gICAgZm9yIChhdXRvIHNlc3Npb25JbnRlcmZhY2Ug
OiBtX3JlcXVlc3RNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKHNlc3Npb25JbnRlcmZhY2Up
Ci0gICAgICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5vdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZm
aWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChvYnNjdXJlZCk7CisgICAgaWYgKFtyZXF1
ZXN0LmlkZW50aWZpZXIgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAg
cmV0dXJuIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20oU2hhcmVkQnVmZmVyOjpjcmVh
dGUoWyhOU1N0cmluZyAqKXJlcXVlc3QuaWRlbnRpZmllciBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10pKTsKKyAgICBpZiAoW3JlcXVlc3QuaWRlbnRpZmllciBpc0tpbmRP
ZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWY8U2hhcmVk
QnVmZmVyPj46OmZyb20oU2hhcmVkQnVmZmVyOjpjcmVhdGUoKE5TRGF0YSAqKXJlcXVlc3QuaWRl
bnRpZmllcikpOworICAgIGlmIChyZXF1ZXN0LmluaXRpYWxpemF0aW9uRGF0YSkgeworICAgICAg
ICBpZiAoYXV0byBzaW5mS2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRy
YWN0S2V5SURzU2luZihTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXF1ZXN0LmluaXRpYWxpemF0aW9u
RGF0YSkpKQorICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoc2luZktleUlEcy52YWx1ZSgpKTsK
ICAgICB9Ci19Ci0KLUNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6
Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKFJlZjxDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4mJiBpbnN0YW5jZSkKLSAgICA6IG1faW5zdGFuY2Uo
V1RGTW92ZShpbnN0YW5jZSkpCi17CisgICAgcmV0dXJuIHsgfTsKIH0KIAogVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmtleUlEcygpCiB7CiAgICAgLy8gRklYTUUocmRhcjovL3Byb2JsZW0vMzU1OTcxNDEpOiB1c2Ug
dGhlIGZ1dHVyZSBBVkNvbnRlbnRLZXlSZXF1ZXN0IGtleUlEIHByb3BlcnR5LCByYXRoZXIgdGhh
biBwYXJzaW5nIGl0IG91dCBvZiB0aGUgaW5pdAogICAgIC8vIGRhdGEsIHRvIGdldCB0aGUga2V5
SUQuCi0gICAgaWYgKFttX3JlcXVlc3QuZ2V0KCkuaWRlbnRpZmllciBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQotICAgICAgICByZXR1cm4gVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pjo6ZnJvbShTaGFyZWRCdWZmZXI6OmNyZWF0ZShbKE5TU3RyaW5nICopbV9yZXF1ZXN0LmdldCgp
LmlkZW50aWZpZXIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKSk7Ci0g
ICAgaWYgKFttX3JlcXVlc3QuZ2V0KCkuaWRlbnRpZmllciBpc0tpbmRPZkNsYXNzOltOU0RhdGEg
Y2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj46OmZyb20o
U2hhcmVkQnVmZmVyOjpjcmVhdGUoKE5TRGF0YSAqKW1fcmVxdWVzdC5nZXQoKS5pZGVudGlmaWVy
KSk7Ci0gICAgaWYgKG1fcmVxdWVzdC5nZXQoKS5pbml0aWFsaXphdGlvbkRhdGEpIHsKLSAgICAg
ICAgYXV0byBzaW5mS2V5SURzID0gQ0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0
S2V5SURzU2luZihTaGFyZWRCdWZmZXI6OmNyZWF0ZShtX3JlcXVlc3QuZ2V0KCkuaW5pdGlhbGl6
YXRpb25EYXRhKSk7Ci0gICAgICAgIGlmICghc2luZktleUlEcykKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgIHJldHVybiBXVEZNb3ZlKHNpbmZLZXlJRHMudmFsdWUoKSk7CisgICAg
VmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHM7CisgICAgZm9yIChhdXRvJiByZXF1ZXN0
IDogbV9yZXF1ZXN0cykgeworICAgICAgICBmb3IgKGF1dG8mIGtleSA6IGtleUlEc0ZvclJlcXVl
c3QocmVxdWVzdC5nZXQoKSkpCisgICAgICAgICAgICBrZXlJRHMuYXBwZW5kKFdURk1vdmUoa2V5
KSk7CiAgICAgfQotICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4ga2V5SURzOwogfQogCiB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERh
dGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJiBj
YWxsYmFjaykKQEAgLTM3Myw2ICsyOTQsMTEgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNlKExpY2Vuc2VUeXBlIGxpY2UKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmICghZW5zdXJlU2Vzc2lvbigpKSB7CisgICAg
ICAgIGNhbGxiYWNrKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIGVtcHR5U3RyaW5nKCksIGZhbHNl
LCBGYWlsZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0YWluUHRyPE5TU3Ry
aW5nPiBpZGVudGlmaWVyOwogICAgIFJldGFpblB0cjxOU0RhdGE+IGluaXRpYWxpemF0aW9uRGF0
YTsKIApAQCAtMzg2LDcgKzMxMiw3IEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlCiAgICAgfQog
CiAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7Ci0gICAg
bV9pbnN0YW5jZS0+cHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0Rm9yU2Vzc2lvbigqdGhpcywgV1RG
TW92ZShpZGVudGlmaWVyKSwgV1RGTW92ZShpbml0aWFsaXphdGlvbkRhdGEpKTsKKyAgICBbbV9z
ZXNzaW9uIHByb2Nlc3NDb250ZW50S2V5UmVxdWVzdFdpdGhJZGVudGlmaWVyOmlkZW50aWZpZXIu
Z2V0KCkgaW5pdGlhbGl6YXRpb25EYXRhOmluaXRpYWxpemF0aW9uRGF0YS5nZXQoKSBvcHRpb25z
Om5pbF07CiB9CiAKIHN0YXRpYyBib29sIGlzRXF1YWwoY29uc3QgU2hhcmVkQnVmZmVyJiBkYXRh
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtNDI4LDE3ICszNTQsMjMgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnVwZGF0ZUxpY2Vuc2UoY29uc3Qg
U3RyaW5nJiwgTGkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghbV9yZXF1ZXN0
KSB7CisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QgJiYgaXNFcXVhbChyZXNwb25zZURhdGEsICJy
ZW5ldyJfcykpIHsKKyAgICAgICAgW21fc2Vzc2lvbiByZW5ld0V4cGlyaW5nUmVzcG9uc2VEYXRh
Rm9yQ29udGVudEtleVJlcXVlc3Q6bV9jdXJyZW50UmVxdWVzdC5nZXQoKV07CisgICAgICAgIG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBpZiAoIW1fY3VycmVudFJlcXVlc3QpIHsKICAgICAgICAgY2FsbGJh
Y2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxl
ZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
PiBrZXlJRHMgPSB0aGlzLT5rZXlJRHMoKTsKKyAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QobV9jdXJyZW50UmVxdWVzdC5nZXQoKSk7CiAgICAg
aWYgKGtleUlEcy5pc0VtcHR5KCkpIHsKICAgICAgICAgY2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVs
bG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIEZhaWxlZCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBbbV9yZXF1ZXN0IHByb2Nlc3NDb250ZW50S2V5UmVzcG9uc2U6W2dl
dEFWQ29udGVudEtleVJlc3BvbnNlQ2xhc3MoKSBjb250ZW50S2V5UmVzcG9uc2VXaXRoRmFpclBs
YXlTdHJlYW1pbmdLZXlSZXNwb25zZURhdGE6cmVzcG9uc2VEYXRhLmNyZWF0ZU5TRGF0YSgpLmdl
dCgpXV07CisgICAgW21fY3VycmVudFJlcXVlc3QgcHJvY2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpb
Z2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNvbnRlbnRLZXlSZXNwb25zZVdpdGhGYWly
UGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNwb25zZURhdGEuY3JlYXRlTlNEYXRhKCku
Z2V0KCldXTsKIAogICAgIC8vIEZJWE1FKHJkYXI6Ly9wcm9ibGVtLzM1NTkyMjc3KTogc3Rhc2gg
dGhlIGNhbGxiYWNrIGFuZCBjYWxsIGl0IG9uY2UgQVZDb250ZW50S2V5UmVzcG9uc2Ugc3VwcG9y
dHMgYSBzdWNjZXNzIGNhbGxiYWNrLgogICAgIHN0cnVjdCBvYmpjX21ldGhvZF9kZXNjcmlwdGlv
biBtZXRob2QgPSBwcm90b2NvbF9nZXRNZXRob2REZXNjcmlwdGlvbihAcHJvdG9jb2woQVZDb250
ZW50S2V5U2Vzc2lvbkRlbGVnYXRlKSwgQHNlbGVjdG9yKGNvbnRlbnRLZXlTZXNzaW9uOmNvbnRl
bnRLZXlSZXF1ZXN0RGlkU3VjY2VlZDopLCBOTywgWUVTKTsKQEAgLTUwNiwxNCArNDM4LDE2IEBA
IHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpjbG9zZVNl
c3Npb24oY29uc3QgU3RyaW5nJiwgQ2xvCiAgICAgICAgIG1fcmVtb3ZlU2Vzc2lvbkRhdGFDYWxs
YmFjayh7IH0sIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgbV9yZW1vdmVTZXNzaW9u
RGF0YUNhbGxiYWNrID0gbnVsbHB0cjsKICAgICB9Ci0gICAgbV9yZXF1ZXN0ID0gbnVsbHB0cjsK
KyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5j
bGVhcigpOworICAgIG1fcmVxdWVzdHMuY2xlYXIoKTsKICAgICBjYWxsYmFjaygpOwogfQogCiB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVtb3ZlU2Vz
c2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIExpY2Vuc2VUeXBlIGxpY2Vuc2VUeXBl
LCBSZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiB7CiAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBiZSBhYmxlIHRvIGV4cGlyZSBpbmRpdmlkdWFsIEFWQ29udGVudEtleVJlcXVl
c3RzIHJhdGhlciB0aGFuIHRoZSBlbnRpcmUgQVZDb250ZW50S2V5U2Vzc2lvbi4KLSAgICBbbV9p
bnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSBleHBpcmVdOworICAgIFttX3Nlc3Npb24gZXhw
aXJlXTsKIAogICAgIGlmIChsaWNlbnNlVHlwZSA9PSBMaWNlbnNlVHlwZTo6UGVyc2lzdGVudFVz
YWdlUmVjb3JkKSB7CiAgICAgICAgIGF1dG8qIHN0b3JhZ2VEaXJlY3RvcnkgPSBtX2luc3RhbmNl
LT5zdG9yYWdlRGlyZWN0b3J5KCk7CkBAIC01NjQsMzEgKzQ5OCw0MSBAQCB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Y2xlYXJDbGllbnQoKQogCiB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJl
cXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCkKIHsKLSAgICBtX3JlcXVlc3QgPSBy
ZXF1ZXN0OwotICAgIGlmICghbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKQorICAgIGlmIChtX2N1
cnJlbnRSZXF1ZXN0KSB7CisgICAgICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChyZXF1ZXN0
KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY3VycmVudFJlcXVlc3QgPSByZXF1
ZXN0OworCisgICAgQVNTRVJUKCFtX3JlcXVlc3RzLmNvbnRhaW5zKG1fY3VycmVudFJlcXVlc3Qp
KTsKKyAgICBtX3JlcXVlc3RzLmFwcGVuZChtX2N1cnJlbnRSZXF1ZXN0KTsKIAogICAgIFJldGFp
blB0cjxOU0RhdGE+IGFwcElkZW50aWZpZXI7CiAgICAgaWYgKGF1dG8qIGNlcnRpZmljYXRlID0g
bV9pbnN0YW5jZS0+c2VydmVyQ2VydGlmaWNhdGUoKSkKICAgICAgICAgYXBwSWRlbnRpZmllciA9
IGNlcnRpZmljYXRlLT5jcmVhdGVOU0RhdGEoKTsKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZl
cj4+IGtleUlEcyA9IHRoaXMtPmtleUlEcygpOwogCisgICAgYXV0byBrZXlJRHMgPSBrZXlJRHNG
b3JSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChrZXlJRHMuaXNFbXB0eSgpKSB7Ci0gICAgICAg
IG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX3Nlc3Np
b25JZCwgZmFsc2UsIEZhaWxlZCk7Ci0gICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayA9
IG51bGxwdHI7CisgICAgICAgIGlmIChtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spIHsKKyAgICAg
ICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBt
X3Nlc3Npb25JZCwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgICAgICBtX3JlcXVlc3RMaWNlbnNl
Q2FsbGJhY2sgPSBudWxscHRyOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBSZXRhaW5QdHI8TlNEYXRhPiBjb250ZW50SWRlbnRpZmllciA9IGtleUlEcy5maXJzdCgp
LT5jcmVhdGVOU0RhdGEoKTsKLSAgICBbbV9yZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5
UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpj
b250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1
ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUgeworICAgIFttX2N1cnJlbnRSZXF1ZXN0
IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JBcHA6YXBwSWRlbnRpZmllci5n
ZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmllci5nZXQoKSBvcHRpb25zOm5p
bCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
IChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJvciAqZXJyb3IpIG11dGFibGUg
ewogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRlbnRLZXlSZXF1ZXN0RGF0YSA9
IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7Ci0gICAgICAgICAgICBpZiAoIXdl
YWtUaGlzIHx8ICFtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2spCisgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgaWYgKGVycm9yICYmIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjaykKICAg
ICAgICAgICAgICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgbV9zZXNzaW9uSWQsIGZhbHNlLCBGYWlsZWQpOwotICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgZWxzZSBpZiAobV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKQogICAgICAgICAgICAg
ICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50
S2V5UmVxdWVzdERhdGEuZ2V0KCkpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIFN1Y2NlZWRlZCk7Cisg
ICAgICAgICAgICBlbHNlIGlmIChtX2NsaWVudCkKKyAgICAgICAgICAgICAgICBtX2NsaWVudC0+
c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VSZXF1ZXN0LCBTaGFyZWRCdWZmZXI6
OmNyZWF0ZShjb250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgIG1fcmVx
dWVzdExpY2Vuc2VDYWxsYmFjayA9IG51bGxwdHI7CiAgICAgICAgIH0pOwogICAgIH1dOwpAQCAt
NTk2LDcgKzU0MCwzOCBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UgogCiB2b2lkIENETUluc3Rh
bmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlbmV3aW5nUmVx
dWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQogewotICAgIFVOVVNFRF9QQVJBTShy
ZXF1ZXN0KTsKKyAgICBBU1NFUlQoIW1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayk7CisgICAgaWYg
KG1fY3VycmVudFJlcXVlc3QpIHsKKyAgICAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKHJl
cXVlc3QpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jdXJyZW50UmVxdWVzdCA9
IHJlcXVlc3Q7CisKKyAgICAvLyBUaGUgYXNzdW1wdGlvbiBoZXJlIGlzIHRoYXQgQVZDb250ZW50
S2V5UmVxdWVzdCB3aWxsIG9ubHkgZXZlciBub3RpZnkgdXMgb2YgYSByZW5ld2luZyByZXF1ZXN0
IGFzIGEgcmVzdWx0IG9mIGNhbGxpbmcKKyAgICAvLyAtcmVuZXdFeHBpcmluZ1Jlc3BvbnNlRGF0
YUZvckNvbnRlbnRLZXlSZXF1ZXN0OiB3aXRoIGFuIGV4aXN0aW5nIHJlcXVlc3QuCisgICAgQVNT
RVJUKG1fcmVxdWVzdHMuY29udGFpbnMobV9jdXJyZW50UmVxdWVzdCkpOworCisgICAgUmV0YWlu
UHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKKyAgICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBt
X2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgpKQorICAgICAgICBhcHBJZGVudGlmaWVyID0g
Y2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOworICAgIGF1dG8ga2V5SURzID0ga2V5SURzRm9y
UmVxdWVzdChtX2N1cnJlbnRSZXF1ZXN0LmdldCgpKTsKKworICAgIFJldGFpblB0cjxOU0RhdGE+
IGNvbnRlbnRJZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOworICAg
IFttX2N1cnJlbnRSZXF1ZXN0IG1ha2VTdHJlYW1pbmdDb250ZW50S2V5UmVxdWVzdERhdGFGb3JB
cHA6YXBwSWRlbnRpZmllci5nZXQoKSBjb250ZW50SWRlbnRpZmllcjpjb250ZW50SWRlbnRpZmll
ci5nZXQoKSBvcHRpb25zOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbdGhpcywgd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIChOU0RhdGEgKmNvbnRlbnRLZXlSZXF1ZXN0RGF0YSwgTlNFcnJv
ciAqZXJyb3IpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBlcnJvciA9IHJldGFpblB0cihlcnJvciksIGNvbnRl
bnRLZXlSZXF1ZXN0RGF0YSA9IHJldGFpblB0cihjb250ZW50S2V5UmVxdWVzdERhdGEpXSB7Cisg
ICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFtX2NsaWVudCB8fCBlcnJvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChlcnJvciAmJiBtX3VwZGF0ZUxpY2Vu
c2VDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxz
ZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQorICAgICAgICAgICAg
ICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgTWVzc2FnZShNZXNzYWdlVHlwZTo6TGljZW5zZVJlbmV3YWwsIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSkpLCBTdWNjZWVkZWQpOworICAgICAg
ICAgICAgZWxzZSBpZiAobV9jbGllbnQpCisgICAgICAgICAgICAgICAgbV9jbGllbnQtPnNlbmRN
ZXNzYWdlKENETU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVh
dGUoY29udGVudEtleVJlcXVlc3REYXRhLmdldCgpKSk7CisgICAgICAgICAgICBtX3VwZGF0ZUxp
Y2Vuc2VDYWxsYmFjayA9IG51bGxwdHI7CisgICAgICAgIH0pOworICAgIH1dOwogfQogCiB2b2lk
IENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVBl
cnNpc3RhYmxlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1ZXN0KQpAQCAtNjEwLDE5
ICs1ODUsMzUgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OmRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGUKICAgICBVTlVTRURfUEFSQU0oZXJy
b3IpOwogICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykKICAgICAgICAgbV91cGRhdGVM
aWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIEZhaWxlZCk7CisKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKworICAg
IG5leHRSZXF1ZXN0KCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpyZXF1ZXN0RGlkU3VjY2VlZChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1
ZXN0KQogewogICAgIFVOVVNFRF9QQVJBTShyZXF1ZXN0KTsKLSAgICBpZiAoIW1fdXBkYXRlTGlj
ZW5zZUNhbGxiYWNrKQorICAgIGlmIChtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjaykKKyAgICAgICAg
bV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRpb25hbChrZXlTdGF0
dXNlcygpKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisKKyAgICBt
X2N1cnJlbnRSZXF1ZXN0ID0gbnVsbHB0cjsKKworICAgIG5leHRSZXF1ZXN0KCk7Cit9CisKK3Zv
aWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpuZXh0UmVxdWVz
dCgpCit7CisgICAgaWYgKG1fcGVuZGluZ1JlcXVlc3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+PiBrZXlJRHMgPSB0aGlzLT5rZXlJ
RHMoKTsKLSAgICBLZXlTdGF0dXNWZWN0b3Iga2V5U3RhdHVzZXM7Ci0gICAga2V5U3RhdHVzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgxKTsKLSAgICBrZXlTdGF0dXNlcy51bmNoZWNrZWRBcHBl
bmQoc3RkOjptYWtlX3BhaXIoV1RGTW92ZShrZXlJRHMuZmlyc3QoKSksIEtleVN0YXR1czo6VXNh
YmxlKSk7Ci0gICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFsc2UsIHN0ZDo6bWFrZV9vcHRp
b25hbChXVEZNb3ZlKGtleVN0YXR1c2VzKSksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBT
dWNjZWVkZWQpOworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0PiBuZXh0UmVxdWVz
dCA9IG1fcGVuZGluZ1JlcXVlc3RzLmZpcnN0KCk7CisgICAgbV9wZW5kaW5nUmVxdWVzdHMucmVt
b3ZlKDApOworCisgICAgaWYgKG5leHRSZXF1ZXN0LmdldCgpLnJlbmV3c0V4cGlyaW5nUmVzcG9u
c2VEYXRhKQorICAgICAgICBkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KG5leHRSZXF1ZXN0Lmdl
dCgpKTsKKyAgICBlbHNlCisgICAgICAgIGRpZFByb3ZpZGVSZXF1ZXN0KG5leHRSZXF1ZXN0Lmdl
dCgpKTsKIH0KIAogYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akM6OnNob3VsZFJldHJ5UmVxdWVzdEZvclJlYXNvbihBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1
ZXN0LCBOU1N0cmluZyAqcmVhc29uKQpAQCAtNjQ0LDM3ICs2MzUsNjYgQEAgdm9pZCBDRE1JbnN0
YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnNlc3Npb25JZGVudGlmaWVyQ2hh
bmdlZChOU0RhdGEKICAgICBtX3Nlc3Npb25JZCA9IHNlc3Npb25JZGVudGlmaWVyU3RyaW5nLmdl
dCgpOwogfQogCi12b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5n
ZWQoYm9vbCBvYnNjdXJlZCkKK3N0YXRpYyBhdXRvIHJlcXVlc3RTdGF0dXNUb0NETVN0YXR1cyhB
VkNvbnRlbnRLZXlSZXF1ZXN0U3RhdHVzIHN0YXR1cykKIHsKLSAgICBpZiAoIW1fY2xpZW50IHx8
ICFtX3JlcXVlc3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIENETUtleVN0YXR1cyBzdGF0dXM7
Ci0gICAgaWYgKG9ic2N1cmVkKQotICAgICAgICBzdGF0dXMgPSBDRE1LZXlTdGF0dXM6Ok91dHB1
dFJlc3RyaWN0ZWQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHN3aXRjaCAobV9yZXF1ZXN0LmdldCgp
LnN0YXR1cykgeworICAgIHN3aXRjaCAoc3RhdHVzKSB7CiAgICAgICAgIGNhc2UgQVZDb250ZW50
S2V5UmVxdWVzdFN0YXR1c1JlcXVlc3RpbmdSZXNwb25zZToKICAgICAgICAgY2FzZSBBVkNvbnRl
bnRLZXlSZXF1ZXN0U3RhdHVzUmV0cmllZDoKLSAgICAgICAgICAgIHN0YXR1cyA9IENETUtleVN0
YXR1czo6U3RhdHVzUGVuZGluZzsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0
dXJuIENETUtleVN0YXR1czo6U3RhdHVzUGVuZGluZzsKICAgICAgICAgY2FzZSBBVkNvbnRlbnRL
ZXlSZXF1ZXN0U3RhdHVzUmVjZWl2ZWRSZXNwb25zZToKICAgICAgICAgY2FzZSBBVkNvbnRlbnRL
ZXlSZXF1ZXN0U3RhdHVzUmVuZXdlZDoKLSAgICAgICAgICAgIHN0YXR1cyA9IENETUtleVN0YXR1
czo6VXNhYmxlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gQ0RNS2V5
U3RhdHVzOjpVc2FibGU7CiAgICAgICAgIGNhc2UgQVZDb250ZW50S2V5UmVxdWVzdFN0YXR1c0Nh
bmNlbGxlZDoKLSAgICAgICAgICAgIHN0YXR1cyA9IENETUtleVN0YXR1czo6UmVsZWFzZWQ7Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBDRE1LZXlTdGF0dXM6OlJlbGVh
c2VkOwogICAgICAgICBjYXNlIEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXNGYWlsZWQ6Ci0gICAg
ICAgICAgICBzdGF0dXMgPSBDRE1LZXlTdGF0dXM6OkludGVybmFsRXJyb3I7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIENETUtleVN0YXR1czo6SW50
ZXJuYWxFcnJvcjsKKyAgICB9Cit9CisKK0NETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5U3RhdHVz
ZXMoKSBjb25zdAoreworICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNlczsKKworICAgIGZv
ciAoYXV0byYgcmVxdWVzdCA6IG1fcmVxdWVzdHMpIHsKKyAgICAgICAgYXV0byBrZXlJRHMgPSBr
ZXlJRHNGb3JSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpOworICAgICAgICBhdXRvIHN0YXR1cyA9IHJl
cXVlc3RTdGF0dXNUb0NETVN0YXR1cyhyZXF1ZXN0LmdldCgpLnN0YXR1cyk7CisgICAgICAgIGlm
IChtX291dHB1dE9ic2N1cmVkKQorICAgICAgICAgICAgc3RhdHVzID0gQ0RNS2V5U3RhdHVzOjpP
dXRwdXRSZXN0cmljdGVkOworCisgICAgICAgIGZvciAoYXV0byYga2V5SUQgOiBrZXlJRHMpCisg
ICAgICAgICAgICBrZXlTdGF0dXNlcy5hcHBlbmQoeyBXVEZNb3ZlKGtleUlEKSwgc3RhdHVzIH0p
OwogICAgIH0KIAotICAgIGF1dG8ga2V5U3RhdHVzZXMgPSBrZXlJRHMoKS5tYXAoW3N0YXR1c10g
KGNvbnN0IFJlZjxTaGFyZWRCdWZmZXI+JiBrZXlJRCkgLT4gS2V5U3RhdHVzVmVjdG9yOjpWYWx1
ZVR5cGUgewotICAgICAgICByZXR1cm4geyBrZXlJRC5jb3B5UmVmKCksIHN0YXR1cyB9OwotICAg
IH0pOwotICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleVN0YXR1c2Vz
KSk7CisgICAgcmV0dXJuIGtleVN0YXR1c2VzOworfQorCit2b2lkIENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVu
dEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKK3sKKyAgICBpZiAob2Jz
Y3VyZWQgPT0gbV9vdXRwdXRPYnNjdXJlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vdXRw
dXRPYnNjdXJlZCA9IG9ic2N1cmVkOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+dXBkYXRlS2V5U3RhdHVzZXMoa2V5U3RhdHVzZXMoKSk7Cit9CisKK0FWQ29udGVudEtl
eVNlc3Npb24qIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZW5z
dXJlU2Vzc2lvbigpCit7CisgICAgaWYgKG1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIG1fc2Vz
c2lvbi5nZXQoKTsKKworICAgIGF1dG8qIHN0b3JhZ2VEaXJlY3RvcnkgPSBtX2luc3RhbmNlLT5z
dG9yYWdlRGlyZWN0b3J5KCk7CisgICAgaWYgKCFtX2luc3RhbmNlLT5wZXJzaXN0ZW50U3RhdGVB
bGxvd2VkKCkgfHwgIXN0b3JhZ2VEaXJlY3RvcnkpCisgICAgICAgIG1fc2Vzc2lvbiA9IFtnZXRB
VkNvbnRlbnRLZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lvbldpdGhLZXlTeXN0ZW06
Z2V0QVZDb250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKV07CisgICAgZWxzZQorICAg
ICAgICBtX3Nlc3Npb24gPSBbZ2V0QVZDb250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgY29udGVudEtl
eVNlc3Npb25XaXRoS2V5U3lzdGVtOmdldEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFt
aW5nKCkgc3RvcmFnZURpcmVjdG9yeUF0VVJMOnN0b3JhZ2VEaXJlY3RvcnldOworCisgICAgaWYg
KCFtX3Nlc3Npb24pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgW21fc2Vzc2lvbiBz
ZXREZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCldOworICAgIHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7CiB9CiAKIGJvb2wgQ0RNSW5zdGFuY2VT
ZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppc0xpY2Vuc2VUeXBlU3VwcG9ydGVkKExp
Y2Vuc2VUeXBlIGxpY2Vuc2VUeXBlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCmluZGV4IDI3
YjNmYTVlYzI2YjUzODgzZDIwNTJmZmY2ZTZhOTA0ZjBhMDg0MWMuLjUxNTZlZGQzMTMzNGIzYjFj
Yzc1NDMwZmYxYjk1MDZkMGQwNWYzOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRh
dGlvbk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmgKQEAgLTYxLDYg
KzYxLDcgQEAgY2xhc3MgQ0RNU2Vzc2lvbkFWRm91bmRhdGlvbk9iakM7CiBjbGFzcyBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY7CiBjbGFzcyBNZWRpYVNlbGVjdGlvbkdyb3VwQVZG
T2JqQzsKIGNsYXNzIFBpeGVsQnVmZmVyQ29uZm9ybWVyQ1Y7CitjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5MYXllck1hbmFnZXJPYmpDOwogY2xhc3MgVmlkZW9UZXh0
dXJlQ29waWVyQ1Y7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakM7CkBAIC00MTEsNiAr
NDEyLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gbV9jdXJyZW50TWV0YURh
dGE7CiAgICAgRmxvYXRTaXplIG1fY2FjaGVkUHJlc2VudGF0aW9uU2l6ZTsKICAgICBNZWRpYVRp
bWUgbV9jYWNoZWREdXJhdGlvbjsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2tleUlEOwog
ICAgIGRvdWJsZSBtX2NhY2hlZFJhdGU7CiAgICAgbXV0YWJsZSBsb25nIGxvbmcgbV9jYWNoZWRU
b3RhbEJ5dGVzOwogICAgIHVuc2lnbmVkIG1fcGVuZGluZ1N0YXR1c0NoYW5nZXM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQy5tbQppbmRleCA4NTU0NjM0MjIwZDE1OWY2Y2Y4MTVhOGExNTkxYjFhYmJhOTc3
NzNmLi40MDc0NjBlZGI1NWU1YjQ4MmZmMGM2YzAyMjhhYWRkZWU0M2I0YTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KQEAgLTE3ODIsOCArMTc4Miw4IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2hvdWxkV2FpdEZvckxvYWRpbmdPZlJlc291cmNlKEFWQXNz
ZXRSCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgUmV0YWluUHRyPE5TRGF0
YT4ga2V5VVJJRGF0YSA9IFtrZXlVUkkgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmcgYWxsb3dMb3NzeUNvbnZlcnNpb246WUVTXTsKLSAgICAgICAgYXV0byBrZXlVUklCdWZm
ZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShrZXlVUklEYXRhLmdldCgpKTsKLSAgICAgICAgcGxh
eWVyKCktPmluaXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKCJza2QiX3MsIGtleVVSSUJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CisgICAgICAgIG1fa2V5SUQgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShrZXlVUklEYXRhLmdldCgpKTsKKyAgICAgICAgcGxheWVyKCktPmluaXRpYWxp
emF0aW9uRGF0YUVuY291bnRlcmVkKCJza2QiX3MsIG1fa2V5SUQtPnRyeUNyZWF0ZUFycmF5QnVm
ZmVyKCkpOwogICAgICAgICBzZXRXYWl0aW5nRm9yS2V5KHRydWUpOwogI2VuZGlmCiAgICAgICAg
IHJldHVybiB0cnVlOwpAQCAtMjQ3OCw3ICsyNDc4LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVBVkZvdW5kYXRpb25PYmpDOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJiBpbnN0
YW4KICAgICAgICAgY2RtSW5zdGFuY2VEZXRhY2hlZCgqbV9jZG1JbnN0YW5jZSk7CiAKICAgICBt
X2NkbUluc3RhbmNlID0gJmZwc0luc3RhbmNlOwotICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50
S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9hdkFzc2V0LmdldCgpXTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGluc3RhbmNlKTsKICNlbmRpZgpAQCAtMjQ4OCw3ICsyNDg3
LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjZG1JbnN0YW5j
ZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW4KIHsKICNpZiBIQVZFKEFWQ09OVEVOVEtFWVNF
U1NJT04pCiAgICAgQVNTRVJUX1VOVVNFRChpbnN0YW5jZSwgbV9jZG1JbnN0YW5jZSAmJiBtX2Nk
bUluc3RhbmNlID09ICZpbnN0YW5jZSk7Ci0gICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlT
ZXNzaW9uKCkgcmVtb3ZlQ29udGVudEtleVJlY2lwaWVudDptX2F2QXNzZXQuZ2V0KCldOwogICAg
IG1fY2RtSW5zdGFuY2UgPSBudWxscHRyOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaW5zdGFu
Y2UpOwpAQCAtMjQ5Nyw2ICsyNDk1LDE1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdp
dGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpCiB7CisgICAgaWYgKCFtX2tleUlEIHx8ICFtX2NkbUlu
c3RhbmNlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1f
Y2RtSW5zdGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6
ZnJvbSgqbV9rZXlJRCkpOworICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQorICAgICAgICByZXR1
cm47CisKKyAgICBbaW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRl
bnRLZXlSZWNpcGllbnQ6bV9hdkFzc2V0LmdldCgpXTsKKwogICAgIGF1dG8ga2V5VVJJVG9SZXF1
ZXN0TWFwID0gV1RGTW92ZShtX2tleVVSSVRvUmVxdWVzdE1hcCk7CiAgICAgZm9yIChhdXRvJiBy
ZXF1ZXN0IDoga2V5VVJJVG9SZXF1ZXN0TWFwLnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChhdXRv
ICppbmZvUmVxdWVzdCA9IHJlcXVlc3QuZ2V0KCkuY29udGVudEluZm9ybWF0aW9uUmVxdWVzdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKaW5kZXggOTYyMjI0ZTYwMDc2ZGQ2OTE4ZGI4YjU4ZDlj
NTlhMjRlZmVkNDYxNi4uMDM2MDVmYzQyYTgxYjg2OGM5ODYzYzZmMjFmN2VjYzY0MjUzMDU3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgKQEAgLTEyMyw3ICsxMjMsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHdhaXRpbmdG
b3JLZXlDaGFuZ2VkKCk7Ci0gICAgQ0RNSW5zdGFuY2UqIGNkbUluc3RhbmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jZG1JbnN0YW5jZS5nZXQoKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0VOQ1JZUFRFRF9NRURJQSkgfHwgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKQEAgLTMwOSw5ICsz
MDgsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRQbGF5VG9UYXJnZXQgeyBmYWxzZSB9
OwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZpZGVvRnVsbHNjcmVlbkxheWVyTWFuYWdl
ck9iakM+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyOwotI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCi0gICAgUmVmUHRyPENETUluc3RhbmNlPiBtX2NkbUluc3RhbmNlOwotI2VuZGlm
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggZjI2ODdhMDI5ZDc5NWNk
MmJlZTY3MGJmMGIxYzYyMmI4ZWU4OTRkMC4uZmE3MzI1YmM1ODhmYzc1MjQyNDk1Mzc4YThiNmJk
ZTExNDM2OGQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbQpAQCAtMzAsOSArMzAsNyBA
QAogCiAjaW1wb3J0ICJBVkFzc2V0VHJhY2tVdGlsaXRpZXMuaCIKICNpbXBvcnQgIkFWRm91bmRh
dGlvbk1JTUVUeXBlQ2FjaGUuaCIKLSNpbXBvcnQgIkNETUluc3RhbmNlLmgiCiAjaW1wb3J0ICJD
RE1TZXNzaW9uQVZTdHJlYW1TZXNzaW9uLmgiCi0jaW1wb3J0ICJDRE1TZXNzaW9uTWVkaWFTb3Vy
Y2VBVkZPYmpDLmgiCiAjaW1wb3J0ICJGaWxlU3lzdGVtLmgiCiAjaW1wb3J0ICJHcmFwaGljc0Nv
bnRleHRDRy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgpAQCAtNTAsNyArNDgsNiBAQAogI2ltcG9y
dCA8b2JqY19ydW50aW1lLmg+CiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+Ci0j
aW1wb3J0IDx3dGYvQWxnb3JpdGhtcy5oPgogI2ltcG9ydCA8d3RmL0RlcXVlLmg+CiAjaW1wb3J0
IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC05
MzMsOCArOTMwLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6
OmtleU5lZWRlZChVaW50OEFycmF5KiBpbml0RGF0YSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJu
YWxQcm90ZWN0aW9uQ2hhbmdlZChib29sIG9ic2N1cmVkKQogewogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCi0gICAgaWYgKG1fY2RtSW5zdGFuY2UpCi0gICAgICAgIG1fY2RtSW5zdGFuY2Ut
PnNldEhEQ1BTdGF0dXMob2JzY3VyZWQgPyBDRE1JbnN0YW5jZTo6SERDUFN0YXR1czo6T3V0cHV0
UmVzdHJpY3RlZCA6IENETUluc3RhbmNlOjpIRENQU3RhdHVzOjpWYWxpZCk7CisgICAgaWYgKG1f
bWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICBtX21lZGlhU291cmNlUHJpdmF0ZS0+b3V0cHV0
T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQob2JzY3Vy
ZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ob2JzY3VyZWQpOwogI2VuZGlmCkBAIC05NDQs
MzAgKzk0MSwyNSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6
b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybgogI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y2Rt
SW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCiB7Ci0gICAgQVNTRVJUKCFt
X2NkbUluc3RhbmNlKTsKLSAgICBtX2NkbUluc3RhbmNlID0gJmluc3RhbmNlOwotICAgIGZvciAo
YXV0byYgc291cmNlQnVmZmVyIDogbV9tZWRpYVNvdXJjZVByaXZhdGUtPnNvdXJjZUJ1ZmZlcnMo
KSkKLSAgICAgICAgc291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZSgmaW5zdGFuY2UpOworICAg
IGlmIChtX21lZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgbV9tZWRpYVNvdXJjZVByaXZhdGUt
PmNkbUluc3RhbmNlQXR0YWNoZWQoaW5zdGFuY2UpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYg
aW5zdGFuY2UpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChpbnN0YW5jZSwgbV9jZG1JbnN0YW5jZSAm
JiBtX2NkbUluc3RhbmNlID09ICZpbnN0YW5jZSk7Ci0gICAgZm9yIChhdXRvJiBzb3VyY2VCdWZm
ZXIgOiBtX21lZGlhU291cmNlUHJpdmF0ZS0+c291cmNlQnVmZmVycygpKQotICAgICAgICBzb3Vy
Y2VCdWZmZXItPnNldENETUluc3RhbmNlKG51bGxwdHIpOwotCi0gICAgbV9jZG1JbnN0YW5jZSA9
IG51bGxwdHI7CisgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICBtX21lZGlh
U291cmNlUHJpdmF0ZS0+Y2RtSW5zdGFuY2VEZXRhY2hlZChpbnN0YW5jZSk7CiB9CiAKLXZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0
aEluc3RhbmNlKENETUluc3RhbmNlJikKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0
YW5jZSkKIHsKKyAgICBpZiAobV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIG1fbWVkaWFT
b3VyY2VQcml2YXRlLT5hdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKGluc3RhbmNlKTsKIH0K
IAogYm9vbCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OndhaXRpbmdGb3JL
ZXkoKSBjb25zdAogewotICAgIHJldHVybiBhbnlPZihtX21lZGlhU291cmNlUHJpdmF0ZS0+c291
cmNlQnVmZmVycygpLCBbXSAoYXV0byYgc291cmNlQnVmZmVyKSB7Ci0gICAgICAgIHJldHVybiBz
b3VyY2VCdWZmZXItPndhaXRpbmdGb3JLZXkoKTsKLSAgICB9KTsKKyAgICByZXR1cm4gbV9tZWRp
YVNvdXJjZVByaXZhdGUgPyBtX21lZGlhU291cmNlUHJpdmF0ZS0+d2FpdGluZ0ZvcktleSgpIDog
ZmFsc2U7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjp3
YWl0aW5nRm9yS2V5Q2hhbmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5kZXggYWM0YWM5MDliYzIzNGVmMGY5MjJiZjM1M2Y4
NWVjY2YxZDAxMjAwZi4uMGMwNGFmOTA0MzAyOTFmMTJhMTIxOWViM2M0MzU4Y2NhNGYyYmQxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMuaApAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZl
ciAqQ01TYW1wbGVCdWZmZXJSZWY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ0RN
SW5zdGFuY2U7CiBjbGFzcyBMZWdhY3lDRE1TZXNzaW9uOwogY2xhc3MgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwogY2xhc3MgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50OwpA
QCAtODQsNiArODUsMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlkZW9MYXllcihBVlNhbXBs
ZUJ1ZmZlckRpc3BsYXlMYXllciopOwogICAgIHZvaWQgc2V0RGVjb21wcmVzc2lvblNlc3Npb24o
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uKik7CiAKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgIHZvaWQgY2RtSW5zdGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYpOworICAgIHZv
aWQgY2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYpOworICAgIHZvaWQgYXR0ZW1wdFRv
RGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYpOworICAgIGJvb2wgd2FpdGluZ0Zvcktl
eSgpIGNvbnN0OworICAgIAorICAgIENETUluc3RhbmNlKiBjZG1JbnN0YW5jZSgpIGNvbnN0IHsg
cmV0dXJuIG1fY2RtSW5zdGFuY2UuZ2V0KCk7IH0KKyAgICB2b2lkIG91dHB1dE9ic2N1cmVkRHVl
VG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wpOworI2VuZGlmCisK
IHByaXZhdGU6CiAgICAgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhNZWRpYVBsYXllclByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKTsKIApAQCAt
MTA2LDYgKzExNyw5IEBAIHByaXZhdGU6CiAgICAgRGVxdWU8U291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMqPiBtX3NvdXJjZUJ1ZmZlcnNOZWVkaW5nU2Vzc2lvbnM7CiAgICAgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMqIG1fc291cmNlQnVmZmVyV2l0aFNlbGVjdGVkVmlkZW8geyBudWxscHRy
IH07CiAgICAgYm9vbCBtX2lzRW5kZWQ7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAg
ICBSZWZQdHI8Q0RNSW5zdGFuY2U+IG1fY2RtSW5zdGFuY2U7CisjZW5kaWYKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1t
CmluZGV4IDBhMmIwNDM4ZGRhNmE3NDk3NTQzZWEyYmJiZGE2ODQ5MzZjNWNjNTguLjhjM2U1OTVj
ZWIwYjg4ZmQ2NjgzYTZhNjRmYTBlOWM2YWMzN2EzMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQpAQCAtMjgsMTIgKzI4LDE0
IEBACiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCisj
aW1wb3J0ICJDRE1JbnN0YW5jZS5oIgogI2ltcG9ydCAiQ0RNU2Vzc2lvbk1lZGlhU291cmNlQVZG
T2JqQy5oIgogI2ltcG9ydCAiQ29udGVudFR5cGUuaCIKICNpbXBvcnQgIk1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5oIgogI2ltcG9ydCAiTWVkaWFTb3VyY2VQcml2YXRlQ2xp
ZW50LmgiCiAjaW1wb3J0ICJTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIgogI2ltcG9ydCA8
b2JqYy9ydW50aW1lLmg+CisjaW1wb3J0IDx3dGYvQWxnb3JpdGhtcy5oPgogI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIApAQCAt
NzAsOCArNzIsMTAgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKGNvbnN0IEMKICAgICBpZiAoTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpzdXBwb3J0c1R5cGUocGFyYW1ldGVycykgPT0g
TWVkaWFQbGF5ZXI6OklzTm90U3VwcG9ydGVkKQogICAgICAgICByZXR1cm4gTm90U3VwcG9ydGVk
OwogCi0gICAgbV9zb3VyY2VCdWZmZXJzLmFwcGVuZChTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6Y3JlYXRlKHRoaXMpKTsKLSAgICBvdXRQcml2YXRlID0gbV9zb3VyY2VCdWZmZXJzLmxhc3Qo
KTsKKyAgICBhdXRvIG5ld1NvdXJjZUJ1ZmZlciA9IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpjcmVhdGUodGhpcyk7CisgICAgbmV3U291cmNlQnVmZmVyLT5zZXRDRE1JbnN0YW5jZShtX2Nk
bUluc3RhbmNlLmdldCgpKTsKKyAgICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVyOworICAg
IG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92ZShuZXdTb3VyY2VCdWZmZXIpKTsKIAogICAg
IHJldHVybiBPazsKIH0KQEAgLTI0NSw2ICsyNDksNDUgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDOjpzZXREZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNl
c3MKICAgICAgICAgbV9zb3VyY2VCdWZmZXJXaXRoU2VsZWN0ZWRWaWRlby0+c2V0RGVjb21wcmVz
c2lvblNlc3Npb24oZGVjb21wcmVzc2lvblNlc3Npb24pOwogfQogCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y2RtSW5zdGFuY2VB
dHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCit7CisgICAgQVNTRVJUKCFtX2NkbUluc3Rh
bmNlKTsKKyAgICBtX2NkbUluc3RhbmNlID0gJmluc3RhbmNlOworICAgIGZvciAoYXV0byYgc291
cmNlQnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKQorICAgICAgICBzb3VyY2VCdWZmZXItPnNldENE
TUluc3RhbmNlKCZpbnN0YW5jZSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qzo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCit7CisgICAgQVNT
RVJUX1VOVVNFRChpbnN0YW5jZSwgbV9jZG1JbnN0YW5jZSAmJiBtX2NkbUluc3RhbmNlID09ICZp
bnN0YW5jZSk7CisgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1ZmZlcnMp
CisgICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobnVsbHB0cik7CisKKyAgICBt
X2NkbUluc3RhbmNlID0gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0YW5jZSkK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKGluc3RhbmNlLCBtX2NkbUluc3RhbmNlICYmIG1fY2RtSW5z
dGFuY2UgPT0gJmluc3RhbmNlKTsKKyAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fc291
cmNlQnVmZmVycykKKyAgICAgICAgc291cmNlQnVmZmVyLT5hdHRlbXB0VG9EZWNyeXB0KCk7Cit9
CisKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6d2FpdGluZ0ZvcktleSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGFueU9mKG1fc291cmNlQnVmZmVycywgW10gKGF1dG8mIHNvdXJjZUJ1
ZmZlcikgeworICAgICAgICByZXR1cm4gc291cmNlQnVmZmVyLT53YWl0aW5nRm9yS2V5KCk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6b3V0cHV0T2JzY3Vy
ZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBvYnNjdXJl
ZCkKK3sKKyAgICBpZiAobV9jZG1JbnN0YW5jZSkKKyAgICAgICAgbV9jZG1JbnN0YW5jZS0+c2V0
SERDUFN0YXR1cyhvYnNjdXJlZCA/IENETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXRSZXN0
cmljdGVkIDogQ0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlZhbGlkKTsKK30KKyNlbmRpZgorCiB2
b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNldFNvdXJjZUJ1ZmZlcldpdGhTZWxlY3Rl
ZFZpZGVvKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBzb3VyY2VCdWZmZXIpCiB7CiAgICAg
aWYgKG1fc291cmNlQnVmZmVyV2l0aFNlbGVjdGVkVmlkZW8pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDUyMDEzYTEw
ZDZkYzQwOTJkZTk5NzE4NmVkODRiYWNiNTFlM2YzMDguLmU3YTBmZGM4MmFiYjBmZjYyYmY2NmY2
NTc3YmFiNjE4ZTNlNzBjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNjYsNiArNjYsNyBAQCBjbGFzcyBWaWRlb1Ry
YWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOwog
Y2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBXZWJDb3Jl
RGVjb21wcmVzc2lvblNlc3Npb247CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNzIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTg0LDYgKzE4
NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKSAmJiBI
QVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOworICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVm
ZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRTaXplPiBt
X2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDExMTNlMzUzNWU2ODFiNjFmOGZlYzRmMTRjNjEyY2Iw
ZGI0NWIyMTYuLjc1ZTAxZDgwYjliN2VjMTkzMmExZjExNjU2NjM5NWEyYTgwODM2NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Lm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkFWQXNzZXRUcmFja1V0aWxpdGllcy5o
IgogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIKKyNpbXBv
cnQgIkNETUZhaXJQbGF5U3RyZWFtaW5nLmgiCiAjaW1wb3J0ICJDRE1JbnN0YW5jZUZhaXJQbGF5
U3RyZWFtaW5nQVZGT2JqQy5oIgogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtleVNlc3Np
b24uaCIKICNpbXBvcnQgIkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCIKQEAgLTY2NSwx
MSArNjY2LDI3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFByb3ZpZGVD
b250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBpZiAo
bV9tZWRpYVNvdXJjZSkgewotICAgICAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoaW5pdERhdGEpOwotICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+
aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZlci0+dHJ5
Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CisgICAgLy8KKyAgICBhdXRvIGluaXREYXRhQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOworICAgIGF1dG8ga2V5SURzID0gQ0RNUHJp
dmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihpbml0RGF0YUJ1ZmZlcik7
CisgICAgaWYgKCFrZXlJRHMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2NkbUluc3Rh
bmNlKSB7CisgICAgICAgIGlmIChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5zdGFuY2Ut
PnNlc3Npb25Gb3JLZXlJRHMoa2V5SURzLnZhbHVlKCkpKSB7CisgICAgICAgICAgICBbaW5zdGFu
Y2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9w
YXJzZXIuZ2V0KCldOworICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9yZSkgewor
ICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAg
ICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fd2FpdGluZ0ZvcktleSA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAgICAgfQogCisgICAgbV9rZXlJRHMgPSBXVEZNb3ZlKGtleUlEcy52YWx1
ZSgpKTsKKyAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+aW5pdGlhbGl6YXRpb25EYXRhRW5j
b3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7
CisKICAgICBtX3dhaXRpbmdGb3JLZXkgPSB0cnVlOwogICAgIG1fbWVkaWFTb3VyY2UtPnBsYXll
cigpLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogI2VuZGlmCkBAIC03NTgsOCArNzc1LDEwIEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIoKQogICAgICAg
ICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVTdHJlYW1E
YXRhUGFyc2VyOm1fcGFyc2VyLmdldCgpXTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBpZiAobV9jZG1JbnN0YW5j
ZSkKLSAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVtb3ZlQ29u
dGVudEtleVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07CisgICAgaWYgKG1fY2RtSW5zdGFuY2Up
IHsKKyAgICAgICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vz
c2lvbkZvcktleUlEcyhtX2tleUlEcykpCisgICAgICAgICAgICBbaW5zdGFuY2VTZXNzaW9uLT5j
b250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0
KCldOworICAgIH0KICNlbmRpZgogCiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CkBAIC05
MTgsMjUgKzkzNywzMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRDRE1J
bnN0YW5jZShDRE1JbnN0YW5jZSogaW5zdGFuY2UpCiB7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIGF1dG8qIGZwc0luc3RhbmNl
ID0gZG93bmNhc3Q8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+KGluc3RhbmNl
KTsKLSAgICBpZiAoIWZwc0luc3RhbmNlIHx8IGZwc0luc3RhbmNlID09IG1fY2RtSW5zdGFuY2Up
CisgICAgaWYgKGZwc0luc3RhbmNlID09IG1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChtX2NkbUluc3RhbmNlKQotICAgICAgICBbbV9jZG1JbnN0YW5jZS0+Y29udGVu
dEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdldCgpXTsK
LQogICAgIG1fY2RtSW5zdGFuY2UgPSBmcHNJbnN0YW5jZTsKKyAgICBhdHRlbXB0VG9EZWNyeXB0
KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7CisjZW5kaWYKK30KIAotICAg
IGlmIChtX2NkbUluc3RhbmNlKSB7Ci0gICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250ZW50S2V5
U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOwotICAgICAg
ICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7Ci0gICAgICAgICAgICBtX2hhc1Nlc3Npb25T
ZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0g
bnVsbHB0cjsKLSAgICAgICAgfQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXR0
ZW1wdFRvRGVjcnlwdCgpCit7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYgSEFWRShB
VkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIGlmICghbV9jZG1JbnN0YW5jZSB8fCBtX2tleUlEcy5p
c0VtcHR5KCkgfHwgIW1fd2FpdGluZ0ZvcktleSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURzKG1fa2V5
SURzKTsKKyAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
W2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5UmVjaXBp
ZW50Om1fcGFyc2VyLmdldCgpXTsKKyAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7Cisg
ICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1faGFzU2Vz
c2lvblNlbWFwaG9yZSA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fd2FpdGluZ0ZvcktleSA9IGZh
bHNlOwotICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgp
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2UpOwogI2VuZGlmCiB9CiAKQEAgLTk4
Myw5ICsxMDA5LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bGF5ZXJEaWRS
ZWNlaXZlRXJyb3IoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFBy
b3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQpCiB7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQotICAgIGF1dG8gcGxheWVyID0gbV9t
ZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPnBsYXllcigpIDogbnVsbHB0cjsKLSAgICBpZiAo
cGxheWVyICYmIHBsYXllci0+Y2RtSW5zdGFuY2UoKSkgewotICAgICAgICBwbGF5ZXItPm91dHB1
dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKG9ic2N1
cmVkKTsKKyAgICBpZiAobV9tZWRpYVNvdXJjZS0+Y2RtSW5zdGFuY2UoKSkgeworICAgICAgICBt
X21lZGlhU291cmNlLT5vdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90
ZWN0aW9uQ2hhbmdlZChvYnNjdXJlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353297</attachid>
            <date>2018-10-29 10:21:48 -0700</date>
            <delta_ts>2018-10-29 17:16:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190946-20181029102147.patch</filename>
            <type>text/plain</type>
            <size>53471</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODljNTRhMWNkMWIxOGFj
NzFiZGRhMWUyNDQ5N2Q4OGJjMzM4ZTE0ZC4uNzk4OTdlYWU3YWQ2OWU4MTZmYWFlNGM0MWEzNTll
YmZlYmU1NDA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE4LTEwLTI2ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtFTUVdW0NvY29hXSBDYW5u
b3QgcGxheSB1bm11eGVkIHZpZGVvIGFuZCBhdWRpbyBmTVA0IHN0cmVhbXMgZW5jcnlwdGVkIHdp
dGggZGlmZmVyZW50IGtleXMgdmlhIE1TRQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTQ2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIHNlcGFyYXRlIEFWQ29udGVudEtleVNlc3Npb25zIHBlciBD
RE1JbnN0YW5jZVNlc3Npb24gKHJhdGhlciB0aGFuIG9uZSBBVkNvbnRlbnRLZXlTZXNzaW9uIHBl
cgorICAgICAgICBDRE1JbnN0YW5jZSkuCisKKyAgICAgICAgLSBBZGQgYSBtZWNoYW5pc20gZm9y
IHNlbmRpbmcgYSBtZXNzYWdlIG91dCBmcm9tIHBsYXRmb3JtL0NETUluc3RhbmNlIHRvIE1lZGlh
S2V5U2Vzc2lvbiB3aXRob3V0CisgICAgICAgICAgcmVxdWlyaW5nIE1lZGlhS2V5U2Vzc2lvbiB0
byBzZW5kIGEgY2FsbGJhY2sgZmlyc3QuCisKKyAgICAgICAgLSBNb3ZlIGFsbCB0aGUgQVZDb250
ZW50S2V5U2Vzc2lvbiBkZWxlZ2F0ZSBtZXRob2RzIGZyb20gQ0RNSW5zdGFuY2VGYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMgdG8KKyAgICAgICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakMuCisKKyAgICAgICAgLSBBZGQgYSBtZWNoYW5pc20gZm9yIHJlcXVlc3Rp
bmcgdGhlIGNvcnJlY3QgQ0RNSW5zdGFuY2VTZXNzaW9uIGZvciBhIGdpdmVuIEtleUlELgorCisg
ICAgICAgIC0gU3VwcG9ydCBrZXkgcmVuZXdhbCB0aHJvdWdoIGEgInJlbmV3IiBtZXNzYWdlLgor
CisgICAgICAgIC0gUmVtZW1iZXIgdGhlIGtleUlEIGluIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFj
a0lEKCkKKyAgICAgICAgICBhbmQgYXNrIGZvciB0aGUgY29ycmVjdCBDRE1JbnN0YW5jZVNlc3Np
b24gZm9yIHRoYXQga2V5SUQgaW4gYXR0ZW1wdFRvRGVjcnlwdCgpLgorCisgICAgICAgIC0gUGFz
cyB0aGUgQ0RNSW5zdGFuY2UgZG93biBmcm9tIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyAtPiBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy4KKworICAgICAgICAqIE1vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6c2VuZE1lc3NhZ2UpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVk
bWVkaWEvQ0RNSW5zdGFuY2VTZXNzaW9uLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbToKKyAgICAgICAgKC1bV2ViQ29yZUZQU0NvbnRl
bnRLZXlTZXNzaW9uRGVsZWdhdGUgaW5pdFdpdGhQYXJlbnQ6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6aW5pdGlhbGl6ZVdpdGhDb25m
aWd1cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpjcmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50
RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2Vzc2lvbkZvcktleUlEcyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyk6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6On5DRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMpOgorICAgICAgICAoV2ViQ29y
ZTo6a2V5SURzRm9yUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Np
b25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleUlEcyk6CisgICAgICAgIChXZWJDb3JlOjpD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6dXBkYXRlTGljZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlbW92
ZVNlc3Npb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQ
bGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRl
UmVuZXdpbmdSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpy
ZXF1ZXN0RGlkU3VjY2VlZCk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5jZVNlc3Npb25G
YWlyUGxheVN0cmVhbWluZ0FWRk9iakM6Om5leHRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcXVlc3RTdGF0dXNUb0NETVN0YXR1cyk6CisgICAgICAgIChXZWJDb3JlOjpDRE1JbnN0YW5j
ZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN0YXR1c2VzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5n
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpj
ZG1JbnN0YW5jZUF0dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakM6OmNkbUluc3RhbmNlRGV0YWNoZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdp
dGhJbnN0YW5jZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTb3VyY2VBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQ
cm90ZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakM6OmNkbUluc3RhbmNlQXR0YWNoZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjZG1JbnN0YW5jZURldGFj
aGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZG
T2JqQzo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OndhaXRpbmdGb3JLZXkgY29uc3Qp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6YWRkU291cmNlQnVmZmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNkbUluc3RhbmNlQXR0YWNoZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y2RtSW5zdGFu
Y2VEZXRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
OjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakM6OndhaXRpbmdGb3JLZXkgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3Vm
ZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9y
VHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGVzdHJveVBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQzo6c2V0Q0RNSW5zdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRl
cm5hbFByb3RlY3Rpb25DaGFuZ2VkKToKKwogMjAxOC0xMC0yNiAgSmVyIE5vYmxlICA8amVyLm5v
YmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBDUkFTSCBpbiBDb3JlR3JhcGhpY3M6IEVSUk9SX0NH
RGF0YVByb3ZpZGVyX0J1ZmZlcklzTm90QmlnRW5vdWdoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXgg
Y2ViNzQxYTg5NTBiOWNkY2ViY2E1ZDk2NGEzYTAwODgxNGI2MDM5NS4uZTY4NjkzMDgyNDE1NzA3
NDNiZmJhNmIxNzdmMjNkN2E4NTI4YTYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNjUxLDYg
KzY1MSwxMSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlS2V5U3RhdHVzZXMoQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBpbgogICAgICAgICB9KTsKIH0KIAordm9p
ZCBNZWRpYUtleVNlc3Npb246OnNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpCit7CisgICAgZW5xdWV1ZU1lc3NhZ2UobWVz
c2FnZVR5cGUsIG1lc3NhZ2UpOworfQorCiB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlRXhw
aXJhdGlvbihkb3VibGUpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmlu
ZGV4IDllNWZkODcwYzNkZTU4YTcwMjdjNDEyZjJmNzk1YmFlNDA0NWY5ZTUuLjM1ZDgxNzQyNjhj
YWIxZDc4ZDVmNTYwYjYyYjQwMDliYTYxODUyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtODYsNiAr
ODYsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50CiAgICAg
dm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ6OktleVN0YXR1
c1ZlY3RvciYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHNlbmRNZXNzYWdlKENETU1lc3NhZ2VUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UpIGZpbmFsOwogCiAgICAgLy8gRXZlbnRUYXJn
ZXQKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIE1lZGlhS2V5U2Vzc2lvbkV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEv
Q0RNSW5zdGFuY2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaAppbmRleCBjZjNiMmQ0MzNjNjQzNTYyZDRiOTdhYzY5
Y2FmNDU2NjA5YTQyYmFkLi5hYTQ4ZjM3MzQyNmRlOGZhZGM5ZDMwMDFlNDAzM2VjMTM5Y2RiZjk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1J
bnN0YW5jZVNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1JbnN0YW5jZVNlc3Npb24uaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgS2V5U3RhdHVzID0gQ0RNS2V5U3RhdHVzOwogICAgIHVzaW5nIEtleVN0YXR1c1ZlY3Rv
ciA9IFZlY3RvcjxzdGQ6OnBhaXI8UmVmPFNoYXJlZEJ1ZmZlcj4sIEtleVN0YXR1cz4+OwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVLZXlTdGF0dXNlcyhLZXlTdGF0dXNWZWN0b3ImJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZSwgUmVmPFNoYXJlZEJ1
ZmZlcj4mJiBtZXNzYWdlKSA9IDA7CiB9OwogCiBjbGFzcyBDRE1JbnN0YW5jZVNlc3Npb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxDRE1JbnN0YW5jZVNlc3Npb24+IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNl
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
Qy5oCmluZGV4IDVlZjg0MWQwM2FiM2ExYTFiNmVhYWFhNDI5NTFiZDZhMGE3N2RmYzIuLmQ3YTE5
MDBmMTA1MjY5MzdhN2RmZTI0ZjZhYTQwMTI0ZTI4OGExZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0NETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMuaApAQCAtNDgsOCArNDgsNyBAQCBzdHJ1Y3QgQ0RNTWVkaWFDYXBhYmlsaXR5OwogCiBjbGFz
cyBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBDRE1J
bnN0YW5jZSwgcHVibGljIENhbk1ha2VXZWFrUHRyPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDPiB7CiBwdWJsaWM6Ci0gICAgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMoKTsKLSAgICB2aXJ0dWFsIH5DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2Jq
QygpOworICAgIHZpcnR1YWwgfkNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCkg
PSBkZWZhdWx0OwogCiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNQZXJzaXN0YWJsZVN0YXRlKCk7
CiAgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNQZXJzaXN0ZW50S2V5cygpOwpAQCAtNjUsNDYgKzY0
LDI2IEBAIHB1YmxpYzoKICAgICBTdWNjZXNzVmFsdWUgc2V0U3RvcmFnZURpcmVjdG9yeShjb25z
dCBTdHJpbmcmKSBmaW5hbDsKICAgICBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBjcmVhdGVT
ZXNzaW9uKCkgZmluYWw7CiAKLSAgICB2b2lkIHByb2Nlc3NDb250ZW50S2V5UmVxdWVzdEZvclNl
c3Npb24oQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDJiwgUmV0YWlu
UHRyPE5TU3RyaW5nPiYmIGlkZW50aWZpZXIsIFJldGFpblB0cjxOU0RhdGE+JiYgaW5pdERhdGEp
OwotCiAgICAgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0oKSBjb25zdCBmaW5hbDsKIAotICAgIHZv
aWQgZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqKTsKLSAgICB2b2lkIGRp
ZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqKTsKLSAgICB2b2lk
IGRpZFByb3ZpZGVQZXJzaXN0YWJsZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqKTsKLSAg
ICB2b2lkIGRpZEZhaWxUb1Byb3ZpZGVSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKiwgTlNF
cnJvciAqKTsKLSAgICB2b2lkIHJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtleVJlcXVlc3Qg
Kik7Ci0gICAgYm9vbCBzaG91bGRSZXRyeVJlcXVlc3RGb3JSZWFzb24oQVZDb250ZW50S2V5UmVx
dWVzdCAqLCBOU1N0cmluZyAqKTsKLSAgICB2b2lkIHNlc3Npb25JZGVudGlmaWVyQ2hhbmdlZChO
U0RhdGEgKik7Ci0gICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJu
YWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKTsKLQogICAgIE5TVVJMICpzdG9yYWdlRGlyZWN0b3J5
KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlRGlyZWN0b3J5LmdldCgpOyB9Ci0gICAgQVZDb250
ZW50S2V5U2Vzc2lvbiAqY29udGVudEtleVNlc3Npb24oKSB7IHJldHVybiBtX3Nlc3Npb24uZ2V0
KCk7IH0KICAgICBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBt
X3BlcnNpc3RlbnRTdGF0ZUFsbG93ZWQ7IH0KICAgICBTaGFyZWRCdWZmZXIqIHNlcnZlckNlcnRp
ZmljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2ZXJDZXJ0aWZpY2F0ZS5nZXQoKTsgfQogCi1w
cml2YXRlOgotICAgIHZvaWQgcHJvY2Vzc05leHRDb250ZW50S2V5UmVxdWVzdCgpOwotCi0gICAg
c3RydWN0IENvbnRlbnRLZXlSZXF1ZXN0IHsKLSAgICAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZVNl
c3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+IHNlc3Npb25JbnN0YW5jZTsKLSAgICAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBpZGVudGlmaWVyOwotICAgICAgICBSZXRhaW5QdHI8TlNEYXRh
PiBpbml0RGF0YTsKLSAgICB9OwotICAgIFZlY3RvcjxDb250ZW50S2V5UmVxdWVzdD4gbV9jdXJy
ZW50UmVxdWVzdHM7Ci0KLSAgICBIYXNoTWFwPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0
PiwgV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+PiBt
X3JlcXVlc3RNYXA7CisgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0
ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKTsKKyAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWly
UGxheVN0cmVhbWluZ0FWRk9iakMqIHNlc3Npb25Gb3JLZXlJRHMoY29uc3QgVmVjdG9yPFJlZjxT
aGFyZWRCdWZmZXI+PiYpIGNvbnN0OwogCitwcml2YXRlOgogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fc2VydmVyQ2VydGlmaWNhdGU7CiAgICAgYm9vbCBtX3BlcnNpc3RlbnRTdGF0ZUFsbG93
ZWQgeyB0cnVlIH07CiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3N0b3JhZ2VEaXJlY3Rvcnk7Ci0g
ICAgUmV0YWluUHRyPEFWQ29udGVudEtleVNlc3Npb24+IG1fc2Vzc2lvbjsKLSAgICBSZXRhaW5Q
dHI8V2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGU+IG1fZGVsZWdhdGU7CisgICAg
VmVjdG9yPFdlYWtQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Pj4gbV9zZXNzaW9uczsKIH07CiAKIGNsYXNzIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3Ry
ZWFtaW5nQVZGT2JqQyBmaW5hbCA6IHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb24sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+
IHsKIHB1YmxpYzoKICAgICBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9i
akMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmKTsKKyAgICB2aXJ0
dWFsIH5DRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKTsKIAogICAg
IC8vIENETUluc3RhbmNlU2Vzc2lvbgogICAgIHZvaWQgcmVxdWVzdExpY2Vuc2UoTGljZW5zZVR5
cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgaW5pdERhdGFUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGluaXREYXRhLCBMaWNlbnNlQ2FsbGJhY2smJikgZmluYWw7CkBAIC0xMjYsMTUgKzEwNSwyNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJu
YWxQcm90ZWN0aW9uQ2hhbmdlZChib29sKTsKIAogICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVy
Pj4ga2V5SURzKCk7CisgICAgQVZDb250ZW50S2V5U2Vzc2lvbiogY29udGVudEtleVNlc3Npb24o
KSB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH0KIAogcHJpdmF0ZToKKyAgICBBVkNvbnRlbnRL
ZXlTZXNzaW9uKiBlbnN1cmVTZXNzaW9uKCk7CiAgICAgYm9vbCBpc0xpY2Vuc2VUeXBlU3VwcG9y
dGVkKExpY2Vuc2VUeXBlKSBjb25zdDsKIAorICAgIEtleVN0YXR1c1ZlY3RvciBrZXlTdGF0dXNl
cygpIGNvbnN0OworICAgIHZvaWQgbmV4dFJlcXVlc3QoKTsKKwogICAgIFJlZjxDRE1JbnN0YW5j
ZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQz4gbV9pbnN0YW5jZTsKLSAgICBSZXRhaW5QdHI8QVZD
b250ZW50S2V5UmVxdWVzdD4gbV9yZXF1ZXN0OworICAgIFJldGFpblB0cjxBVkNvbnRlbnRLZXlT
ZXNzaW9uPiBtX3Nlc3Npb247CisgICAgUmV0YWluUHRyPEFWQ29udGVudEtleVJlcXVlc3Q+IG1f
Y3VycmVudFJlcXVlc3Q7CisgICAgUmV0YWluUHRyPFdlYkNvcmVGUFNDb250ZW50S2V5U2Vzc2lv
bkRlbGVnYXRlPiBtX2RlbGVnYXRlOwogICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNEYXRhPj4gbV9l
eHBpcmVkU2Vzc2lvbnM7CiAgICAgV2Vha1B0cjxDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQ+IG1f
Y2xpZW50OwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKKyAgICBib29sIG1fb3V0cHV0T2JzY3Vy
ZWQgeyBmYWxzZSB9OworCisgICAgVmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlSZXF1ZXN0
Pj4gbV9wZW5kaW5nUmVxdWVzdHM7CisgICAgVmVjdG9yPFJldGFpblB0cjxBVkNvbnRlbnRLZXlS
ZXF1ZXN0Pj4gbV9yZXF1ZXN0czsKIAogICAgIExpY2Vuc2VDYWxsYmFjayBtX3JlcXVlc3RMaWNl
bnNlQ2FsbGJhY2s7CiAgICAgTGljZW5zZVVwZGF0ZUNhbGxiYWNrIG1fdXBkYXRlTGljZW5zZUNh
bGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQppbmRleCA1YWMyNGU0NzAyNDRmNTU0Yjlm
NTlhNmM5MDFlMGVlMDEwNThjODQ5Li42YmRhYTU3ZjI3ZjM0Zjk2NjUxMzY0YzlhZWQ0MjE0YzRk
MzE2NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9DRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9DRE1J
bnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2lt
cG9ydCA8QVZGb3VuZGF0aW9uL0FWQ29udGVudEtleVNlc3Npb24uaD4KICNpbXBvcnQgPG9iamMv
cnVudGltZS5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvQVZGb3VuZGF0aW9uU1BJLmg+CisjaW1w
b3J0IDx3dGYvQWxnb3JpdGhtcy5oPgogI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTUzLDEyICs1NCwxMiBAQCBTT0ZUX0xJ
TktfQ0xBU1NfT1BUSU9OQUwoQVZGb3VuZGF0aW9uLCBBVlBlcnNpc3RhYmxlQ29udGVudEtleVJl
cXVlc3QpOwogc3RhdGljIGNvbnN0IE5TU3RyaW5nICpQbGF5YmFja1Nlc3Npb25JZEtleSA9IEAi
UGxheWJhY2tTZXNzaW9uSUQiOwogCiBAaW50ZXJmYWNlIFdlYkNvcmVGUFNDb250ZW50S2V5U2Vz
c2lvbkRlbGVnYXRlIDogTlNPYmplY3Q8QVZDb250ZW50S2V5U2Vzc2lvbkRlbGVnYXRlPiB7Ci0g
ICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIF9wYXJlbnQ7
CisgICAgV2ViQ29yZTo6Q0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
KiBfcGFyZW50OwogfQogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViQ29yZUZQU0NvbnRlbnRL
ZXlTZXNzaW9uRGVsZWdhdGUKLS0gKGlkKWluaXRXaXRoUGFyZW50OihXZWJDb3JlOjpDRE1JbnN0
YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyAqKXBhcmVudAorLSAoaWQpaW5pdFdpdGhQYXJl
bnQ6KFdlYkNvcmU6OkNETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQyAq
KXBhcmVudAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwpAQCAtMTM0LDE3ICsxMzUsNiBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OkNETUluc3RhbmNlRmFpclBs
YXlTdHJlYW1pbmdBVkZPYmpDKCkKLSAgICA6IENETUluc3RhbmNlKCkKLSAgICAsIG1fZGVsZWdh
dGUoW1tXZWJDb3JlRlBTQ29udGVudEtleVNlc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQ
YXJlbnQ6dGhpc10pCi17Ci19Ci0KLUNETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpD
Ojp+Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKQotewotICAgIFttX2RlbGVn
YXRlIGludmFsaWRhdGVdOwotfQotCiBib29sIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdB
VkZPYmpDOjpzdXBwb3J0c1BlcnNpc3RhYmxlU3RhdGUoKQogewogICAgIHJldHVybiBbZ2V0QVZD
b250ZW50S2V5U2Vzc2lvbkNsYXNzKCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihwZW5k
aW5nRXhwaXJlZFNlc3Npb25SZXBvcnRzV2l0aEFwcElkZW50aWZpZXI6c3RvcmFnZURpcmVjdG9y
eUF0VVJMOildOwpAQCAtMTg5LDE2ICsxNzksNiBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1ZhbHVl
IENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjppbml0aWFsaXplV2l0aENvbgog
ICAgIGlmICghY2FuTG9hZEFWQ29udGVudEtleVN5c3RlbUZhaXJQbGF5U3RyZWFtaW5nKCkpCiAg
ICAgICAgIHJldHVybiBGYWlsZWQ7CiAKLSAgICBpZiAoY29uZmlndXJhdGlvbi5wZXJzaXN0ZW50
U3RhdGUgPT0gQ0RNUmVxdWlyZW1lbnQ6Ok5vdEFsbG93ZWQgfHwgIW1fc3RvcmFnZURpcmVjdG9y
eSkKLSAgICAgICAgbV9zZXNzaW9uID0gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIGNv
bnRlbnRLZXlTZXNzaW9uV2l0aEtleVN5c3RlbTpnZXRBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxh
eVN0cmVhbWluZygpXTsKLSAgICBlbHNlCi0gICAgICAgIG1fc2Vzc2lvbiA9IFtnZXRBVkNvbnRl
bnRLZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lvbldpdGhLZXlTeXN0ZW06Z2V0QVZD
b250ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6
bV9zdG9yYWdlRGlyZWN0b3J5LmdldCgpXTsKLQotICAgIGlmICghbV9zZXNzaW9uKQotICAgICAg
ICByZXR1cm4gRmFpbGVkOwotCi0gICAgW21fc2Vzc2lvbiBzZXREZWxlZ2F0ZTptX2RlbGVnYXRl
LmdldCgpIHF1ZXVlOmRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCldOwotCiAgICAgcmV0dXJuIFN1
Y2NlZWRlZDsKIH0KIApAQCAtMjMxLDIzICsyMTEsOSBAQCBDRE1JbnN0YW5jZTo6U3VjY2Vzc1Zh
bHVlIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXRTdG9yYWdlRGlyZWN0
bwogCiBSZWZQdHI8Q0RNSW5zdGFuY2VTZXNzaW9uPiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFt
aW5nQVZGT2JqQzo6Y3JlYXRlU2Vzc2lvbigpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMoKnRoaXMpKTsKLX0KLQot
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvY2Vzc0NvbnRlbnRL
ZXlSZXF1ZXN0Rm9yU2Vzc2lvbihDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FW
Rk9iakMmIHNlc3Npb24sIFJldGFpblB0cjxOU1N0cmluZz4mJiBpZGVudGlmaWVyLCBSZXRhaW5Q
dHI8TlNEYXRhPiYmIGluaXREYXRhKQotewotICAgIG1fY3VycmVudFJlcXVlc3RzLmFwcGVuZCh7
IG1ha2VXZWFrUHRyKHNlc3Npb24pLCBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGluaXRE
YXRhKSB9KTsKLSAgICBpZiAobV9jdXJyZW50UmVxdWVzdHMuc2l6ZSgpID09IDEpCi0gICAgICAg
IHByb2Nlc3NOZXh0Q29udGVudEtleVJlcXVlc3QoKTsKLX0KLQotdm9pZCBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cHJvY2Vzc05leHRDb250ZW50S2V5UmVxdWVzdCgpCi17
Ci0gICAgaWYgKG1fY3VycmVudFJlcXVlc3RzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgYXV0byYgbmV4dFJlcXVlc3QgPSBtX2N1cnJlbnRSZXF1ZXN0cy5maXJzdCgpOwotICAg
IFttX3Nlc3Npb24gcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0V2l0aElkZW50aWZpZXI6bmV4dFJl
cXVlc3QuaWRlbnRpZmllci5nZXQoKSBpbml0aWFsaXphdGlvbkRhdGE6bmV4dFJlcXVlc3QuaW5p
dERhdGEuZ2V0KCkgb3B0aW9uczpuaWxdOworICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpu
ZXcgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKCp0aGlzKSk7Cisg
ICAgbV9zZXNzaW9ucy5hcHBlbmQobWFrZVdlYWtQdHIoc2Vzc2lvbi5nZXQoKSkpOworICAgIHJl
dHVybiBzZXNzaW9uOwogfQogCiBjb25zdCBTdHJpbmcmIENETUluc3RhbmNlRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjprZXlTeXN0ZW0oKSBjb25zdApAQCAtMjU2LDEwOSArMjIyLDY0IEBAIGNv
bnN0IFN0cmluZyYgQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OmtleVN5c3Rl
bSgpIGNvbnN0CiAgICAgcmV0dXJuIGtleVN5c3RlbTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkUHJvdmlkZVJlcXVlc3QoQVZDb250ZW50S2V5UmVx
dWVzdCAqcmVxdWVzdCkKLXsKLSAgICBpZiAobV9jdXJyZW50UmVxdWVzdHMuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGN1cnJlbnRSZXF1ZXN0ID0gV1RGTW92ZShtX2N1
cnJlbnRSZXF1ZXN0cy5maXJzdCgpKTsKLSAgICBtX2N1cnJlbnRSZXF1ZXN0cy5yZW1vdmUoMCk7
Ci0KLSAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9yZXF1ZXN0TWFwLnNldChyZXF1ZXN0LCBjdXJyZW50UmVxdWVzdC5zZXNz
aW9uSW5zdGFuY2UpOwotICAgIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZS0+ZGlkUHJv
dmlkZVJlcXVlc3QocmVxdWVzdCk7Ci0gICAgcHJvY2Vzc05leHRDb250ZW50S2V5UmVxdWVzdCgp
OwotfQotCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92
aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCi17Ci0gICAg
aWYgKG1fY3VycmVudFJlcXVlc3RzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
YXV0byBjdXJyZW50UmVxdWVzdCA9IFdURk1vdmUobV9jdXJyZW50UmVxdWVzdHMuZmlyc3QoKSk7
Ci0gICAgbV9jdXJyZW50UmVxdWVzdHMucmVtb3ZlKDApOwotCi0gICAgaWYgKCFjdXJyZW50UmVx
dWVzdC5zZXNzaW9uSW5zdGFuY2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcmVxdWVzdE1h
cC5zZXQocmVxdWVzdCwgY3VycmVudFJlcXVlc3Quc2Vzc2lvbkluc3RhbmNlKTsKLSAgICBjdXJy
ZW50UmVxdWVzdC5zZXNzaW9uSW5zdGFuY2UtPmRpZFByb3ZpZGVSZW5ld2luZ1JlcXVlc3QocmVx
dWVzdCk7Ci0gICAgcHJvY2Vzc05leHRDb250ZW50S2V5UmVxdWVzdCgpOwotfQotCi12b2lkIENE
TUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVS
ZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCit2b2lkIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0
ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sIG9ic2N1cmVkKQogewotICAgIGlmIChtX2N1cnJl
bnRSZXF1ZXN0cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gY3VycmVu
dFJlcXVlc3QgPSBXVEZNb3ZlKG1fY3VycmVudFJlcXVlc3RzLmZpcnN0KCkpOwotICAgIG1fY3Vy
cmVudFJlcXVlc3RzLnJlbW92ZSgwKTsKLQotICAgIGlmICghY3VycmVudFJlcXVlc3Quc2Vzc2lv
bkluc3RhbmNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlcXVlc3RNYXAuc2V0KHJlcXVl
c3QsIGN1cnJlbnRSZXF1ZXN0LnNlc3Npb25JbnN0YW5jZSk7Ci0gICAgY3VycmVudFJlcXVlc3Qu
c2Vzc2lvbkluc3RhbmNlLT5kaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KHJlcXVlc3QpOwot
ICAgIHByb2Nlc3NOZXh0Q29udGVudEtleVJlcXVlc3QoKTsKKyAgICBmb3IgKGF1dG8mIHNlc3Np
b25JbnRlcmZhY2UgOiBtX3Nlc3Npb25zKSB7CisgICAgICAgIGlmIChzZXNzaW9uSW50ZXJmYWNl
KQorICAgICAgICAgICAgc2Vzc2lvbkludGVyZmFjZS0+b3V0cHV0T2JzY3VyZWREdWVUb0luc3Vm
ZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQob2JzY3VyZWQpOworICAgIH0KIH0KIAot
dm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlk
ZVJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCwgTlNFcnJvciAqZXJyb3IpCitD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakMqIENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzZXNzaW9uRm9yS2V5SURzKGNvbnN0IFZlY3RvcjxSZWY8
U2hhcmVkQnVmZmVyPj4mIGtleUlEcykgY29uc3QKIHsKLSAgICBpZiAoYXV0byBzZXNzaW9uSW50
ZXJmYWNlID0gbV9yZXF1ZXN0TWFwLmdldChyZXF1ZXN0KSkKLSAgICAgICAgc2Vzc2lvbkludGVy
ZmFjZS0+ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QocmVxdWVzdCwgZXJyb3IpOwotfQorICAgIGZv
ciAoYXV0byYgc2Vzc2lvbkludGVyZmFjZSA6IG1fc2Vzc2lvbnMpIHsKKyAgICAgICAgaWYgKCFz
ZXNzaW9uSW50ZXJmYWNlKQorICAgICAgICAgICAgY29udGludWU7CiAKLXZvaWQgQ0RNSW5zdGFu
Y2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVkKEFWQ29udGVudEtl
eVJlcXVlc3QgKnJlcXVlc3QpCi17Ci0gICAgaWYgKGF1dG8gc2Vzc2lvbkludGVyZmFjZSA9IG1f
cmVxdWVzdE1hcC5nZXQocmVxdWVzdCkpCi0gICAgICAgIHNlc3Npb25JbnRlcmZhY2UtPnJlcXVl
c3REaWRTdWNjZWVkKHJlcXVlc3QpOworICAgICAgICBhdXRvIHNlc3Npb25LZXlzID0gc2Vzc2lv
bkludGVyZmFjZS0+a2V5SURzKCk7CisgICAgICAgIGlmIChhbnlPZihzZXNzaW9uS2V5cywgWyZd
KGF1dG8mIHNlc3Npb25LZXkpIHsKKyAgICAgICAgICAgIHJldHVybiBrZXlJRHMuY29udGFpbnMo
c2Vzc2lvbktleSk7CisgICAgICAgIH0pKQorICAgICAgICAgICAgcmV0dXJuIHNlc3Npb25JbnRl
cmZhY2UuZ2V0KCk7CisgICAgfQorICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIENETUlu
c3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpzaG91bGRSZXRyeVJlcXVlc3RGb3JSZWFz
b24oQVZDb250ZW50S2V5UmVxdWVzdCAqcmVxdWVzdCwgTlNTdHJpbmcgKnJlYXNvbikKK0NETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6Q0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDKFJlZjxDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQz4mJiBpbnN0YW5jZSkKKyAgICA6IG1faW5zdGFuY2UoV1RGTW92ZShpbnN0YW5jZSkp
CisgICAgLCBtX2RlbGVnYXRlKFtbV2ViQ29yZUZQU0NvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoUGFyZW50OnRoaXNdKQogewotICAgIGlmIChhdXRvIHNlc3Npb25JbnRl
cmZhY2UgPSBtX3JlcXVlc3RNYXAuZ2V0KHJlcXVlc3QpKQotICAgICAgICByZXR1cm4gc2Vzc2lv
bkludGVyZmFjZS0+c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29uKHJlcXVlc3QsIHJlYXNvbik7
Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1p
bmdBVkZPYmpDOjpzZXNzaW9uSWRlbnRpZmllckNoYW5nZWQoTlNEYXRhICpzZXNzaW9uSWRlbnRp
ZmllcikKK0NETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6fkNETUlu
c3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQygpCiB7Ci0gICAgZm9yIChhdXRv
IHNlc3Npb25JbnRlcmZhY2UgOiBtX3JlcXVlc3RNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYg
KHNlc3Npb25JbnRlcmZhY2UpCi0gICAgICAgICAgICBzZXNzaW9uSW50ZXJmYWNlLT5zZXNzaW9u
SWRlbnRpZmllckNoYW5nZWQoc2Vzc2lvbklkZW50aWZpZXIpOwotICAgIH0KKyAgICBbbV9kZWxl
Z2F0ZSBpbnZhbGlkYXRlXTsKIH0KIAotdm9pZCBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5n
QVZGT2JqQzo6b3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlv
bkNoYW5nZWQoYm9vbCBvYnNjdXJlZCkKK3N0YXRpYyBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+
IGtleUlEc0ZvclJlcXVlc3QoQVZDb250ZW50S2V5UmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBm
b3IgKGF1dG8gc2Vzc2lvbkludGVyZmFjZSA6IG1fcmVxdWVzdE1hcC52YWx1ZXMoKSkgewotICAg
ICAgICBpZiAoc2Vzc2lvbkludGVyZmFjZSkKLSAgICAgICAgICAgIHNlc3Npb25JbnRlcmZhY2Ut
Pm91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2Vk
KG9ic2N1cmVkKTsKKyAgICBpZiAoW3JlcXVlc3QuaWRlbnRpZmllciBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQorICAgICAgICByZXR1cm4gVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+
Pjo6ZnJvbShTaGFyZWRCdWZmZXI6OmNyZWF0ZShbKE5TU3RyaW5nICopcmVxdWVzdC5pZGVudGlm
aWVyIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSkpOworICAgIGlmIChb
cmVxdWVzdC5pZGVudGlmaWVyIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAg
ICByZXR1cm4gVmVjdG9yPFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbShTaGFyZWRCdWZmZXI6OmNy
ZWF0ZSgoTlNEYXRhICopcmVxdWVzdC5pZGVudGlmaWVyKSk7CisgICAgaWYgKHJlcXVlc3QuaW5p
dGlhbGl6YXRpb25EYXRhKSB7CisgICAgICAgIGlmIChhdXRvIHNpbmZLZXlJRHMgPSBDRE1Qcml2
YXRlRmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlcXVlc3QuaW5pdGlhbGl6YXRpb25EYXRhKSkpCisgICAgICAgICAgICByZXR1cm4gV1RG
TW92ZShzaW5mS2V5SURzLnZhbHVlKCkpOwogICAgIH0KLX0KLQotQ0RNSW5zdGFuY2VTZXNzaW9u
RmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVh
bWluZ0FWRk9iakMoUmVmPENETUluc3RhbmNlRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDPiYmIGlu
c3RhbmNlKQotICAgIDogbV9pbnN0YW5jZShXVEZNb3ZlKGluc3RhbmNlKSkKLXsKKyAgICByZXR1
cm4geyB9OwogfQogCiBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IENETUluc3RhbmNlU2Vzc2lv
bkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6a2V5SURzKCkKIHsKICAgICAvLyBGSVhNRShyZGFy
Oi8vcHJvYmxlbS8zNTU5NzE0MSk6IHVzZSB0aGUgZnV0dXJlIEFWQ29udGVudEtleVJlcXVlc3Qg
a2V5SUQgcHJvcGVydHksIHJhdGhlciB0aGFuIHBhcnNpbmcgaXQgb3V0IG9mIHRoZSBpbml0CiAg
ICAgLy8gZGF0YSwgdG8gZ2V0IHRoZSBrZXlJRC4KLSAgICBpZiAoW21fcmVxdWVzdC5nZXQoKS5p
ZGVudGlmaWVyIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgIHJldHVy
biBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFso
TlNTdHJpbmcgKiltX3JlcXVlc3QuZ2V0KCkuaWRlbnRpZmllciBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10pKTsKLSAgICBpZiAoW21fcmVxdWVzdC5nZXQoKS5pZGVudGlm
aWVyIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQotICAgICAgICByZXR1cm4gVmVjdG9y
PFJlZjxTaGFyZWRCdWZmZXI+Pjo6ZnJvbShTaGFyZWRCdWZmZXI6OmNyZWF0ZSgoTlNEYXRhICop
bV9yZXF1ZXN0LmdldCgpLmlkZW50aWZpZXIpKTsKLSAgICBpZiAobV9yZXF1ZXN0LmdldCgpLmlu
aXRpYWxpemF0aW9uRGF0YSkgewotICAgICAgICBhdXRvIHNpbmZLZXlJRHMgPSBDRE1Qcml2YXRl
RmFpclBsYXlTdHJlYW1pbmc6OmV4dHJhY3RLZXlJRHNTaW5mKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KG1fcmVxdWVzdC5nZXQoKS5pbml0aWFsaXphdGlvbkRhdGEpKTsKLSAgICAgICAgaWYgKCFzaW5m
S2V5SURzKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgcmV0dXJuIFdURk1vdmUo
c2luZktleUlEcy52YWx1ZSgpKTsKKyAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlE
czsKKyAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBtX3JlcXVlc3RzKSB7CisgICAgICAgIGZvciAo
YXV0byYga2V5IDoga2V5SURzRm9yUmVxdWVzdChyZXF1ZXN0LmdldCgpKSkKKyAgICAgICAgICAg
IGtleUlEcy5hcHBlbmQoV1RGTW92ZShrZXkpKTsKICAgICB9Ci0gICAgcmV0dXJuIHsgfTsKKwor
ICAgIHJldHVybiBrZXlJRHM7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZXF1ZXN0TGljZW5zZShMaWNlbnNlVHlwZSBsaWNlbnNlVHlwZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBpbml0RGF0YVR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW5p
dERhdGEsIExpY2Vuc2VDYWxsYmFjayYmIGNhbGxiYWNrKQpAQCAtMzczLDYgKzI5NCwxMSBAQCB2
b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6cmVxdWVzdExp
Y2Vuc2UoTGljZW5zZVR5cGUgbGljZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KCFlbnN1cmVTZXNzaW9uKCkpIHsKKyAgICAgICAgY2FsbGJhY2soU2hhcmVkQnVmZmVyOjpjcmVh
dGUoKSwgZW1wdHlTdHJpbmcoKSwgZmFsc2UsIEZhaWxlZCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IGlkZW50aWZpZXI7CiAgICAgUmV0YWluUHRy
PE5TRGF0YT4gaW5pdGlhbGl6YXRpb25EYXRhOwogCkBAIC0zODYsNyArMzEyLDcgQEAgdm9pZCBD
RE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3RMaWNlbnNl
KExpY2Vuc2VUeXBlIGxpY2UKICAgICB9CiAKICAgICBtX3JlcXVlc3RMaWNlbnNlQ2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKTsKLSAgICBtX2luc3RhbmNlLT5wcm9jZXNzQ29udGVudEtleVJl
cXVlc3RGb3JTZXNzaW9uKCp0aGlzLCBXVEZNb3ZlKGlkZW50aWZpZXIpLCBXVEZNb3ZlKGluaXRp
YWxpemF0aW9uRGF0YSkpOworICAgIFttX3Nlc3Npb24gcHJvY2Vzc0NvbnRlbnRLZXlSZXF1ZXN0
V2l0aElkZW50aWZpZXI6aWRlbnRpZmllci5nZXQoKSBpbml0aWFsaXphdGlvbkRhdGE6aW5pdGlh
bGl6YXRpb25EYXRhLmdldCgpIG9wdGlvbnM6bmlsXTsKIH0KIAogc3RhdGljIGJvb2wgaXNFcXVh
bChjb25zdCBTaGFyZWRCdWZmZXImIGRhdGEsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC00Mjgs
MTcgKzM1NCwyMyBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6dXBkYXRlTGljZW5zZShjb25zdCBTdHJpbmcmLCBMaQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKCFtX3JlcXVlc3QpIHsKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdCAm
JiBpc0VxdWFsKHJlc3BvbnNlRGF0YSwgInJlbmV3Il9zKSkgeworICAgICAgICBbbV9zZXNzaW9u
IHJlbmV3RXhwaXJpbmdSZXNwb25zZURhdGFGb3JDb250ZW50S2V5UmVxdWVzdDptX2N1cnJlbnRS
ZXF1ZXN0LmdldCgpXTsKKyAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9jdXJyZW50
UmVxdWVzdCkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBWZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+IGtleUlEcyA9IHRoaXMtPmtleUlEcygpOworICAg
IFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzID0ga2V5SURzRm9yUmVxdWVzdChtX2N1
cnJlbnRSZXF1ZXN0LmdldCgpKTsKICAgICBpZiAoa2V5SURzLmlzRW1wdHkoKSkgewogICAgICAg
ICBjYWxsYmFjayhmYWxzZSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9w
dCwgRmFpbGVkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX3JlcXVlc3QgcHJv
Y2Vzc0NvbnRlbnRLZXlSZXNwb25zZTpbZ2V0QVZDb250ZW50S2V5UmVzcG9uc2VDbGFzcygpIGNv
bnRlbnRLZXlSZXNwb25zZVdpdGhGYWlyUGxheVN0cmVhbWluZ0tleVJlc3BvbnNlRGF0YTpyZXNw
b25zZURhdGEuY3JlYXRlTlNEYXRhKCkuZ2V0KCldXTsKKyAgICBbbV9jdXJyZW50UmVxdWVzdCBw
cm9jZXNzQ29udGVudEtleVJlc3BvbnNlOltnZXRBVkNvbnRlbnRLZXlSZXNwb25zZUNsYXNzKCkg
Y29udGVudEtleVJlc3BvbnNlV2l0aEZhaXJQbGF5U3RyZWFtaW5nS2V5UmVzcG9uc2VEYXRhOnJl
c3BvbnNlRGF0YS5jcmVhdGVOU0RhdGEoKS5nZXQoKV1dOwogCiAgICAgLy8gRklYTUUocmRhcjov
L3Byb2JsZW0vMzU1OTIyNzcpOiBzdGFzaCB0aGUgY2FsbGJhY2sgYW5kIGNhbGwgaXQgb25jZSBB
VkNvbnRlbnRLZXlSZXNwb25zZSBzdXBwb3J0cyBhIHN1Y2Nlc3MgY2FsbGJhY2suCiAgICAgc3Ry
dWN0IG9iamNfbWV0aG9kX2Rlc2NyaXB0aW9uIG1ldGhvZCA9IHByb3RvY29sX2dldE1ldGhvZERl
c2NyaXB0aW9uKEBwcm90b2NvbChBVkNvbnRlbnRLZXlTZXNzaW9uRGVsZWdhdGUpLCBAc2VsZWN0
b3IoY29udGVudEtleVNlc3Npb246Y29udGVudEtleVJlcXVlc3REaWRTdWNjZWVkOiksIE5PLCBZ
RVMpOwpAQCAtNTA2LDE0ICs0MzgsMTYgQEAgdm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxh
eVN0cmVhbWluZ0FWRk9iakM6OmNsb3NlU2Vzc2lvbihjb25zdCBTdHJpbmcmLCBDbG8KICAgICAg
ICAgbV9yZW1vdmVTZXNzaW9uRGF0YUNhbGxiYWNrKHsgfSwgc3RkOjpudWxsb3B0LCBGYWlsZWQp
OwogICAgICAgICBtX3JlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2sgPSBudWxscHRyOwogICAgIH0K
LSAgICBtX3JlcXVlc3QgPSBudWxscHRyOworICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRy
OworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7CisgICAgbV9yZXF1ZXN0cy5jbGVhcigp
OwogICAgIGNhbGxiYWNrKCk7CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjpyZW1vdmVTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgTGljZW5zZVR5cGUgbGljZW5zZVR5cGUsIFJlbW92ZVNlc3Npb25EYXRhQ2FsbGJhY2smJiBj
YWxsYmFjaykKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gZXhwaXJlIGlu
ZGl2aWR1YWwgQVZDb250ZW50S2V5UmVxdWVzdHMgcmF0aGVyIHRoYW4gdGhlIGVudGlyZSBBVkNv
bnRlbnRLZXlTZXNzaW9uLgotICAgIFttX2luc3RhbmNlLT5jb250ZW50S2V5U2Vzc2lvbigpIGV4
cGlyZV07CisgICAgW21fc2Vzc2lvbiBleHBpcmVdOwogCiAgICAgaWYgKGxpY2Vuc2VUeXBlID09
IExpY2Vuc2VUeXBlOjpQZXJzaXN0ZW50VXNhZ2VSZWNvcmQpIHsKICAgICAgICAgYXV0byogc3Rv
cmFnZURpcmVjdG9yeSA9IG1faW5zdGFuY2UtPnN0b3JhZ2VEaXJlY3RvcnkoKTsKQEAgLTU2NCwz
MSArNDk4LDQxIEBAIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpjbGVhckNsaWVudCgpCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNvbnRlbnRLZXlSZXF1ZXN0ICpyZXF1
ZXN0KQogewotICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgaWYgKCFtX3JlcXVlc3RMaWNl
bnNlQ2FsbGJhY2spCisgICAgaWYgKG1fY3VycmVudFJlcXVlc3QpIHsKKyAgICAgICAgbV9wZW5k
aW5nUmVxdWVzdHMuYXBwZW5kKHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgbV9jdXJyZW50UmVxdWVzdCA9IHJlcXVlc3Q7CisKKyAgICBBU1NFUlQoIW1fcmVxdWVzdHMu
Y29udGFpbnMobV9jdXJyZW50UmVxdWVzdCkpOworICAgIG1fcmVxdWVzdHMuYXBwZW5kKG1fY3Vy
cmVudFJlcXVlc3QpOwogCiAgICAgUmV0YWluUHRyPE5TRGF0YT4gYXBwSWRlbnRpZmllcjsKICAg
ICBpZiAoYXV0byogY2VydGlmaWNhdGUgPSBtX2luc3RhbmNlLT5zZXJ2ZXJDZXJ0aWZpY2F0ZSgp
KQogICAgICAgICBhcHBJZGVudGlmaWVyID0gY2VydGlmaWNhdGUtPmNyZWF0ZU5TRGF0YSgpOwot
ICAgIFZlY3RvcjxSZWY8U2hhcmVkQnVmZmVyPj4ga2V5SURzID0gdGhpcy0+a2V5SURzKCk7CiAK
KyAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdCk7CiAgICAgaWYgKGtl
eUlEcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKLSAgICAgICAg
bV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fcmVxdWVz
dExpY2Vuc2VDYWxsYmFjaykgeworICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNr
KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fc2Vzc2lvbklkLCBmYWxzZSwgRmFpbGVkKTsKKyAg
ICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VDYWxsYmFjayA9IG51bGxwdHI7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJldGFpblB0cjxOU0RhdGE+IGNvbnRlbnRJ
ZGVudGlmaWVyID0ga2V5SURzLmZpcnN0KCktPmNyZWF0ZU5TRGF0YSgpOwotICAgIFttX3JlcXVl
c3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVy
LmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6
bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJs
ZSB7CisgICAgW21fY3VycmVudFJlcXVlc3QgbWFrZVN0cmVhbWluZ0NvbnRlbnRLZXlSZXF1ZXN0
RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJZGVudGlmaWVyOmNvbnRlbnRJ
ZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKE5TRGF0YSAqY29udGVudEtleVJlcXVlc3REYXRh
LCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9yID0gcmV0YWluUHRyKGVycm9y
KSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNvbnRlbnRLZXlSZXF1ZXN0RGF0
YSldIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIW1fcmVxdWVzdExpY2Vuc2VDYWxs
YmFjaykKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBpZiAoZXJyb3IgJiYgbV9y
ZXF1ZXN0TGljZW5zZUNhbGxiYWNrKQogICAgICAgICAgICAgICAgIG1fcmVxdWVzdExpY2Vuc2VD
YWxsYmFjayhTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpLCBtX3Nlc3Npb25JZCwgZmFsc2UsIEZhaWxl
ZCk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChtX3JlcXVlc3RMaWNl
bnNlQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrKFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5nZXQoKSksIG1fc2Vzc2lv
bklkLCBmYWxzZSwgU3VjY2VlZGVkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1fY2xpZW50KQor
ICAgICAgICAgICAgICAgIG1fY2xpZW50LT5zZW5kTWVzc2FnZShDRE1NZXNzYWdlVHlwZTo6TGlj
ZW5zZVJlcXVlc3QsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRlbnRLZXlSZXF1ZXN0RGF0YS5n
ZXQoKSkpOwogICAgICAgICAgICAgbV9yZXF1ZXN0TGljZW5zZUNhbGxiYWNrID0gbnVsbHB0cjsK
ICAgICAgICAgfSk7CiAgICAgfV07CkBAIC01OTYsNyArNTQwLDM4IEBAIHZvaWQgQ0RNSW5zdGFu
Y2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUmVxdWVzdChBVkNv
bnRlbnRLZXlSCiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZP
YmpDOjpkaWRQcm92aWRlUmVuZXdpbmdSZXF1ZXN0KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVl
c3QpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOworICAgIEFTU0VSVCghbV9yZXF1ZXN0
TGljZW5zZUNhbGxiYWNrKTsKKyAgICBpZiAobV9jdXJyZW50UmVxdWVzdCkgeworICAgICAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQocmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2N1cnJlbnRSZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgIC8vIFRoZSBhc3N1bXB0
aW9uIGhlcmUgaXMgdGhhdCBBVkNvbnRlbnRLZXlSZXF1ZXN0IHdpbGwgb25seSBldmVyIG5vdGlm
eSB1cyBvZiBhIHJlbmV3aW5nIHJlcXVlc3QgYXMgYSByZXN1bHQgb2YgY2FsbGluZworICAgIC8v
IC1yZW5ld0V4cGlyaW5nUmVzcG9uc2VEYXRhRm9yQ29udGVudEtleVJlcXVlc3Q6IHdpdGggYW4g
ZXhpc3RpbmcgcmVxdWVzdC4KKyAgICBBU1NFUlQobV9yZXF1ZXN0cy5jb250YWlucyhtX2N1cnJl
bnRSZXF1ZXN0KSk7CisKKyAgICBSZXRhaW5QdHI8TlNEYXRhPiBhcHBJZGVudGlmaWVyOworICAg
IGlmIChhdXRvKiBjZXJ0aWZpY2F0ZSA9IG1faW5zdGFuY2UtPnNlcnZlckNlcnRpZmljYXRlKCkp
CisgICAgICAgIGFwcElkZW50aWZpZXIgPSBjZXJ0aWZpY2F0ZS0+Y3JlYXRlTlNEYXRhKCk7Cisg
ICAgYXV0byBrZXlJRHMgPSBrZXlJRHNGb3JSZXF1ZXN0KG1fY3VycmVudFJlcXVlc3QuZ2V0KCkp
OworCisgICAgUmV0YWluUHRyPE5TRGF0YT4gY29udGVudElkZW50aWZpZXIgPSBrZXlJRHMuZmly
c3QoKS0+Y3JlYXRlTlNEYXRhKCk7CisgICAgW21fY3VycmVudFJlcXVlc3QgbWFrZVN0cmVhbWlu
Z0NvbnRlbnRLZXlSZXF1ZXN0RGF0YUZvckFwcDphcHBJZGVudGlmaWVyLmdldCgpIGNvbnRlbnRJ
ZGVudGlmaWVyOmNvbnRlbnRJZGVudGlmaWVyLmdldCgpIG9wdGlvbnM6bmlsIGNvbXBsZXRpb25I
YW5kbGVyOlt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKE5TRGF0YSAqY29u
dGVudEtleVJlcXVlc3REYXRhLCBOU0Vycm9yICplcnJvcikgbXV0YWJsZSB7CisgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGVycm9y
ID0gcmV0YWluUHRyKGVycm9yKSwgY29udGVudEtleVJlcXVlc3REYXRhID0gcmV0YWluUHRyKGNv
bnRlbnRLZXlSZXF1ZXN0RGF0YSldIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIW1f
Y2xpZW50IHx8IGVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
aWYgKGVycm9yICYmIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrKQorICAgICAgICAgICAgICAgIG1f
dXBkYXRlTGljZW5zZUNhbGxiYWNrKGZhbHNlLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwg
c3RkOjpudWxsb3B0LCBGYWlsZWQpOworICAgICAgICAgICAgZWxzZSBpZiAobV91cGRhdGVMaWNl
bnNlQ2FsbGJhY2spCisgICAgICAgICAgICAgICAgbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2soZmFs
c2UsIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0LCBNZXNzYWdlKE1lc3NhZ2VUeXBlOjpMaWNl
bnNlUmVuZXdhbCwgU2hhcmVkQnVmZmVyOjpjcmVhdGUoY29udGVudEtleVJlcXVlc3REYXRhLmdl
dCgpKSksIFN1Y2NlZWRlZCk7CisgICAgICAgICAgICBlbHNlIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgICAgICAgICBtX2NsaWVudC0+c2VuZE1lc3NhZ2UoQ0RNTWVzc2FnZVR5cGU6OkxpY2Vuc2VS
ZW5ld2FsLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50S2V5UmVxdWVzdERhdGEuZ2V0KCkp
KTsKKyAgICAgICAgICAgIG1fdXBkYXRlTGljZW5zZUNhbGxiYWNrID0gbnVsbHB0cjsKKyAgICAg
ICAgfSk7CisgICAgfV07CiB9CiAKIHZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJl
YW1pbmdBVkZPYmpDOjpkaWRQcm92aWRlUGVyc2lzdGFibGVSZXF1ZXN0KEFWQ29udGVudEtleVJl
cXVlc3QgKnJlcXVlc3QpCkBAIC02MTAsMTkgKzU4NSwzNSBAQCB2b2lkIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6ZGlkRmFpbFRvUHJvdmlkZVJlcXVlc3QoQVZD
b250ZQogICAgIFVOVVNFRF9QQVJBTShlcnJvcik7CiAgICAgaWYgKG1fdXBkYXRlTGljZW5zZUNh
bGxiYWNrKQogICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwgc3RkOjpudWxs
b3B0LCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCwgRmFpbGVkKTsKKworICAgIG1fY3VycmVu
dFJlcXVlc3QgPSBudWxscHRyOworCisgICAgbmV4dFJlcXVlc3QoKTsKIH0KIAogdm9pZCBDRE1J
bnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6OnJlcXVlc3REaWRTdWNjZWVk
KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHJlcXVl
c3QpOwotICAgIGlmICghbV91cGRhdGVMaWNlbnNlQ2FsbGJhY2spCisgICAgaWYgKG1fdXBkYXRl
TGljZW5zZUNhbGxiYWNrKQorICAgICAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxsYmFjayhmYWxzZSwg
c3RkOjptYWtlX29wdGlvbmFsKGtleVN0YXR1c2VzKCkpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVs
bG9wdCwgU3VjY2VlZGVkKTsKKworICAgIG1fY3VycmVudFJlcXVlc3QgPSBudWxscHRyOworCisg
ICAgbmV4dFJlcXVlc3QoKTsKK30KKwordm9pZCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0
cmVhbWluZ0FWRk9iakM6Om5leHRSZXF1ZXN0KCkKK3sKKyAgICBpZiAobV9wZW5kaW5nUmVxdWVz
dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0b3I8UmVmPFNoYXJlZEJ1
ZmZlcj4+IGtleUlEcyA9IHRoaXMtPmtleUlEcygpOwotICAgIEtleVN0YXR1c1ZlY3RvciBrZXlT
dGF0dXNlczsKLSAgICBrZXlTdGF0dXNlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDEpOwotICAg
IGtleVN0YXR1c2VzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKGtleUlE
cy5maXJzdCgpKSwgS2V5U3RhdHVzOjpVc2FibGUpKTsKLSAgICBtX3VwZGF0ZUxpY2Vuc2VDYWxs
YmFjayhmYWxzZSwgc3RkOjptYWtlX29wdGlvbmFsKFdURk1vdmUoa2V5U3RhdHVzZXMpKSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQsIFN1Y2NlZWRlZCk7CisgICAgUmV0YWluUHRyPEFWQ29u
dGVudEtleVJlcXVlc3Q+IG5leHRSZXF1ZXN0ID0gbV9wZW5kaW5nUmVxdWVzdHMuZmlyc3QoKTsK
KyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5yZW1vdmUoMCk7CisKKyAgICBpZiAobmV4dFJlcXVlc3Qu
Z2V0KCkucmVuZXdzRXhwaXJpbmdSZXNwb25zZURhdGEpCisgICAgICAgIGRpZFByb3ZpZGVSZW5l
d2luZ1JlcXVlc3QobmV4dFJlcXVlc3QuZ2V0KCkpOworICAgIGVsc2UKKyAgICAgICAgZGlkUHJv
dmlkZVJlcXVlc3QobmV4dFJlcXVlc3QuZ2V0KCkpOwogfQogCiBib29sIENETUluc3RhbmNlU2Vz
c2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQzo6c2hvdWxkUmV0cnlSZXF1ZXN0Rm9yUmVhc29u
KEFWQ29udGVudEtleVJlcXVlc3QgKnJlcXVlc3QsIE5TU3RyaW5nICpyZWFzb24pCkBAIC02NDQs
MzcgKzYzNSw2NiBAQCB2b2lkIENETUluc3RhbmNlU2Vzc2lvbkZhaXJQbGF5U3RyZWFtaW5nQVZG
T2JqQzo6c2Vzc2lvbklkZW50aWZpZXJDaGFuZ2VkKE5TRGF0YQogICAgIG1fc2Vzc2lvbklkID0g
c2Vzc2lvbklkZW50aWZpZXJTdHJpbmcuZ2V0KCk7CiB9CiAKLXZvaWQgQ0RNSW5zdGFuY2VTZXNz
aW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNp
ZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29sIG9ic2N1cmVkKQorc3RhdGljIGF1dG8g
cmVxdWVzdFN0YXR1c1RvQ0RNU3RhdHVzKEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXMgc3RhdHVz
KQogewotICAgIGlmICghbV9jbGllbnQgfHwgIW1fcmVxdWVzdCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQ0RNS2V5U3RhdHVzIHN0YXR1czsKLSAgICBpZiAob2JzY3VyZWQpCi0gICAgICAgIHN0
YXR1cyA9IENETUtleVN0YXR1czo6T3V0cHV0UmVzdHJpY3RlZDsKLSAgICBlbHNlIHsKLSAgICAg
ICAgc3dpdGNoIChtX3JlcXVlc3QuZ2V0KCkuc3RhdHVzKSB7CisgICAgc3dpdGNoIChzdGF0dXMp
IHsKICAgICAgICAgY2FzZSBBVkNvbnRlbnRLZXlSZXF1ZXN0U3RhdHVzUmVxdWVzdGluZ1Jlc3Bv
bnNlOgogICAgICAgICBjYXNlIEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXNSZXRyaWVkOgotICAg
ICAgICAgICAgc3RhdHVzID0gQ0RNS2V5U3RhdHVzOjpTdGF0dXNQZW5kaW5nOwotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gQ0RNS2V5U3RhdHVzOjpTdGF0dXNQZW5kaW5n
OwogICAgICAgICBjYXNlIEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXNSZWNlaXZlZFJlc3BvbnNl
OgogICAgICAgICBjYXNlIEFWQ29udGVudEtleVJlcXVlc3RTdGF0dXNSZW5ld2VkOgotICAgICAg
ICAgICAgc3RhdHVzID0gQ0RNS2V5U3RhdHVzOjpVc2FibGU7Ci0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIHJldHVybiBDRE1LZXlTdGF0dXM6OlVzYWJsZTsKICAgICAgICAgY2FzZSBB
VkNvbnRlbnRLZXlSZXF1ZXN0U3RhdHVzQ2FuY2VsbGVkOgotICAgICAgICAgICAgc3RhdHVzID0g
Q0RNS2V5U3RhdHVzOjpSZWxlYXNlZDsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
cmV0dXJuIENETUtleVN0YXR1czo6UmVsZWFzZWQ7CiAgICAgICAgIGNhc2UgQVZDb250ZW50S2V5
UmVxdWVzdFN0YXR1c0ZhaWxlZDoKLSAgICAgICAgICAgIHN0YXR1cyA9IENETUtleVN0YXR1czo6
SW50ZXJuYWxFcnJvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4gQ0RNS2V5U3RhdHVzOjpJbnRlcm5hbEVycm9yOworICAgIH0KK30KKworQ0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3IgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlT
dHJlYW1pbmdBVkZPYmpDOjprZXlTdGF0dXNlcygpIGNvbnN0Cit7CisgICAgS2V5U3RhdHVzVmVj
dG9yIGtleVN0YXR1c2VzOworCisgICAgZm9yIChhdXRvJiByZXF1ZXN0IDogbV9yZXF1ZXN0cykg
eworICAgICAgICBhdXRvIGtleUlEcyA9IGtleUlEc0ZvclJlcXVlc3QocmVxdWVzdC5nZXQoKSk7
CisgICAgICAgIGF1dG8gc3RhdHVzID0gcmVxdWVzdFN0YXR1c1RvQ0RNU3RhdHVzKHJlcXVlc3Qu
Z2V0KCkuc3RhdHVzKTsKKyAgICAgICAgaWYgKG1fb3V0cHV0T2JzY3VyZWQpCisgICAgICAgICAg
ICBzdGF0dXMgPSBDRE1LZXlTdGF0dXM6Ok91dHB1dFJlc3RyaWN0ZWQ7CisKKyAgICAgICAgZm9y
IChhdXRvJiBrZXlJRCA6IGtleUlEcykKKyAgICAgICAgICAgIGtleVN0YXR1c2VzLmFwcGVuZCh7
IFdURk1vdmUoa2V5SUQpLCBzdGF0dXMgfSk7CiAgICAgfQogCi0gICAgYXV0byBrZXlTdGF0dXNl
cyA9IGtleUlEcygpLm1hcChbc3RhdHVzXSAoY29uc3QgUmVmPFNoYXJlZEJ1ZmZlcj4mIGtleUlE
KSAtPiBLZXlTdGF0dXNWZWN0b3I6OlZhbHVlVHlwZSB7Ci0gICAgICAgIHJldHVybiB7IGtleUlE
LmNvcHlSZWYoKSwgc3RhdHVzIH07Ci0gICAgfSk7Ci0gICAgbV9jbGllbnQtPnVwZGF0ZUtleVN0
YXR1c2VzKFdURk1vdmUoa2V5U3RhdHVzZXMpKTsKKyAgICByZXR1cm4ga2V5U3RhdHVzZXM7Cit9
CisKK3ZvaWQgQ0RNSW5zdGFuY2VTZXNzaW9uRmFpclBsYXlTdHJlYW1pbmdBVkZPYmpDOjpvdXRw
dXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJuYWxQcm90ZWN0aW9uQ2hhbmdlZChib29s
IG9ic2N1cmVkKQoreworICAgIGlmIChvYnNjdXJlZCA9PSBtX291dHB1dE9ic2N1cmVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX291dHB1dE9ic2N1cmVkID0gb2JzY3VyZWQ7CisKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT51cGRhdGVLZXlTdGF0dXNlcyhrZXlTdGF0
dXNlcygpKTsKK30KKworQVZDb250ZW50S2V5U2Vzc2lvbiogQ0RNSW5zdGFuY2VTZXNzaW9uRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDOjplbnN1cmVTZXNzaW9uKCkKK3sKKyAgICBpZiAobV9zZXNz
aW9uKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9uLmdldCgpOworCisgICAgYXV0byogc3RvcmFn
ZURpcmVjdG9yeSA9IG1faW5zdGFuY2UtPnN0b3JhZ2VEaXJlY3RvcnkoKTsKKyAgICBpZiAoIW1f
aW5zdGFuY2UtPnBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQoKSB8fCAhc3RvcmFnZURpcmVjdG9yeSkK
KyAgICAgICAgbV9zZXNzaW9uID0gW2dldEFWQ29udGVudEtleVNlc3Npb25DbGFzcygpIGNvbnRl
bnRLZXlTZXNzaW9uV2l0aEtleVN5c3RlbTpnZXRBVkNvbnRlbnRLZXlTeXN0ZW1GYWlyUGxheVN0
cmVhbWluZygpXTsKKyAgICBlbHNlCisgICAgICAgIG1fc2Vzc2lvbiA9IFtnZXRBVkNvbnRlbnRL
ZXlTZXNzaW9uQ2xhc3MoKSBjb250ZW50S2V5U2Vzc2lvbldpdGhLZXlTeXN0ZW06Z2V0QVZDb250
ZW50S2V5U3lzdGVtRmFpclBsYXlTdHJlYW1pbmcoKSBzdG9yYWdlRGlyZWN0b3J5QXRVUkw6c3Rv
cmFnZURpcmVjdG9yeV07CisKKyAgICBpZiAoIW1fc2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBbbV9zZXNzaW9uIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCkgcXVl
dWU6ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKV07CisgICAgcmV0dXJuIG1fc2Vzc2lvbi5nZXQo
KTsKIH0KIAogYm9vbCBDRE1JbnN0YW5jZVNlc3Npb25GYWlyUGxheVN0cmVhbWluZ0FWRk9iakM6
OmlzTGljZW5zZVR5cGVTdXBwb3J0ZWQoTGljZW5zZVR5cGUgbGljZW5zZVR5cGUpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb25PYmpDLmgKaW5kZXggMjdiM2ZhNWVjMjZiNTM4ODNkMjA1MmZmZjZlNmE5MDRm
MGEwODQxYy4uNTE1NmVkZDMxMzM0YjNiMWNjNzU0MzBmZjFiOTUwNmQwZDA1ZjM4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBDRE1TZXNzaW9uQVZGb3Vu
ZGF0aW9uT2JqQzsKIGNsYXNzIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjsKIGNs
YXNzIE1lZGlhU2VsZWN0aW9uR3JvdXBBVkZPYmpDOwogY2xhc3MgUGl4ZWxCdWZmZXJDb25mb3Jt
ZXJDVjsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbkxheWVyTWFu
YWdlck9iakM7CiBjbGFzcyBWaWRlb1RleHR1cmVDb3BpZXJDVjsKIGNsYXNzIFZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQzsKQEAgLTQxMSw2ICs0MTIsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxOU0FycmF5PiBtX2N1cnJlbnRNZXRhRGF0YTsKICAgICBGbG9hdFNpemUgbV9jYWNoZWRQcmVz
ZW50YXRpb25TaXplOwogICAgIE1lZGlhVGltZSBtX2NhY2hlZER1cmF0aW9uOworICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fa2V5SUQ7CiAgICAgZG91YmxlIG1fY2FjaGVkUmF0ZTsKICAgICBt
dXRhYmxlIGxvbmcgbG9uZyBtX2NhY2hlZFRvdGFsQnl0ZXM7CiAgICAgdW5zaWduZWQgbV9wZW5k
aW5nU3RhdHVzQ2hhbmdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDg1NTQ2MzQyMjBk
MTU5ZjZjZjgxNWE4YTE1OTFiMWFiYmE5Nzc3M2YuLjQwNzQ2MGVkYjU1ZTViNDgyZmYwYzZjMDIy
OGFhZGRlZTQzYjRhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtMTc4Miw4ICsxNzgy
LDggQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpzaG91bGRXYWl0
Rm9yTG9hZGluZ09mUmVzb3VyY2UoQVZBc3NldFIKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgICAgICBSZXRhaW5QdHI8TlNEYXRhPiBrZXlVUklEYXRhID0gW2tleVVSSSBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBhbGxvd0xvc3N5Q29udmVyc2lvbjpZRVNd
OwotICAgICAgICBhdXRvIGtleVVSSUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleVVS
SURhdGEuZ2V0KCkpOwotICAgICAgICBwbGF5ZXIoKS0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3Vu
dGVyZWQoInNrZCJfcywga2V5VVJJQnVmZmVyLT50cnlDcmVhdGVBcnJheUJ1ZmZlcigpKTsKKyAg
ICAgICAgbV9rZXlJRCA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGtleVVSSURhdGEuZ2V0KCkpOwor
ICAgICAgICBwbGF5ZXIoKS0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNrZCJfcywg
bV9rZXlJRC0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CiAgICAgICAgIHNldFdhaXRpbmdGb3JL
ZXkodHJ1ZSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDc4LDcgKzI0Nzgs
NiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OmNkbUluc3RhbmNl
QXR0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3RhbgogICAgICAgICBjZG1JbnN0YW5jZURldGFjaGVk
KCptX2NkbUluc3RhbmNlKTsKIAogICAgIG1fY2RtSW5zdGFuY2UgPSAmZnBzSW5zdGFuY2U7Ci0g
ICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lw
aWVudDptX2F2QXNzZXQuZ2V0KCldOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2Up
OwogI2VuZGlmCkBAIC0yNDg4LDcgKzI0ODcsNiBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OmNkbUluc3RhbmNlRGV0YWNoZWQoQ0RNSW5zdGFuY2UmIGluc3Rhbgog
ewogI2lmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKICAgICBBU1NFUlRfVU5VU0VEKGluc3Rh
bmNlLCBtX2NkbUluc3RhbmNlICYmIG1fY2RtSW5zdGFuY2UgPT0gJmluc3RhbmNlKTsKLSAgICBb
bV9jZG1JbnN0YW5jZS0+Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBp
ZW50Om1fYXZBc3NldC5nZXQoKV07CiAgICAgbV9jZG1JbnN0YW5jZSA9IG51bGxwdHI7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7CkBAIC0yNDk3LDYgKzI0OTUsMTUgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpjZG1JbnN0YW5jZURldGFjaGVk
KENETUluc3RhbmNlJiBpbnN0YW4KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJikKIHsKKyAg
ICBpZiAoIW1fa2V5SUQgfHwgIW1fY2RtSW5zdGFuY2UpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5jZS0+c2Vzc2lvbkZvcktleUlEcyhW
ZWN0b3I8UmVmPFNoYXJlZEJ1ZmZlcj4+Ojpmcm9tKCptX2tleUlEKSk7CisgICAgaWYgKCFpbnN0
YW5jZVNlc3Npb24pCisgICAgICAgIHJldHVybjsKKworICAgIFtpbnN0YW5jZVNlc3Npb24tPmNv
bnRlbnRLZXlTZXNzaW9uKCkgYWRkQ29udGVudEtleVJlY2lwaWVudDptX2F2QXNzZXQuZ2V0KCld
OworCiAgICAgYXV0byBrZXlVUklUb1JlcXVlc3RNYXAgPSBXVEZNb3ZlKG1fa2V5VVJJVG9SZXF1
ZXN0TWFwKTsKICAgICBmb3IgKGF1dG8mIHJlcXVlc3QgOiBrZXlVUklUb1JlcXVlc3RNYXAudmFs
dWVzKCkpIHsKICAgICAgICAgaWYgKGF1dG8gKmluZm9SZXF1ZXN0ID0gcmVxdWVzdC5nZXQoKS5j
b250ZW50SW5mb3JtYXRpb25SZXF1ZXN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaAppbmRleCA5
NjIyMjRlNjAwNzZkZDY5MThkYjhiNThkOWM1OWEyNGVmZWQ0NjE2Li4wMzYwNWZjNDJhODFiODY4
Yzk4NjNjNmYyMWY3ZWNjNjQyNTMwNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNv
dXJjZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaApAQCAt
MTIzLDcgKzEyMyw2IEBAIHB1YmxpYzoKICAgICBib29sIHdhaXRpbmdGb3JLZXkoKSBjb25zdCBm
aW5hbDsKIAogICAgIHZvaWQgd2FpdGluZ0ZvcktleUNoYW5nZWQoKTsKLSAgICBDRE1JbnN0YW5j
ZSogY2RtSW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBtX2NkbUluc3RhbmNlLmdldCgpOyB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKSB8fCBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQpAQCAtMzA5LDkgKzMwOCw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3No
b3VsZFBsYXlUb1RhcmdldCB7IGZhbHNlIH07CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmlkZW9GdWxsc2NyZWVuTGF5ZXJNYW5hZ2VyT2JqQz4gbV92aWRlb0Z1bGxzY3JlZW5MYXllck1h
bmFnZXI7Ci0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBSZWZQdHI8Q0RNSW5zdGFu
Y2U+IG1fY2RtSW5zdGFuY2U7Ci0jZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2Jq
Qy5tbQppbmRleCBmMjY4N2EwMjlkNzk1Y2QyYmVlNjcwYmYwYjFjNjIyYjhlZTg5NGQwLi5mYTcz
MjViYzU4OGZjNzUyNDI0OTUzNzhhOGI2YmRlMTE0MzY4ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDLm1tCkBAIC0zMCw5ICszMCw3IEBACiAKICNpbXBvcnQgIkFWQXNzZXRUcmFja1V0aWxp
dGllcy5oIgogI2ltcG9ydCAiQVZGb3VuZGF0aW9uTUlNRVR5cGVDYWNoZS5oIgotI2ltcG9ydCAi
Q0RNSW5zdGFuY2UuaCIKICNpbXBvcnQgIkNETVNlc3Npb25BVlN0cmVhbVNlc3Npb24uaCIKLSNp
bXBvcnQgIkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCIKICNpbXBvcnQgIkZpbGVTeXN0
ZW0uaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CkBAIC01MCw3ICs0OCw2IEBACiAjaW1wb3J0IDxvYmpjX3J1bnRpbWUuaD4KICNpbXBvcnQgPHBh
bC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxwYWwvc3Bp
L21hYy9BVkZvdW5kYXRpb25TUEkuaD4KLSNpbXBvcnQgPHd0Zi9BbGdvcml0aG1zLmg+CiAjaW1w
b3J0IDx3dGYvRGVxdWUuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW1wb3J0IDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTkzMyw4ICs5MzAsOCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQzo6a2V5TmVlZGVkKFVpbnQ4QXJyYXkqIGluaXREYXRh
KQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6Om91dHB1dE9ic2N1
cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3Vy
ZWQpCiB7CiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBpZiAobV9jZG1JbnN0YW5j
ZSkKLSAgICAgICAgbV9jZG1JbnN0YW5jZS0+c2V0SERDUFN0YXR1cyhvYnNjdXJlZCA/IENETUlu
c3RhbmNlOjpIRENQU3RhdHVzOjpPdXRwdXRSZXN0cmljdGVkIDogQ0RNSW5zdGFuY2U6OkhEQ1BT
dGF0dXM6OlZhbGlkKTsKKyAgICBpZiAobV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIG1f
bWVkaWFTb3VyY2VQcml2YXRlLT5vdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJu
YWxQcm90ZWN0aW9uQ2hhbmdlZChvYnNjdXJlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShv
YnNjdXJlZCk7CiAjZW5kaWYKQEAgLTk0NCwzMCArOTQxLDI1IEBAIHZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpvdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50
RXh0ZXJuCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjZG1JbnN0YW5jZUF0dGFjaGVkKENETUluc3RhbmNlJiBp
bnN0YW5jZSkKIHsKLSAgICBBU1NFUlQoIW1fY2RtSW5zdGFuY2UpOwotICAgIG1fY2RtSW5zdGFu
Y2UgPSAmaW5zdGFuY2U7Ci0gICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX21lZGlhU291
cmNlUHJpdmF0ZS0+c291cmNlQnVmZmVycygpKQotICAgICAgICBzb3VyY2VCdWZmZXItPnNldENE
TUluc3RhbmNlKCZpbnN0YW5jZSk7CisgICAgaWYgKG1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAg
ICAgICBtX21lZGlhU291cmNlUHJpdmF0ZS0+Y2RtSW5zdGFuY2VBdHRhY2hlZChpbnN0YW5jZSk7
CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDOjpjZG1JbnN0
YW5jZURldGFjaGVkKENETUluc3RhbmNlJiBpbnN0YW5jZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KGluc3RhbmNlLCBtX2NkbUluc3RhbmNlICYmIG1fY2RtSW5zdGFuY2UgPT0gJmluc3RhbmNlKTsK
LSAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6IG1fbWVkaWFTb3VyY2VQcml2YXRlLT5zb3Vy
Y2VCdWZmZXJzKCkpCi0gICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobnVsbHB0
cik7Ci0KLSAgICBtX2NkbUluc3RhbmNlID0gbnVsbHB0cjsKKyAgICBpZiAobV9tZWRpYVNvdXJj
ZVByaXZhdGUpCisgICAgICAgIG1fbWVkaWFTb3VyY2VQcml2YXRlLT5jZG1JbnN0YW5jZURldGFj
aGVkKGluc3RhbmNlKTsKIH0KIAotdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRoSW5zdGFuY2UoQ0RNSW5zdGFuY2UmKQordm9pZCBN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OmF0dGVtcHRUb0RlY3J5cHRXaXRo
SW5zdGFuY2UoQ0RNSW5zdGFuY2UmIGluc3RhbmNlKQogeworICAgIGlmIChtX21lZGlhU291cmNl
UHJpdmF0ZSkKKyAgICAgICAgbV9tZWRpYVNvdXJjZVByaXZhdGUtPmF0dGVtcHRUb0RlY3J5cHRX
aXRoSW5zdGFuY2UoaW5zdGFuY2UpOwogfQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U291cmNlQVZGT2JqQzo6d2FpdGluZ0ZvcktleSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGFueU9m
KG1fbWVkaWFTb3VyY2VQcml2YXRlLT5zb3VyY2VCdWZmZXJzKCksIFtdIChhdXRvJiBzb3VyY2VC
dWZmZXIpIHsKLSAgICAgICAgcmV0dXJuIHNvdXJjZUJ1ZmZlci0+d2FpdGluZ0ZvcktleSgpOwot
ICAgIH0pOworICAgIHJldHVybiBtX21lZGlhU291cmNlUHJpdmF0ZSA/IG1fbWVkaWFTb3VyY2VQ
cml2YXRlLT53YWl0aW5nRm9yS2V5KCkgOiBmYWxzZTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAppbmRleCBh
YzRhYzkwOWJjMjM0ZWYwZjkyMmJmMzUzZjg1ZWNjZjFkMDEyMDBmLi4wYzA0YWY5MDQzMDI5MWYx
MmExMjE5ZWIzYzQzNThjY2E0ZjJiZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYg
c3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBsZUJ1ZmZlclJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBDRE1JbnN0YW5jZTsKIGNsYXNzIExlZ2FjeUNETVNlc3Np
b247CiBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBN
ZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ7CkBAIC04NCw2ICs4NSwxNiBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRWaWRlb0xheWVyKEFWU2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKik7CiAgICAgdm9p
ZCBzZXREZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24qKTsK
IAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgdm9pZCBjZG1JbnN0YW5jZUF0dGFj
aGVkKENETUluc3RhbmNlJik7CisgICAgdm9pZCBjZG1JbnN0YW5jZURldGFjaGVkKENETUluc3Rh
bmNlJik7CisgICAgdm9pZCBhdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNl
Jik7CisgICAgYm9vbCB3YWl0aW5nRm9yS2V5KCkgY29uc3Q7CisgICAgCisgICAgQ0RNSW5zdGFu
Y2UqIGNkbUluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV9jZG1JbnN0YW5jZS5nZXQoKTsgfQor
ICAgIHZvaWQgb3V0cHV0T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlv
bkNoYW5nZWQoYm9vbCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDKE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyosIE1lZGlhU291
cmNlUHJpdmF0ZUNsaWVudCopOwogCkBAIC0xMDYsNiArMTE3LDkgQEAgcHJpdmF0ZToKICAgICBE
ZXF1ZTxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyo+IG1fc291cmNlQnVmZmVyc05lZWRpbmdT
ZXNzaW9uczsKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyogbV9zb3VyY2VCdWZmZXJX
aXRoU2VsZWN0ZWRWaWRlbyB7IG51bGxwdHIgfTsKICAgICBib29sIG1faXNFbmRlZDsKKyNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgIFJlZlB0cjxDRE1JbnN0YW5jZT4gbV9jZG1JbnN0
YW5jZTsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggMGEyYjA0MzhkZGE2YTc0OTc1NDNlYTJi
YmJkYTY4NDkzNmM1Y2M1OC4uZTA4NGM5MGQ1ZmQ3N2U2NmViZDJhZTg0ZTMxNjdkZmQ5ZTkzNzNj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLm1tCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0Up
ICYmIFVTRShBVkZPVU5EQVRJT04pCiAKKyNpbXBvcnQgIkNETUluc3RhbmNlLmgiCiAjaW1wb3J0
ICJDRE1TZXNzaW9uTWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1wb3J0ICJDb250ZW50VHlwZS5o
IgogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDLmgiCiAjaW1w
b3J0ICJNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQuaCIKICNpbXBvcnQgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLmgiCiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KKyNpbXBvcnQgPHd0Zi9B
bGdvcml0aG1zLmg+CiAjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPHd0Zi90
ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC03MCw4ICs3MiwxMiBAQCBNZWRpYVNvdXJjZVByaXZh
dGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjphZGRTb3VyY2VCdWZmZXIo
Y29uc3QgQwogICAgIGlmIChNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM6OnN1
cHBvcnRzVHlwZShwYXJhbWV0ZXJzKSA9PSBNZWRpYVBsYXllcjo6SXNOb3RTdXBwb3J0ZWQpCiAg
ICAgICAgIHJldHVybiBOb3RTdXBwb3J0ZWQ7CiAKLSAgICBtX3NvdXJjZUJ1ZmZlcnMuYXBwZW5k
KFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpjcmVhdGUodGhpcykpOwotICAgIG91dFByaXZh
dGUgPSBtX3NvdXJjZUJ1ZmZlcnMubGFzdCgpOworICAgIGF1dG8gbmV3U291cmNlQnVmZmVyID0g
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZSh0aGlzKTsKKyNpZiBFTkFCTEUoRU5D
UllQVEVEX01FRElBKQorICAgIG5ld1NvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobV9jZG1J
bnN0YW5jZS5nZXQoKSk7CisjZW5kaWYKKyAgICBvdXRQcml2YXRlID0gbmV3U291cmNlQnVmZmVy
OworICAgIG1fc291cmNlQnVmZmVycy5hcHBlbmQoV1RGTW92ZShuZXdTb3VyY2VCdWZmZXIpKTsK
IAogICAgIHJldHVybiBPazsKIH0KQEAgLTI0NSw2ICsyNTEsNDUgQEAgdm9pZCBNZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDOjpzZXREZWNvbXByZXNzaW9uU2Vzc2lvbihXZWJDb3JlRGVjb21wcmVz
c2lvblNlc3MKICAgICAgICAgbV9zb3VyY2VCdWZmZXJXaXRoU2VsZWN0ZWRWaWRlby0+c2V0RGVj
b21wcmVzc2lvblNlc3Npb24oZGVjb21wcmVzc2lvblNlc3Npb24pOwogfQogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6Y2RtSW5z
dGFuY2VBdHRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCit7CisgICAgQVNTRVJUKCFtX2Nk
bUluc3RhbmNlKTsKKyAgICBtX2NkbUluc3RhbmNlID0gJmluc3RhbmNlOworICAgIGZvciAoYXV0
byYgc291cmNlQnVmZmVyIDogbV9zb3VyY2VCdWZmZXJzKQorICAgICAgICBzb3VyY2VCdWZmZXIt
PnNldENETUluc3RhbmNlKCZpbnN0YW5jZSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQzo6Y2RtSW5zdGFuY2VEZXRhY2hlZChDRE1JbnN0YW5jZSYgaW5zdGFuY2UpCit7Cisg
ICAgQVNTRVJUX1VOVVNFRChpbnN0YW5jZSwgbV9jZG1JbnN0YW5jZSAmJiBtX2NkbUluc3RhbmNl
ID09ICZpbnN0YW5jZSk7CisgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiBtX3NvdXJjZUJ1
ZmZlcnMpCisgICAgICAgIHNvdXJjZUJ1ZmZlci0+c2V0Q0RNSW5zdGFuY2UobnVsbHB0cik7CisK
KyAgICBtX2NkbUluc3RhbmNlID0gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDOjphdHRlbXB0VG9EZWNyeXB0V2l0aEluc3RhbmNlKENETUluc3RhbmNlJiBpbnN0
YW5jZSkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGluc3RhbmNlLCBtX2NkbUluc3RhbmNlICYmIG1f
Y2RtSW5zdGFuY2UgPT0gJmluc3RhbmNlKTsKKyAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6
IG1fc291cmNlQnVmZmVycykKKyAgICAgICAgc291cmNlQnVmZmVyLT5hdHRlbXB0VG9EZWNyeXB0
KCk7Cit9CisKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6d2FpdGluZ0ZvcktleSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGFueU9mKG1fc291cmNlQnVmZmVycywgW10gKGF1dG8mIHNv
dXJjZUJ1ZmZlcikgeworICAgICAgICByZXR1cm4gc291cmNlQnVmZmVyLT53YWl0aW5nRm9yS2V5
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6b3V0cHV0
T2JzY3VyZWREdWVUb0luc3VmZmljaWVudEV4dGVybmFsUHJvdGVjdGlvbkNoYW5nZWQoYm9vbCBv
YnNjdXJlZCkKK3sKKyAgICBpZiAobV9jZG1JbnN0YW5jZSkKKyAgICAgICAgbV9jZG1JbnN0YW5j
ZS0+c2V0SERDUFN0YXR1cyhvYnNjdXJlZCA/IENETUluc3RhbmNlOjpIRENQU3RhdHVzOjpPdXRw
dXRSZXN0cmljdGVkIDogQ0RNSW5zdGFuY2U6OkhEQ1BTdGF0dXM6OlZhbGlkKTsKK30KKyNlbmRp
ZgorCiB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OnNldFNvdXJjZUJ1ZmZlcldpdGhT
ZWxlY3RlZFZpZGVvKFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKiBzb3VyY2VCdWZmZXIpCiB7
CiAgICAgaWYgKG1fc291cmNlQnVmZmVyV2l0aFNlbGVjdGVkVmlkZW8pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDUy
MDEzYTEwZDZkYzQwOTJkZTk5NzE4NmVkODRiYWNiNTFlM2YzMDguLmU3YTBmZGM4MmFiYjBmZjYy
YmY2NmY2NTc3YmFiNjE4ZTNlNzBjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtNjYsNiArNjYsNyBAQCBjbGFzcyBW
aWRlb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDOwogY2xhc3MgVmlkZW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM7CiBjbGFzcyBX
ZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb247CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIGNsYXNz
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDRXJyb3JDbGllbnQgewogcHVibGljOgpAQCAtMTg0
LDYgKzE4NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElB
KSAmJiBIQVZFKEFWQ09OVEVOVEtFWVNFU1NJT04pCiAgICAgUmVmUHRyPENETUluc3RhbmNlRmFp
clBsYXlTdHJlYW1pbmdBVkZPYmpDPiBtX2NkbUluc3RhbmNlOworICAgIFZlY3RvcjxSZWY8U2hh
cmVkQnVmZmVyPj4gbV9rZXlJRHM7CiAjZW5kaWYKIAogICAgIHN0ZDo6b3B0aW9uYWw8RmxvYXRT
aXplPiBtX2NhY2hlZFNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDExMTNlMzUzNWU2ODFiNjFmOGZlYzRmMTRj
NjEyY2IwZGI0NWIyMTYuLjc1ZTAxZDgwYjliN2VjMTkzMmExZjExNjU2NjM5NWEyYTgwODM2NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDLm1tCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIkFWQXNzZXRUcmFja1V0aWxp
dGllcy5oIgogI2ltcG9ydCAiQXVkaW9UcmFja1ByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMuaCIK
KyNpbXBvcnQgIkNETUZhaXJQbGF5U3RyZWFtaW5nLmgiCiAjaW1wb3J0ICJDRE1JbnN0YW5jZUZh
aXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5oIgogI2ltcG9ydCAiQ0RNU2Vzc2lvbkFWQ29udGVudEtl
eVNlc3Npb24uaCIKICNpbXBvcnQgIkNETVNlc3Npb25NZWRpYVNvdXJjZUFWRk9iakMuaCIKQEAg
LTY2NSwxMSArNjY2LDI3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBy
b3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAg
ICBpZiAobV9tZWRpYVNvdXJjZSkgewotICAgICAgICBhdXRvIGluaXREYXRhQnVmZmVyID0gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOwotICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5
ZXIoKS0+aW5pdGlhbGl6YXRpb25EYXRhRW5jb3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZl
ci0+dHJ5Q3JlYXRlQXJyYXlCdWZmZXIoKSk7CisgICAgLy8KKyAgICBhdXRvIGluaXREYXRhQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEpOworICAgIGF1dG8ga2V5SURzID0g
Q0RNUHJpdmF0ZUZhaXJQbGF5U3RyZWFtaW5nOjpleHRyYWN0S2V5SURzU2luZihpbml0RGF0YUJ1
ZmZlcik7CisgICAgaWYgKCFrZXlJRHMpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2Nk
bUluc3RhbmNlKSB7CisgICAgICAgIGlmIChhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1fY2RtSW5z
dGFuY2UtPnNlc3Npb25Gb3JLZXlJRHMoa2V5SURzLnZhbHVlKCkpKSB7CisgICAgICAgICAgICBb
aW5zdGFuY2VTZXNzaW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGll
bnQ6bV9wYXJzZXIuZ2V0KCldOworICAgICAgICAgICAgaWYgKG1faGFzU2Vzc2lvblNlbWFwaG9y
ZSkgeworICAgICAgICAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7Cisg
ICAgICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG1fd2FpdGluZ0ZvcktleSA9IGZhbHNlOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgfQogCisgICAgbV9rZXlJRHMgPSBXVEZNb3ZlKGtleUlE
cy52YWx1ZSgpKTsKKyAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+aW5pdGlhbGl6YXRpb25E
YXRhRW5jb3VudGVyZWQoInNpbmYiLCBpbml0RGF0YUJ1ZmZlci0+dHJ5Q3JlYXRlQXJyYXlCdWZm
ZXIoKSk7CisKICAgICBtX3dhaXRpbmdGb3JLZXkgPSB0cnVlOwogICAgIG1fbWVkaWFTb3VyY2Ut
PnBsYXllcigpLT53YWl0aW5nRm9yS2V5Q2hhbmdlZCgpOwogI2VuZGlmCkBAIC03NTgsOCArNzc1
LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRlc3Ryb3lQYXJzZXIoKQog
ICAgICAgICBbbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnN0cmVhbVNlc3Npb24oKSByZW1vdmVT
dHJlYW1EYXRhUGFyc2VyOm1fcGFyc2VyLmdldCgpXTsKICNlbmRpZgogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpICYmIEhBVkUoQVZDT05URU5US0VZU0VTU0lPTikKLSAgICBpZiAobV9jZG1J
bnN0YW5jZSkKLSAgICAgICAgW21fY2RtSW5zdGFuY2UtPmNvbnRlbnRLZXlTZXNzaW9uKCkgcmVt
b3ZlQ29udGVudEtleVJlY2lwaWVudDptX3BhcnNlci5nZXQoKV07CisgICAgaWYgKG1fY2RtSW5z
dGFuY2UpIHsKKyAgICAgICAgaWYgKGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9jZG1JbnN0YW5j
ZS0+c2Vzc2lvbkZvcktleUlEcyhtX2tleUlEcykpCisgICAgICAgICAgICBbaW5zdGFuY2VTZXNz
aW9uLT5jb250ZW50S2V5U2Vzc2lvbigpIHJlbW92ZUNvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJz
ZXIuZ2V0KCldOworICAgIH0KICNlbmRpZgogCiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07
CkBAIC05MTgsMjUgKzkzNywzMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpz
ZXRDRE1JbnN0YW5jZShDRE1JbnN0YW5jZSogaW5zdGFuY2UpCiB7CiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQogICAgIGF1dG8qIGZwc0lu
c3RhbmNlID0gZG93bmNhc3Q8Q0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakM+KGlu
c3RhbmNlKTsKLSAgICBpZiAoIWZwc0luc3RhbmNlIHx8IGZwc0luc3RhbmNlID09IG1fY2RtSW5z
dGFuY2UpCisgICAgaWYgKGZwc0luc3RhbmNlID09IG1fY2RtSW5zdGFuY2UpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChtX2NkbUluc3RhbmNlKQotICAgICAgICBbbV9jZG1JbnN0YW5jZS0+
Y29udGVudEtleVNlc3Npb24oKSByZW1vdmVDb250ZW50S2V5UmVjaXBpZW50Om1fcGFyc2VyLmdl
dCgpXTsKLQogICAgIG1fY2RtSW5zdGFuY2UgPSBmcHNJbnN0YW5jZTsKKyAgICBhdHRlbXB0VG9E
ZWNyeXB0KCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShpbnN0YW5jZSk7CisjZW5kaWYKK30K
IAotICAgIGlmIChtX2NkbUluc3RhbmNlKSB7Ci0gICAgICAgIFttX2NkbUluc3RhbmNlLT5jb250
ZW50S2V5U2Vzc2lvbigpIGFkZENvbnRlbnRLZXlSZWNpcGllbnQ6bV9wYXJzZXIuZ2V0KCldOwot
ICAgICAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3JlKSB7Ci0gICAgICAgICAgICBtX2hhc1Nl
c3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwotICAgICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBo
b3JlID0gbnVsbHB0cjsKLSAgICAgICAgfQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6YXR0ZW1wdFRvRGVjcnlwdCgpCit7CisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkgJiYg
SEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQorICAgIGlmICghbV9jZG1JbnN0YW5jZSB8fCBtX2tl
eUlEcy5pc0VtcHR5KCkgfHwgIW1fd2FpdGluZ0ZvcktleSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2NkbUluc3RhbmNlLT5zZXNzaW9uRm9yS2V5SURz
KG1fa2V5SURzKTsKKyAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgW2luc3RhbmNlU2Vzc2lvbi0+Y29udGVudEtleVNlc3Npb24oKSBhZGRDb250ZW50S2V5
UmVjaXBpZW50Om1fcGFyc2VyLmdldCgpXTsKKyAgICBpZiAobV9oYXNTZXNzaW9uU2VtYXBob3Jl
KSB7CisgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1f
aGFzU2Vzc2lvblNlbWFwaG9yZSA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fd2FpdGluZ0Zvcktl
eSA9IGZhbHNlOwotICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT53YWl0aW5nRm9yS2V5Q2hh
bmdlZCgpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW5zdGFuY2UpOwogI2VuZGlmCiB9CiAK
QEAgLTk4Myw5ICsxMDA5LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6bGF5
ZXJEaWRSZWNlaXZlRXJyb3IoQVZTYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXIKIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6Om91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRl
cm5hbFByb3RlY3Rpb25DaGFuZ2VkKGJvb2wgb2JzY3VyZWQpCiB7CiAjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQSkgJiYgSEFWRShBVkNPTlRFTlRLRVlTRVNTSU9OKQotICAgIGF1dG8gcGxheWVy
ID0gbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPnBsYXllcigpIDogbnVsbHB0cjsKLSAg
ICBpZiAocGxheWVyICYmIHBsYXllci0+Y2RtSW5zdGFuY2UoKSkgewotICAgICAgICBwbGF5ZXIt
Pm91dHB1dE9ic2N1cmVkRHVlVG9JbnN1ZmZpY2llbnRFeHRlcm5hbFByb3RlY3Rpb25DaGFuZ2Vk
KG9ic2N1cmVkKTsKKyAgICBpZiAobV9tZWRpYVNvdXJjZS0+Y2RtSW5zdGFuY2UoKSkgeworICAg
ICAgICBtX21lZGlhU291cmNlLT5vdXRwdXRPYnNjdXJlZER1ZVRvSW5zdWZmaWNpZW50RXh0ZXJu
YWxQcm90ZWN0aW9uQ2hhbmdlZChvYnNjdXJlZCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZWxzZQo=
</data>
<flag name="review"
          id="370505"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>