<?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>128035</bug_id>
          
          <creation_ts>2014-01-31 20:21:09 -0800</creation_ts>
          <short_desc>IDB: Index cursors use wrong deserialization for the retrieved value</short_desc>
          <delta_ts>2014-01-31 21:22:02 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>124521</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>974563</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-31 20:21:09 -0800</bug_when>
    <thetext>IDB: Index cursors use wrong deserialization for the retrieved value

The values stored in the index are encoded IDBKeys, and not encoded ScriptValues.

Fixing the (de)serialization confusion throughout the IDB mechanism will be a long, iterative process.  For now, we&apos;ll change the cursor operation callbacks to include a &quot;value key&quot; instead of the value buffer, and the IDB front end will choose the appropriate one to use as the result value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974564</commentid>
    <comment_count>1</comment_count>
      <attachid>222871</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-31 20:30:24 -0800</bug_when>
    <thetext>Created attachment 222871
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974565</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-31 20:32:43 -0800</bug_when>
    <thetext>Attachment 222871 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/IDBTransactionBackendOperations.cpp:157:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:259:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBCursorBackendOperations.cpp:43:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/IDBCursorBackendOperations.cpp:66:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 4 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974566</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-31 20:39:31 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 222871 [details] did not pass style-queue:
&gt; ERROR: Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:259:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]

Fixed that locally.

The other 3 are the long standing (and reported!) bug of check-webkit-style not liking our C++ lambda style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974567</commentid>
    <comment_count>4</comment_count>
      <attachid>222871</attachid>
    <who name="">mitz</who>
    <bug_when>2014-01-31 20:53:20 -0800</bug_when>
    <thetext>Comment on attachment 222871
Patch v1

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

&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackend.cpp:106
&gt; +    m_currentValueBuffer = 0;
&gt; +    m_currentValueKey = 0;

nullptr, not 0

&gt; Source/WebCore/Modules/indexeddb/IDBCursorBackend.h:63
&gt; +    SharedBuffer* valueBuffer() const { return (m_cursorType == IndexedDB::CursorType::KeyOnly) ? 0 : m_currentValueBuffer.get(); }
&gt; +    IDBKey* valueKey() const { return (m_cursorType == IndexedDB::CursorType::KeyOnly) ? 0 : m_currentValueKey.get(); }

Ditto

&gt; Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:267
&gt; +        String result = &quot;&lt;array&gt; - { &quot;;
&gt; +        for (size_t i = 0; i &lt; arrayValue.size(); ++i) {
&gt; +            result.append(arrayValue[i].loggingString());
&gt; +            if (i &lt; arrayValue.size() - 1)
&gt; +                result.append(&quot;, &quot;);
&gt; +        }
&gt; +        result.append(&quot; }&quot;);
&gt; +        return result;

There’s probably a more efficient way to do this using StringBuilder, but this is good enough for debug-only logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974569</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-31 20:57:14 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/163234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974571</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-01-31 21:12:34 -0800</bug_when>
    <thetext>Release build fix landed in http://trac.webkit.org/changeset/163235.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>974572</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-31 21:22:02 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Release build fix landed in http://trac.webkit.org/changeset/163235.

DOH!  Sorry about that, and thanks for the fix!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222871</attachid>
            <date>2014-01-31 20:30:24 -0800</date>
            <delta_ts>2014-01-31 20:53:20 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>83249</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Y2MxYTQ2Li5kMTU0OGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIg
QEAKKzIwMTQtMDEtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIElEQjogSW5kZXggY3Vyc29ycyB1c2Ugd3JvbmcgZGVzZXJpYWxpemF0aW9uIGZvciB0aGUg
cmV0cmlldmVkIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjgwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBGb3IgdGhlIGN1cnNvciBvcGVyYXRpb25zLCBhZGQgYW4gSURCS2V5IHZhbHVlIHJl
c3VsdCBpbiB0aGUgY2FsbGJhY2tzLgorICAgICAgICBJZiBhbiBhbHJlYWR5IGRlc2VyaWFsaXpl
ZCBJREJLZXkgdmFsdWUgZXhpc3RzIGl0IHdpbGwgYmUgcHJlZmVycmVkIG92ZXIgdGhlIHNlcmlh
bGl6ZWQgYnVmZmVyLgorCisgICAgICAgIENoYW5nZSBzb21lIG9mIHRoZSBvblN1Y2Nlc3MoKSBj
YWxsYmFjayBmb3JtYXRzOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNr
cy5oOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKTogU2VsZWN0aXZlbHkgY2hvb3NlIGJl
dHdlZW4gdGhlIElEQktleSBvciB0aGUgU2hhcmVkQnVmZmVyIHZhbHVlCisgICAgICAgICAgd2hl
biBjaG9vc2VkIHdoYXQgdG8gY29udmVydCB0byB0aGUgU2NyaXB0VmFsdWUuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorCisgICAgICAgIExldCB0aGUgSURCQ3Vy
c29yQmFja2VuZCBob2xkIGJvdGggYSB2YWx1ZSBidWZmZXIgYW5kIGEgdmFsdWUga2V5OgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZDo6dXBkYXRlQ3Vyc29yRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kOjpjbGVhcik6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFj
a2VuZDo6dmFsdWVCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZDo6
dmFsdWVLZXkpOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2Vu
ZE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3Vyc29yQWR2YW5jZU9wZXJhdGlv
bjo6cGVyZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb246
OnBlcmZvcm0pOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25C
YWNrZW5kT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0
aW9uOjpwZXJmb3JtKToKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNvbm5l
Y3Rpb25MZXZlbERCOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlckNv
bm5lY3Rpb25MZXZlbERCOjpjdXJzb3JBZHZhbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlckNvbm5lY3Rpb25MZXZlbERCOjpjdXJzb3JJdGVyYXRlKToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmg6CisKKyAgICAg
ICAgQWRkIElEQktleS9JREJLZXlEYXRhIGRlYnVnIGxvZ2dpbmcgdXRpbGl0aWVzOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJL
ZXk6OmxvZ2dpbmdTdHJpbmcpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5o
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCS2V5RGF0YTo6bG9nZ2luZ1N0cmluZyk6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5RGF0YS5oOgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKIDIw
MTQtMDEtMjkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtl
IGl0IHBvc3NpYmxlIHRvIGltcGxlbWVudCBKUyBidWlsdGlucyBpbiBKUwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaAppbmRleCAxNTM4MmJjLi4y
NmEyMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
YWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxs
YmFja3MuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gRnJvbSBJREJGYWN0b3J5
LndlYmtpdEdldERhdGFiYXNlTmFtZXMoKQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0PikgPSAwOwogICAgIC8vIEZyb20gSURCT2JqZWN0U3RvcmUv
SURCSW5kZXgub3BlbkN1cnNvcigpLCBJREJJbmRleC5vcGVuS2V5Q3Vyc29yKCkKLSAgICB2aXJ0
dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4sIFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kPikgPSAwOwogICAgIC8vIEZyb20gSURCT2JqZWN0U3RvcmUuYWRkKCkv
cHV0KCksIElEQkluZGV4LmdldEtleSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQktleT4pID0gMDsKICAgICAvLyBGcm9tIElEQk9iamVjdFN0b3JlL0lEQkluZGV4
LmdldCgpL2NvdW50KCksIGFuZCB2YXJpb3VzIG1ldGhvZHMgdGhhdCB5aWVsZCBudWxsL3VuZGVm
aW5lZC4KQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAgLy8gRnJvbSBJREJDdXJzb3Iu
YWR2YW5jZSgpL2NvbnRpbnVlKCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRC
dWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4gdmFsdWVLZXkpID0gMDsKKwogICAgIC8vIEZyb20g
SURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
c1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4+JiBrZXlzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPElEQktleT4+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+PiYgdmFsdWVzKSA9IDA7CiAgICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9wZW4o
KS9kZWxldGVEYXRhYmFzZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuY3BwCmluZGV4IDdiYjYwMGIuLjBiNjUwY2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tl
bmQuY3BwCkBAIC04OSwxMSArODksMTIgQEAgdm9pZCBJREJDdXJzb3JCYWNrZW5kOjpjbG9zZSgp
CiAgICAgbV9zYXZlZEN1cnNvcklEID0gMDsKIH0KIAotdm9pZCBJREJDdXJzb3JCYWNrZW5kOjp1
cGRhdGVDdXJzb3JEYXRhKElEQktleSoga2V5LCBJREJLZXkqIHByaW1hcnlLZXksIFNoYXJlZEJ1
ZmZlciogdmFsdWUpCit2b2lkIElEQkN1cnNvckJhY2tlbmQ6OnVwZGF0ZUN1cnNvckRhdGEoSURC
S2V5KiBrZXksIElEQktleSogcHJpbWFyeUtleSwgU2hhcmVkQnVmZmVyKiB2YWx1ZUJ1ZmZlciwg
SURCS2V5KiB2YWx1ZUtleSkKIHsKICAgICBtX2N1cnJlbnRLZXkgPSBrZXk7CiAgICAgbV9jdXJy
ZW50UHJpbWFyeUtleSA9IHByaW1hcnlLZXk7Ci0gICAgbV9jdXJyZW50VmFsdWUgPSB2YWx1ZTsK
KyAgICBtX2N1cnJlbnRWYWx1ZUJ1ZmZlciA9IHZhbHVlQnVmZmVyOworICAgIG1fY3VycmVudFZh
bHVlS2V5ID0gdmFsdWVLZXk7CiB9CiAKIHZvaWQgSURCQ3Vyc29yQmFja2VuZDo6Y2xlYXIoKQpA
QCAtMTAxLDcgKzEwMiw4IEBAIHZvaWQgSURCQ3Vyc29yQmFja2VuZDo6Y2xlYXIoKQogICAgIG1f
Y3Vyc29ySUQgPSAwOwogICAgIG1fY3VycmVudEtleSA9IDA7CiAgICAgbV9jdXJyZW50UHJpbWFy
eUtleSA9IDA7Ci0gICAgbV9jdXJyZW50VmFsdWUgPSAwOworICAgIG1fY3VycmVudFZhbHVlQnVm
ZmVyID0gMDsKKyAgICBtX2N1cnJlbnRWYWx1ZUtleSA9IDA7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmQuaAppbmRleCAzZWU1Yjk0Li4wYTVjMGMxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oCkBAIC01OSw4ICs1
OSw5IEBAIHB1YmxpYzoKIAogICAgIElEQktleSoga2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50S2V5LmdldCgpOyB9CiAgICAgSURCS2V5KiBwcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50UHJpbWFyeUtleS5nZXQoKTsgfQotICAgIFNoYXJlZEJ1ZmZlciogdmFsdWUoKSBj
b25zdCB7IHJldHVybiAobV9jdXJzb3JUeXBlID09IEluZGV4ZWREQjo6Q3Vyc29yVHlwZTo6S2V5
T25seSkgPyAwIDogbV9jdXJyZW50VmFsdWUuZ2V0KCk7IH0KLSAgICB2b2lkIHVwZGF0ZUN1cnNv
ckRhdGEoSURCS2V5KiwgSURCS2V5KiBwcmltYXJ5S2V5LCBTaGFyZWRCdWZmZXIqIHZhbHVlKTsK
KyAgICBTaGFyZWRCdWZmZXIqIHZhbHVlQnVmZmVyKCkgY29uc3QgeyByZXR1cm4gKG1fY3Vyc29y
VHlwZSA9PSBJbmRleGVkREI6OkN1cnNvclR5cGU6OktleU9ubHkpID8gMCA6IG1fY3VycmVudFZh
bHVlQnVmZmVyLmdldCgpOyB9CisgICAgSURCS2V5KiB2YWx1ZUtleSgpIGNvbnN0IHsgcmV0dXJu
IChtX2N1cnNvclR5cGUgPT0gSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpLZXlPbmx5KSA/IDAgOiBt
X2N1cnJlbnRWYWx1ZUtleS5nZXQoKTsgfQorICAgIHZvaWQgdXBkYXRlQ3Vyc29yRGF0YShJREJL
ZXkqLCBJREJLZXkqIHByaW1hcnlLZXksIFNoYXJlZEJ1ZmZlciogdmFsdWVCdWZmZXIsIElEQktl
eSogdmFsdWVLZXkpOwogCiAgICAgdm9pZCBjbG9zZSgpOwogCkBAIC04Niw3ICs4Nyw4IEBAIHBy
aXZhdGU6CiAKICAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRLZXk7CiAgICAgUmVmUHRyPElE
QktleT4gbV9jdXJyZW50UHJpbWFyeUtleTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1
cnJlbnRWYWx1ZTsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2N1cnJlbnRWYWx1ZUJ1ZmZl
cjsKKyAgICBSZWZQdHI8SURCS2V5PiBtX2N1cnJlbnRWYWx1ZUtleTsKIAogICAgIGJvb2wgbV9j
bG9zZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZE9wZXJhdGlvbnMuY3BwCmluZGV4IDk4NjA3NDUuLjUz
Zjc4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1
cnNvckJhY2tlbmRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kT3BlcmF0aW9ucy5jcHAKQEAgLTQwLDE1ICs0MCwxNSBA
QCB2b2lkIEN1cnNvckFkdmFuY2VPcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lk
KCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnNvckFkdmFu
Y2VPcGVyYXRpb24iKTsKIAogICAgIFJlZlB0cjxDdXJzb3JBZHZhbmNlT3BlcmF0aW9uPiBvcGVy
YXRpb24odGhpcyk7Ci0gICAgYXV0byBjYWxsYmFjayA9IFt0aGlzLCBvcGVyYXRpb24sIGNvbXBs
ZXRpb25DYWxsYmFja10oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+
IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPiBlcnJvcikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgb3Bl
cmF0aW9uLCBjb21wbGV0aW9uQ2FsbGJhY2tdKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NS
ZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWVC
dWZmZXIsIFBhc3NSZWZQdHI8SURCS2V5PiB2YWx1ZUtleSwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPiBlcnJvcikgewogICAgICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgICAgIG1fY3Vy
c29yLT5jbGVhcigpOwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBMZXZlbERCIGJhY2tlbmQg
Y2FsbHMgb25TdWNjZXNzIGV2ZW4gb24gZmFpbHVyZS4KICAgICAgICAgICAgIC8vIFRoaXMgd2ls
bCBwcm9iYWJseSBoYXZlIHRvIGNoYW5nZSBzb29uIChmb3Igc2FuaXR5KSBhbmQgd2lsbCBwcm9i
YWJseSBicmVhayBMZXZlbERCCiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKHN0
YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KDApKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIG1fY3Vyc29yLT51cGRhdGVDdXJzb3JEYXRhKGtleS5nZXQoKSwgcHJpbWFyeUtleS5nZXQo
KSwgdmFsdWUuZ2V0KCkpOwotICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhrZXks
IHByaW1hcnlLZXksIHZhbHVlKTsKKyAgICAgICAgICAgIG1fY3Vyc29yLT51cGRhdGVDdXJzb3JE
YXRhKGtleS5nZXQoKSwgcHJpbWFyeUtleS5nZXQoKSwgdmFsdWVCdWZmZXIuZ2V0KCksIHZhbHVl
S2V5LmdldCgpKTsKKyAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LCBwcmlt
YXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgdmFsdWVLZXkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
RklYTUU6IEN1cnNvciBvcGVyYXRpb25zIHNob3VsZCBiZSBhYmxlIHRvIHBhc3MgYWxvbmcgYW4g
ZXJyb3IgaW5zdGVhZCBvZiBzdWNjZXNzCkBAIC02MywxNSArNjMsMTUgQEAgdm9pZCBDdXJzb3JJ
dGVyYXRpb25PcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRp
b25DYWxsYmFjaykKICAgICBMT0coU3RvcmFnZUFQSSwgIkN1cnNvckl0ZXJhdGlvbk9wZXJhdGlv
biIpOwogCiAgICAgUmVmUHRyPEN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbj4gb3BlcmF0aW9uKHRo
aXMpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgb3BlcmF0aW9uLCBjb21wbGV0aW9uQ2Fs
bGJhY2tdKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5
S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4gZXJyb3IpIHsKKyAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMsIG9wZXJhdGlvbiwg
Y29tcGxldGlvbkNhbGxiYWNrXShQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElE
QktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyLCBQ
YXNzUmVmUHRyPElEQktleT4gdmFsdWVLZXksIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
ZXJyb3IpIHsKICAgICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgICAgICBtX2N1cnNvci0+Y2xl
YXIoKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGUgTGV2ZWxEQiBiYWNrZW5kIGNhbGxzIG9u
U3VjY2VzcyBldmVuIG9uIGZhaWx1cmUuCiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgcHJvYmFi
bHkgaGF2ZSB0byBjaGFuZ2Ugc29vbiAoZm9yIHNhbml0eSkgYW5kIHdpbGwgcHJvYmFibHkgYnJl
YWsgTGV2ZWxEQgogICAgICAgICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhzdGF0aWNfY2Fz
dDxTaGFyZWRCdWZmZXIqPigwKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtX2N1
cnNvci0+dXBkYXRlQ3Vyc29yRGF0YShrZXkuZ2V0KCksIHByaW1hcnlLZXkuZ2V0KCksIHZhbHVl
LmdldCgpKTsKLSAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vblN1Y2Nlc3Moa2V5LCBwcmltYXJ5
S2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBtX2N1cnNvci0+dXBkYXRlQ3Vyc29yRGF0YShrZXku
Z2V0KCksIHByaW1hcnlLZXkuZ2V0KCksIHZhbHVlQnVmZmVyLmdldCgpLCB2YWx1ZUtleS5nZXQo
KSk7CisgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGtleSwgcHJpbWFyeUtleSwg
dmFsdWVCdWZmZXIsIHZhbHVlS2V5KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBD
dXJzb3Igb3BlcmF0aW9ucyBzaG91bGQgYmUgYWJsZSB0byBwYXNzIGFsb25nIGFuIGVycm9yIGlu
c3RlYWQgb2Ygc3VjY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eS5jcHAKaW5kZXggNTE5NmRlYy4uM2QyZjkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXkuY3BwCkBAIC05OCw2ICs5OCwxMyBAQCBib29sIElEQktleTo6aXNF
cXVhbChjb25zdCBJREJLZXkqIG90aGVyKSBjb25zdAogICAgIHJldHVybiAhY29tcGFyZShvdGhl
cik7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCitTdHJpbmcgSURCS2V5Ojpsb2dnaW5nU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gSURCS2V5RGF0YSh0aGlzKS5sb2dnaW5nU3RyaW5nKCk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKaW5kZXggOTBiNjJkNS4uZjQyZjI1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmgKQEAgLTE0Nyw2ICsxNDcs
MTAgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCS2V5Pjo6cmVmOwogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8SURCS2V5Pjo6ZGVyZWY7CiAKKyNpZm5kZWYgTkRFQlVHCisgICAgU3Ry
aW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdDsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIElEQktl
eSgpIDogbV90eXBlKEludmFsaWRUeXBlKSwgbV9udW1iZXIoMCksIG1fc2l6ZUVzdGltYXRlKE92
ZXJoZWFkU2l6ZSkgeyB9CiAgICAgSURCS2V5KFR5cGUgdHlwZSwgZG91YmxlIG51bWJlcikgOiBt
X3R5cGUodHlwZSksIG1fbnVtYmVyKG51bWJlciksIG1fc2l6ZUVzdGltYXRlKE92ZXJoZWFkU2l6
ZSArIHNpemVvZihkb3VibGUpKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCS2V5RGF0YS5jcHAKaW5kZXggYzg4ODNiOS4uNGEwZGFjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKQEAgLTI0Niw2ICsy
NDYsMzggQEAgaW50IElEQktleURhdGE6OmNvbXBhcmUoY29uc3QgSURCS2V5RGF0YSYgb3RoZXIp
CiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkRFQlVHCitTdHJpbmcgSURCS2V5RGF0YTo6
bG9nZ2luZ1N0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCkKKyAgICAgICAgcmV0dXJu
ICI8bnVsbD4iOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXk6OkludmFs
aWRUeXBlOgorICAgICAgICByZXR1cm4gIjxpbnZhbGlkPiI7CisgICAgY2FzZSBJREJLZXk6OkFy
cmF5VHlwZToKKyAgICB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSAiPGFycmF5PiAtIHsgIjsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheVZhbHVlLnNpemUoKTsgKytpKSB7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGFycmF5VmFsdWVbaV0ubG9nZ2luZ1N0cmluZygp
KTsKKyAgICAgICAgICAgIGlmIChpIDwgYXJyYXlWYWx1ZS5zaXplKCkgLSAxKQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoIiwgIik7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmFw
cGVuZCgiIH0iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgY2FzZSBJREJL
ZXk6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiBTdHJpbmcoIjxzdHJpbmc+IC0gIikgKyBz
dHJpbmdWYWx1ZTsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6CisgICAgICAgIHJldHVybiBT
dHJpbmc6OmZvcm1hdCgiRGF0ZSB0eXBlIC0gJWYiLCBudW1iZXJWYWx1ZSk7CisgICAgY2FzZSBJ
REJLZXk6Ok51bWJlclR5cGU6CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiPG51bWJl
cj4gLSAlZiIsIG51bWJlclZhbHVlKTsKKyAgICBjYXNlIElEQktleTo6TWluVHlwZToKKyAgICAg
ICAgcmV0dXJuICI8bWluaW11bT4iOworICAgIH0KK30KKyNlbmRpZgorCiB9CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleURhdGEuaAppbmRleCBhZTgzZWYyLi42Y2EzYzcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC01OCw2ICs1OCwxMCBA
QCBzdHJ1Y3QgSURCS2V5RGF0YSB7CiAgICAgLy8gICAtIFJldHVybnMgemVybyBpZiB0aGlzIElE
QktleURhdGEgaXMgZXF1YWwgdG8gb3RoZXIuCiAgICAgaW50IGNvbXBhcmUoY29uc3QgSURCS2V5
RGF0YSYgb3RoZXIpOwogCisjaWZuZGVmIE5ERUJVRworICAgIFN0cmluZyBsb2dnaW5nU3RyaW5n
KCkgY29uc3Q7CisjZW5kaWYKKwogICAgIElEQktleTo6VHlwZSB0eXBlOwogICAgIFZlY3RvcjxJ
REJLZXlEYXRhPiBhcnJheVZhbHVlOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKaW5kZXggMWJjMTcw
Ni4uNDFhNDRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5jcHAKQEAgLTI3NSwyNyArMjc1LDM4IEBAIHZvaWQgSURCUmVxdWVzdDo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9tU3RyaW5nTGlzdCkKICAgICBlbnF1ZXVl
RXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQogCi12b2lkIElEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGJhY2tlbmQsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gYnVmZmVyKQordm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kPiBwcnBCYWNrZW5kKQogewogICAgIExPRyhTdG9yYWdlQVBJLCAiSURC
UmVxdWVzdDo6b25TdWNjZXNzKElEQkN1cnNvcikiKTsKICAgICBpZiAoIXNob3VsZEVucXVldWVF
dmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0U3RhdGU6OlNjb3BlIHNj
b3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZSA9
IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCksIGJ1ZmZlcik7CisKKyAg
ICBSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4gYmFja2VuZCA9IHBycEJhY2tlbmQ7CisgICAgUmVm
UHRyPElEQktleT4ga2V5ID0gYmFja2VuZC0+a2V5KCk7CisgICAgUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSA9IGJhY2tlbmQtPnByaW1hcnlLZXkoKTsKKworICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIHZhbHVlOworCisgICAgaWYgKGJhY2tlbmQtPnZhbHVlS2V5KCkpCisgICAgICAgIHZh
bHVlID0gaWRiS2V5VG9TY3JpcHRWYWx1ZShyZXF1ZXN0U3RhdGUoKSwgYmFja2VuZC0+dmFsdWVL
ZXkoKSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZm
ZXIocmVxdWVzdFN0YXRlKCksIGJhY2tlbmQtPnZhbHVlQnVmZmVyKCkpOworCiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdDdXJzb3IpOwogICAgIFJlZlB0cjxJREJDdXJzb3I+IGN1cnNvcjsKICAgICBz
d2l0Y2ggKG1fY3Vyc29yVHlwZSkgewogICAgIGNhc2UgSW5kZXhlZERCOjpDdXJzb3JUeXBlOjpL
ZXlPbmx5OgotICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3I6OmNyZWF0ZShiYWNrZW5kLCBtX2N1
cnNvckRpcmVjdGlvbiwgdGhpcywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNhY3Rpb24uZ2V0KCkp
OworICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3I6OmNyZWF0ZShiYWNrZW5kLnJlbGVhc2UoKSwg
bV9jdXJzb3JEaXJlY3Rpb24sIHRoaXMsIG1fc291cmNlLmdldCgpLCBtX3RyYW5zYWN0aW9uLmdl
dCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbmRleGVkREI6OkN1cnNvclR5cGU6Oktl
eUFuZFZhbHVlOgotICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0ZShi
YWNrZW5kLCBtX2N1cnNvckRpcmVjdGlvbiwgdGhpcywgbV9zb3VyY2UuZ2V0KCksIG1fdHJhbnNh
Y3Rpb24uZ2V0KCkpOworICAgICAgICBjdXJzb3IgPSBJREJDdXJzb3JXaXRoVmFsdWU6OmNyZWF0
ZShiYWNrZW5kLnJlbGVhc2UoKSwgbV9jdXJzb3JEaXJlY3Rpb24sIHRoaXMsIG1fc291cmNlLmdl
dCgpLCBtX3RyYW5zYWN0aW9uLmdldCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHNldFJlc3VsdEN1cnNv
cihjdXJzb3IsIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOworICAgIHNldFJlc3VsdEN1cnNvcihj
dXJzb3IsIGtleS5yZWxlYXNlKCksIHByaW1hcnlLZXkucmVsZWFzZSgpLCB2YWx1ZSk7CiAKICAg
ICBlbnF1ZXVlRXZlbnQoY3JlYXRlU3VjY2Vzc0V2ZW50KCkpOwogfQpAQCAtMzk1LDEyICs0MDYs
MjMgQEAgdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3NJbnRlcm5hbChjb25zdCBEZXByZWNhdGVk
OjpTY3JpcHRWYWx1ZSYgdmFsdWUpCiAKIHZvaWQgSURCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NS
ZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKQogewotICAgIExPRyhTdG9yYWdlQVBJLCAiSURCUmVx
dWVzdDo6b25TdWNjZXNzKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpIik7CisgICAgb25TdWNjZXNz
KGtleSwgcHJpbWFyeUtleSwgYnVmZmVyLCBudWxscHRyKTsKK30KKwordm9pZCBJREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJLZXk+IHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIFBhc3NSZWZQdHI8SURC
S2V5PiB2YWx1ZUtleSkKK3sKKyAgICBMT0coU3RvcmFnZUFQSSwgIklEQlJlcXVlc3Q6Om9uU3Vj
Y2VzcyhrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCB2YWx1ZUtleSkiKTsKICAgICBpZiAo
IXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBET01SZXF1ZXN0
U3RhdGU6OlNjb3BlIHNjb3BlKG1fcmVxdWVzdFN0YXRlKTsKLSAgICBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSB2YWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVCdWZmZXIocmVxdWVzdFN0YXRlKCks
IGJ1ZmZlcik7CisKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSB2YWx1ZTsKKyAgICBpZiAo
dmFsdWVLZXkpCisgICAgICAgIHZhbHVlID0gaWRiS2V5VG9TY3JpcHRWYWx1ZShyZXF1ZXN0U3Rh
dGUoKSwgdmFsdWVLZXkpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBkZXNlcmlhbGl6ZUlE
QlZhbHVlQnVmZmVyKHJlcXVlc3RTdGF0ZSgpLCBidWZmZXIpOworCiAgICAgQVNTRVJUKG1fcGVu
ZGluZ0N1cnNvcik7CiAgICAgc2V0UmVzdWx0Q3Vyc29yKG1fcGVuZGluZ0N1cnNvci5yZWxlYXNl
KCksIGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwogICAgIGVucXVldWVFdmVudChjcmVhdGVTdWNj
ZXNzRXZlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmgKaW5kZXggMGI1YTRiZS4uOWI3MWYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtODYsMTMgKzg2LDE0IEBAIHB1YmxpYzoKICAg
ICAvLyBJREJDYWxsYmFja3MKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihQYXNzUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4pOwotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJDdXJzb3JCYWNrZW5kPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4g
cHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZD4pOwogICAgIHZpcnR1YWwgdm9p
ZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJLZXk+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgY29uc3QgSURC
S2V5UGF0aCYpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoaW50NjRfdCk7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcygpOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+KTsKKyAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURC
S2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+IHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiwgUGFzc1JlZlB0cjxJREJLZXk+IHZhbHVlS2V5KTsKICAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4mLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPElEQktleT4+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+
PiYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0gLy8gTm90IGltcGxlbWVudGVkLiBDYWxsYmFj
ayBzaG91bGQgbm90IHJlYWNoIHRoZSByZW5kZXJlciBzaWRlLgogCiAgICAgLy8gQWN0aXZlRE9N
T2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJT
ZXJ2ZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJT
ZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggOTMyM2EyYy4uMGMyMWI2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCU2VydmVyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlNlcnZlckNvbm5lY3Rpb24uaApA
QCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KElE
QlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IERlbGV0ZUluZGV4T3BlcmF0aW9uJiwgc3RkOjpm
dW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2Fs
bGJhY2spID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYs
IGNvbnN0IEdldE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJHZXRSZXN1
bHQmLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHB1dChJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBQ
dXRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgT3Bl
bkN1cnNvck9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChpbnQ2NF90LCBQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIG9wZW5DdXJzb3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3Qg
T3BlbkN1cnNvck9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChpbnQ2NF90LCBQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21w
bGV0aW9uQ2FsbGJhY2spID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY291bnQoSURCVHJhbnNhY3Rp
b25CYWNrZW5kJiwgY29uc3QgQ291bnRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50
NjRfdCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVSYW5nZShJREJUcmFuc2FjdGlvbkJhY2tlbmQm
LCBjb25zdCBEZWxldGVSYW5nZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVm
UHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNsZWFyT2JqZWN0U3RvcmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3Qg
Q2xlYXJPYmplY3RTdG9yZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRy
PElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSA9IDA7CkBAIC04OSw4ICs4
OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKElE
QlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IElEQkRhdGFiYXNlQmFja2VuZDo6VmVyc2lvbkNo
YW5nZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSA9IDA7CiAKICAgICAvLyBDdXJzb3ItbGV2ZWwg
b3BlcmF0aW9ucwotICAgIHZpcnR1YWwgdm9pZCBjdXJzb3JBZHZhbmNlKElEQkN1cnNvckJhY2tl
bmQmLCBjb25zdCBDdXJzb3JBZHZhbmNlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBh
c3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2sp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY3Vyc29ySXRlcmF0ZShJREJDdXJzb3JCYWNrZW5kJiwg
Y29uc3QgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NS
ZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgY3Vyc29yQWR2YW5jZShJREJDdXJzb3JCYWNrZW5kJiwgY29u
c3QgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRy
PElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQ
YXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0
aW9uQ2FsbGJhY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3Vyc29ySXRlcmF0ZShJREJDdXJz
b3JCYWNrZW5kJiwgY29uc3QgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlv
bjx2b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcAppbmRleCA0NTY4
ZjE2Li40YTc1N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcApA
QCAtMTU0LDE3ICsxNTQsMTcgQEAgdm9pZCBPcGVuQ3Vyc29yT3BlcmF0aW9uOjpwZXJmb3JtKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgTE9HKFN0b3JhZ2VB
UEksICJPcGVuQ3Vyc29yT3BlcmF0aW9uIik7CiAKICAgICBSZWZQdHI8T3BlbkN1cnNvck9wZXJh
dGlvbj4gb3BlcmF0aW9uKHRoaXMpOwotICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgb3BlcmF0
aW9uLCBjb21wbGV0aW9uQ2FsbGJhY2tdKGludDY0X3QgY3Vyc29ySUQsIFBhc3NSZWZQdHI8SURC
S2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWUsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIHsKKyAgICBhdXRv
IGNhbGxiYWNrID0gW3RoaXMsIG9wZXJhdGlvbiwgY29tcGxldGlvbkNhbGxiYWNrXShpbnQ2NF90
IGN1cnNvcklELCBQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IHZhbHVlQnVmZmVyLCBQYXNzUmVmUHRy
PElEQktleT4gdmFsdWVLZXksIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIHsKICAgICAg
ICAgLy8gRklYTUU6IFdoZW4gdGhlIExldmVsREIgcG9ydCBmYWlscyB0byBvcGVuIGEgYmFja2lu
ZyBzdG9yZSBjdXJzb3IgaXQgY2FsbHMgb25TdWNjZXNzKG51bGxwdHIpOwogICAgICAgICAvLyBU
aGlzIHNlZW1zIG5vbnNlbnNpY2FsIGFuZCBtaWdodCBoYXZlIHRvIGNoYW5nZSBzb29uLCBicmVh
a2luZyB0aGVtLgogICAgICAgICBpZiAoIWN1cnNvcklEKQogICAgICAgICAgICAgbV9jYWxsYmFj
a3MtPm9uU3VjY2VzcyhzdGF0aWNfY2FzdDxTaGFyZWRCdWZmZXIqPigwKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgUmVmUHRyPElEQkN1cnNvckJhY2tlbmQ+IGN1cnNvciA9IElEQkN1
cnNvckJhY2tlbmQ6OmNyZWF0ZShjdXJzb3JJRCwgbV9jdXJzb3JUeXBlLCBtX3Rhc2tUeXBlLCAq
bV90cmFuc2FjdGlvbiwgbV9vYmplY3RTdG9yZUlEKTsKLSAgICAgICAgICAgIGlmIChrZXkgfHwg
cHJpbWFyeUtleSB8fCB2YWx1ZSkKLSAgICAgICAgICAgICAgICBjdXJzb3ItPnVwZGF0ZUN1cnNv
ckRhdGEoa2V5LmdldCgpLCBwcmltYXJ5S2V5LmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAg
ICAgICBpZiAoa2V5IHx8IHByaW1hcnlLZXkgfHwgdmFsdWVCdWZmZXIgfHwgdmFsdWVLZXkpCisg
ICAgICAgICAgICAgICAgY3Vyc29yLT51cGRhdGVDdXJzb3JEYXRhKGtleS5nZXQoKSwgcHJpbWFy
eUtleS5nZXQoKSwgdmFsdWVCdWZmZXIuZ2V0KCksIHZhbHVlS2V5LmdldCgpKTsKIAotICAgICAg
ICAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhjdXJzb3IsIGN1cnNvci0+a2V5KCksIGN1cnNv
ci0+cHJpbWFyeUtleSgpLCBjdXJzb3ItPnZhbHVlKCkpOworICAgICAgICAgICAgbV9jYWxsYmFj
a3MtPm9uU3VjY2VzcyhjdXJzb3IucmVsZWFzZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGNv
bXBsZXRpb25DYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZl
bERCLmNwcAppbmRleCBkNGIwMDQ4Li5lZTJjMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlNlcnZl
ckNvbm5lY3Rpb25MZXZlbERCLmNwcApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSURCU2VydmVy
Q29ubmVjdGlvbkxldmVsREI6OnB1dChJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9u
LCBjb25zdCBQCiAgICAgfSk7CiB9CiAKLXZvaWQgSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6
Om9wZW5DdXJzb3IoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgT3Bl
bkN1cnNvck9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwg
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVk
QnVmZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFj
aykKK3ZvaWQgSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6Om9wZW5DdXJzb3IoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgT3BlbkN1cnNvck9wZXJhdGlvbiYgb3Bl
cmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNr
KQogewogICAgIElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uTGV2ZWxEQiogYmFja2luZ1N0b3Jl
VHJhbnNhY3Rpb24gPSBtX2JhY2tpbmdTdG9yZVRyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb24u
aWQoKSk7CiAgICAgQVNTRVJUKGJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKTsKQEAgLTQ2Miw3ICs0
NjIsNyBAQCB2b2lkIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpvcGVuQ3Vyc29yKElEQlRy
YW5zYWN0aW9uQmFja2VuZCYgdHJhbnNhY3Rpb24sCiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtj
b21wbGV0aW9uQ2FsbGJhY2ssIGN1cnNvcklEXSgpIHsKICAgICAgICAgLy8gRklYTUU6IE5lZWQg
dG8gYWN0dWFsbHkgcGFzcyB0aGUgaW5pdGlhbCBrZXksIHByaW1hcnlLZXksIGFuZCB2YWx1ZSB0
byB0aGUgY2FsbGJhY2suCi0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhjdXJzb3JJRCwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgICAgIGNvbXBsZXRpb25DYWxs
YmFjayhjdXJzb3JJRCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
cik7CiAgICAgfSk7CiB9CiAKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIElEQlNlcnZlckNvbm5l
Y3Rpb25MZXZlbERCOjpjaGFuZ2VEYXRhYmFzZVZlcnNpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5k
JiB0cgogICAgIEFTWU5DX0NPTVBMRVRJT05fQ0FMTEJBQ0tfV0lUSF9OVUxMX0FSRyhjb21wbGV0
aW9uQ2FsbGJhY2spOwogfQogCi12b2lkIElEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCOjpjdXJz
b3JBZHZhbmNlKElEQkN1cnNvckJhY2tlbmQmIGN1cnNvciwgY29uc3QgQ3Vyc29yQWR2YW5jZU9w
ZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJLZXk+
LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3ZvaWQgSURCU2VydmVy
Q29ubmVjdGlvbkxldmVsREI6OmN1cnNvckFkdmFuY2UoSURCQ3Vyc29yQmFja2VuZCYgY3Vyc29y
LCBjb25zdCBDdXJzb3JBZHZhbmNlT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248
dm9pZChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7CiAgICAgSURCQmFja2luZ1N0b3JlQ3Vyc29y
TGV2ZWxEQiogYmFja2luZ1N0b3JlQ3Vyc29yID0gY3Vyc29yLmlkKCkgPyBtX2JhY2tpbmdTdG9y
ZUN1cnNvcnMuZ2V0KGN1cnNvci5pZCgpKSA6IDA7CiAjaWZuZGVmIE5ERUJVRwpAQCAtNTgxLDcg
KzU4MSw3IEBAIHZvaWQgSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6OmN1cnNvckFkdmFuY2Uo
SURCQ3Vyc29yQmFja2VuZCYgY3Vyc29yLCBjb25zdCBDCiAgICAgICAgIG1fYmFja2luZ1N0b3Jl
Q3Vyc29ycy5yZW1vdmUoY3Vyc29yLmlkKCkpOwogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2so
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIGFkdmFuY2luZyBj
dXJzb3IiKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVycm9yIGFkdmFuY2luZyBjdXJzb3Ii
KSk7CiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVybjsKQEAgLTU5MSwxMSArNTkxLDExIEBA
IHZvaWQgSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6OmN1cnNvckFkdmFuY2UoSURCQ3Vyc29y
QmFja2VuZCYgY3Vyc29yLCBjb25zdCBDCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUg
PSBiYWNraW5nU3RvcmVDdXJzb3ItPnZhbHVlKCk7CiAKICAgICBjYWxsT25NYWluVGhyZWFkKFtj
b21wbGV0aW9uQ2FsbGJhY2ssIGtleSwgcHJpbWFyeUtleSwgdmFsdWVdKCkgewotICAgICAgICBj
b21wbGV0aW9uQ2FsbGJhY2soa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgSURCRGF0YWJhc2VFcnJv
cjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtub3duIGVy
cm9yIGFkdmFuY2luZyBjdXJzb3IiKSk7CisgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhrZXks
IHByaW1hcnlLZXksIHZhbHVlLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3IgYWR2YW5jaW5n
IGN1cnNvciIpKTsKICAgICB9KTsKIH0KIAotdm9pZCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxE
Qjo6Y3Vyc29ySXRlcmF0ZShJREJDdXJzb3JCYWNrZW5kJiBjdXJzb3IsIGNvbnN0IEN1cnNvckl0
ZXJhdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKK3ZvaWQg
SURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6OmN1cnNvckl0ZXJhdGUoSURCQ3Vyc29yQmFja2Vu
ZCYgY3Vyc29yLCBjb25zdCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24mIG9wZXJhdGlvbiwgc3Rk
OjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKICAgICBJREJCYWNraW5n
U3RvcmVDdXJzb3JMZXZlbERCKiBiYWNraW5nU3RvcmVDdXJzb3IgPSBjdXJzb3IuaWQoKSA/IG1f
YmFja2luZ1N0b3JlQ3Vyc29ycy5nZXQoY3Vyc29yLmlkKCkpIDogMDsKICNpZm5kZWYgTkRFQlVH
CkBAIC02MDcsNyArNjA3LDcgQEAgdm9pZCBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQjo6Y3Vy
c29ySXRlcmF0ZShJREJDdXJzb3JCYWNrZW5kJiBjdXJzb3IsIGNvbnN0IEMKICAgICAgICAgbV9i
YWNraW5nU3RvcmVDdXJzb3JzLnJlbW92ZShjdXJzb3IuaWQoKSk7CiAKICAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbY29tcGxldGlvbkNhbGxiYWNrXSgpIHsKLSAgICAgICAgICAgIGNvbXBsZXRp
b25DYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Ig
YWR2YW5jaW5nIGN1cnNvciIpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3IgYWR2YW5j
aW5nIGN1cnNvciIpKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtNjE3LDcg
KzYxNyw3IEBAIHZvaWQgSURCU2VydmVyQ29ubmVjdGlvbkxldmVsREI6OmN1cnNvckl0ZXJhdGUo
SURCQ3Vyc29yQmFja2VuZCYgY3Vyc29yLCBjb25zdCBDCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gdmFsdWUgPSBiYWNraW5nU3RvcmVDdXJzb3ItPnZhbHVlKCk7CiAKICAgICBjYWxsT25NYWlu
VGhyZWFkKFtjb21wbGV0aW9uQ2FsbGJhY2ssIGtleSwgcHJpbWFyeUtleSwgdmFsdWVdKCkgewot
ICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgSURCRGF0
YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJV
bmtub3duIGVycm9yIGFkdmFuY2luZyBjdXJzb3IiKSk7CisgICAgICAgIGNvbXBsZXRpb25DYWxs
YmFjayhrZXksIHByaW1hcnlLZXksIHZhbHVlLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpj
cmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Ig
YWR2YW5jaW5nIGN1cnNvciIpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxE
Qi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJTZXJ2ZXJD
b25uZWN0aW9uTGV2ZWxEQi5oCmluZGV4IDk3OGJjZDIuLjY5ZGY3NzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCU2VydmVyQ29ubmVjdGlv
bkxldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQlNlcnZlckNvbm5lY3Rpb25MZXZlbERCLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25z
dCBEZWxldGVJbmRleE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IEdldE9wZXJhdGlvbiYs
IHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJHZXRSZXN1bHQmLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgcHV0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFB1dE9wZXJhdGlvbiYsIHN0
ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spICBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgb3BlbkN1cnNvcihJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBPcGVuQ3Vyc29yT3Bl
cmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGludDY0X3QsIFBhc3NSZWZQdHI8SURCS2V5Piwg
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBvcGVuQ3Vyc29yKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IE9wZW5D
dXJzb3JPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFz
c1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlv
bkNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY291bnQoSURCVHJhbnNhY3Rp
b25CYWNrZW5kJiwgY29uc3QgQ291bnRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50
NjRfdCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVJhbmdlKElEQlRyYW5zYWN0aW9uQmFj
a2VuZCYsIGNvbnN0IERlbGV0ZVJhbmdlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCYsIGNvbnN0IENsZWFyT2JqZWN0U3RvcmVPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJp
ZGU7CkBAIC03Niw4ICs3Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlRGF0
YWJhc2VWZXJzaW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IElEQkRhdGFiYXNlQmFj
a2VuZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVm
UHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKIAog
ICAgIC8vIEN1cnNvci1sZXZlbCBvcGVyYXRpb25zCi0gICAgdmlydHVhbCB2b2lkIGN1cnNvckFk
dmFuY2UoSURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IEN1cnNvckFkdmFuY2VPcGVyYXRpb24mLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+
IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnNvckl0
ZXJhdGUoSURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IEN1cnNvckl0ZXJhdGlvbk9wZXJhdGlvbiYs
IHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+
KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Vyc29y
QWR2YW5jZShJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgQ3Vyc29yQWR2YW5jZU9wZXJhdGlvbiYs
IHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5
PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBjdXJzb3JJdGVyYXRlKElEQkN1cnNvckJhY2tlbmQmLCBjb25zdCBDdXJz
b3JJdGVyYXRpb25PcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJL
ZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgUGFzc1Jl
ZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNh
bGxiYWNrKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2
ZWxEQihjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgSURCQmFja2luZ1N0b3JlTGV2ZWxEQiop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBlZDg5NzUwLi4yMWQxZjllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgpAQCAtMzA4NCw2ICszMDg0LDcgQEAgX19aTjdXZWJDb3JlMjZNb2NrTWVkaWFQbGF5
ZXJNZWRpYVNvdXJjZTE5cmVnaXN0ZXJNZWRpYUVuZ2luZUVQRnZQRk4zV1RGMTBQYXNzT3cKICNl
bmRpZgogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCitfX1pOSzdXZWJDb3JlMTBJREJL
ZXlEYXRhMTNsb2dnaW5nU3RyaW5nRXYKIF9fWk5LN1dlYkNvcmUxMElEQktleURhdGExN21heWJl
Q3JlYXRlSURCS2V5RXYKIF9fWk5LN1dlYkNvcmUxMElEQktleURhdGE2ZW5jb2RlRVJOU18xMktl
eWVkRW5jb2RlckUKIF9fWk5LN1dlYkNvcmUxMElEQktleVBhdGg2ZW5jb2RlRVJOU18xMktleWVk
RW5jb2RlckUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MTlmMjhmLi4yYThjM2NlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDUgKzEsNTUgQEAKIDIwMTQtMDEtMzEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCisgICAgICAgIElEQjogSW5kZXggY3Vyc29ycyB1c2Ugd3JvbmcgZGVzZXJpYWxpemF0aW9u
IGZvciB0aGUgcmV0cmlldmVkIHZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjgwMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3N0IG9mIHRoaXMgaXMgdXBkYXRpbmcgZXZlcnl0aGluZyByZWxh
dGVkIHRvIHRoZSBjdXJzb3Igb3BlcmF0aW9uIGNhbGxiYWNrcyAKKyAgICAgICAgdG8gc3VwcG9y
dCByZXR1cm5pbmcgYW4gSURCS2V5IHZhbHVlIGluIGFkZGl0aW9uIHRvIGEgU2hhcmVkQnVmZmVy
IHZhbHVlLgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVBy
b2Nlc3NJREJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
SURCQ29ubmVjdGlvbjo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb246OmN1cnNvckFkdmFuY2UpOgorICAgICAgICAoV2ViS2l0OjpEYXRh
YmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpjdXJzb3JJdGVyYXRlKToKKworICAgICAgICAqIERh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkN1cnNvcik6CisgICAgICAgIChXZWJLaXQ6
OlVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JBZHZhbmNlKToKKyAgICAgICAgKFdlYktpdDo6VW5p
cXVlSURCRGF0YWJhc2U6OmN1cnNvckl0ZXJhdGUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZTo6b3BlbkN1cnNvckluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6
VW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjphZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUp
OgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQWR2YW5jZUN1cnNvcklu
QmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6Oml0ZXJh
dGVDdXJzb3JJbkJhY2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFi
YXNlOjpkaWRJdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUpOgorICAgICAgICAqIERhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaDoKKworICAgICAgICAqIERhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaDoKKyAg
ICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlOjpvcGVuQ3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6VW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmFkdmFuY2VDdXJzb3IpOgorICAgICAg
ICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6aXRlcmF0ZUN1
cnNvcik6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVl
SURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaDoKKworICAgICAgICAqIERhdGFiYXNlUHJv
Y2Vzcy9JbmRleGVkREIvc3FsaXRlL1NRTGl0ZUlEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNRTGl0ZUlEQkN1cnNvcjo6YWR2YW5jZSk6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmg6CisgICAgICAgIChXZWJLaXQ6OlNR
TGl0ZUlEQkN1cnNvcjo6Y3VycmVudFZhbHVlQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6U1FM
aXRlSURCQ3Vyc29yOjpjdXJyZW50VmFsdWVLZXkpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRPcGVuQ3Vyc29yKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkQWR2YW5jZUN1cnNvcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZEl0ZXJhdGVDdXJzb3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpvcGVuQ3Vyc29yKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29yQWR2YW5jZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckl0ZXJhdGUpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklE
QlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKKzIwMTQtMDEtMzEgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIElEQjogSW5kZXggY3Vyc29yIHByZWxp
bWluYXJ5IHN1cHBvcnQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyNzg2OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uLmNwcAppbmRleCAyYTY0ZTMzLi4yZGJmZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAKQEAgLTI3Miw5ICsyNzIsOSBAQCB2b2lkIERhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246Om9wZW5DdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBp
bnQ2NF90IHRyYW5zYQogCiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBvcGVuQ3Vyc29y
IHJlcXVlc3QgSUQgJWxsdSwgb2JqZWN0IHN0b3JlIGlkICVsbGkiLCByZXF1ZXN0SUQsIG9iamVj
dFN0b3JlSUQpOwogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBjb25u
ZWN0aW9uKHRoaXMpOwotICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPm9wZW5DdXJzb3IoSURCSWRl
bnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIHN0
YXRpY19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uPihjdXJzb3JEaXJlY3Rpb24pLCBz
dGF0aWNfY2FzdDxJbmRleGVkREI6OkN1cnNvclR5cGU+KGN1cnNvclR5cGUpLCBzdGF0aWNfY2Fz
dDxJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlPih0YXNrVHlwZSksIGtleVJhbmdlRGF0YSwg
W2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oaW50NjRfdCBjdXJzb3JJRCwgY29uc3QgSURCS2V5RGF0
YSYgcmVzdWx0S2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsKKyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5vcGVuQ3Vyc29yKElEQklkZW50
aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBvYmplY3RTdG9yZUlELCBpbmRleElELCBzdGF0
aWNfY2FzdDxJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbj4oY3Vyc29yRGlyZWN0aW9uKSwgc3Rh
dGljX2Nhc3Q8SW5kZXhlZERCOjpDdXJzb3JUeXBlPihjdXJzb3JUeXBlKSwgc3RhdGljX2Nhc3Q8
SURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZT4odGFza1R5cGUpLCBrZXlSYW5nZURhdGEsIFtj
b25uZWN0aW9uLCByZXF1ZXN0SURdKGludDY0X3QgY3Vyc29ySUQsIGNvbnN0IElEQktleURhdGEm
IHJlc3VsdEtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IHZhbHVlLCBjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgdWludDMyX3QgZXJy
b3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewogICAgICAgICBJUEM6OkRhdGFS
ZWZlcmVuY2UgZGF0YSA9IHZhbHVlID8gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHZhbHVlLT5kYXRhKCkpLCB2YWx1ZS0+c2l6ZSgpKSA6IElQQzo6
RGF0YVJlZmVyZW5jZSgpOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
REJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRPcGVuQ3Vyc29yKHJlcXVlc3RJRCwgY3Vyc29ySUQsIHJl
c3VsdEtleSwgcHJpbWFyeUtleSwgZGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAg
ICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6
RGlkT3BlbkN1cnNvcihyZXF1ZXN0SUQsIGN1cnNvcklELCByZXN1bHRLZXksIHByaW1hcnlLZXks
IGRhdGEsIHZhbHVlS2V5LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOwogICAgIH0pOwogfQog
CkBAIC0yODQsOSArMjg0LDkgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpj
dXJzb3JBZHZhbmNlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjdXIKIAogICAgIExPRyhJ
REIsICJEYXRhYmFzZVByb2Nlc3MgY3Vyc29yQWR2YW5jZSByZXF1ZXN0IElEICVsbHUsIGN1cnNv
ciBpZCAlbGxpIiwgcmVxdWVzdElELCBjdXJzb3JJRCk7CiAgICAgUmVmUHRyPERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+Y3Vyc29yQWR2YW5jZShJREJJZGVudGlmaWVyKCp0aGlzLCBjdXJzb3JJRCksIGNvdW50
LCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXksIGNv
bnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1
ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAg
IG1fdW5pcXVlSURCRGF0YWJhc2UtPmN1cnNvckFkdmFuY2UoSURCSWRlbnRpZmllcigqdGhpcywg
Y3Vyc29ySUQpLCBjb3VudCwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oY29uc3QgSURCS2V5RGF0
YSYgcmVzdWx0S2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gdmFsdWUsIGNvbnN0IElEQktleURhdGEmIHZhbHVlS2V5LCB1aW50MzJfdCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhID0gdmFsdWUgPyBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmRhdGEoKSksIHZhbHVlLT5zaXplKCkpIDogSVBD
OjpEYXRhUmVmZXJlbmNlKCk7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6Oldl
YklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEFkdmFuY2VDdXJzb3IocmVxdWVzdElELCByZXN1bHRL
ZXksIHByaW1hcnlLZXksIGRhdGEsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgICAg
IGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEFk
dmFuY2VDdXJzb3IocmVxdWVzdElELCByZXN1bHRLZXksIHByaW1hcnlLZXksIGRhdGEsIHZhbHVl
S2V5LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOwogICAgIH0pOwogfQogCkBAIC0yOTYsOSAr
Mjk2LDkgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpjdXJzb3JJdGVyYXRl
KHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjdXIKIAogICAgIExPRyhJREIsICJEYXRhYmFz
ZVByb2Nlc3MgY3Vyc29ySXRlcmF0ZSByZXF1ZXN0IElEICVsbHUsIGN1cnNvciBpZCAlbGxpIiwg
cmVxdWVzdElELCBjdXJzb3JJRCk7CiAgICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRhYmFzZS0+Y3Vyc29y
SXRlcmF0ZShJREJJZGVudGlmaWVyKCp0aGlzLCBjdXJzb3JJRCksIGtleSwgW2Nvbm5lY3Rpb24s
IHJlcXVlc3RJRF0oY29uc3QgSURCS2V5RGF0YSYgcmVzdWx0S2V5LCBjb25zdCBJREJLZXlEYXRh
JiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVy
cm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICBtX3VuaXF1ZUlEQkRh
dGFiYXNlLT5jdXJzb3JJdGVyYXRlKElEQklkZW50aWZpZXIoKnRoaXMsIGN1cnNvcklEKSwga2V5
LCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXksIGNv
bnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1
ZSwgY29uc3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEg
PSB2YWx1ZSA/IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPih2YWx1ZS0+ZGF0YSgpKSwgdmFsdWUtPnNpemUoKSkgOiBJUEM6OkRhdGFSZWZlcmVuY2Uo
KTsKLSAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVj
dGlvbjo6RGlkSXRlcmF0ZUN1cnNvcihyZXF1ZXN0SUQsIHJlc3VsdEtleSwgcHJpbWFyeUtleSwg
ZGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkSXRlcmF0ZUN1cnNvcihyZXF1
ZXN0SUQsIHJlc3VsdEtleSwgcHJpbWFyeUtleSwgZGF0YSwgdmFsdWVLZXksIGVycm9yQ29kZSwg
ZXJyb3JNZXNzYWdlKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
aW5kZXggODVjM2YzYi4uYzIxZTUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAg
LTU0OSwyMSArNTQ5LDIxIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmdldFJlY29yZChjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGluCiAgICAgcG9zdERhdGFi
YXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6Z2V0UmVj
b3JkRnJvbUJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIG1f
bWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5nZXQob2JqZWN0U3RvcmVJRCksIGluZGV4SUQsIGtleVJh
bmdlRGF0YSwgY3Vyc29yVHlwZSkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVu
Q3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0
aW9uIGN1cnNvckRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUsIElE
QkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgY29uc3QgSURCS2V5
RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQz
Ml90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50
NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIEluZGV4ZWREQjo6Q3Vyc29yRGly
ZWN0aW9uIGN1cnNvckRpcmVjdGlvbiwgSW5kZXhlZERCOjpDdXJzb3JUeXBlIGN1cnNvclR5cGUs
IElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUgdGFza1R5cGUsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYga2V5UmFuZ2VEYXRhLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgY29uc3QgSURC
S2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNv
bnN0IElEQktleURhdGEmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBpZiAoIW1fYWNjZXB0aW5nTmV3UmVx
dWVzdHMpIHsKLSAgICAgICAgY2FsbGJhY2soMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
SU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gb3BlbiBjdXJzb3IgaW4gZGF0YWJhc2UgYmVj
YXVzZSBpdCBoYXMgc2h1dCBkb3duIik7CisgICAgICAgIGNhbGxiYWNrKDAsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIG9w
ZW4gY3Vyc29yIGluIGRhdGFiYXNlIGJlY2F1c2UgaXQgaGFzIHNodXQgZG93biIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgQVNTRVJUKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5j
b250YWlucyhvYmplY3RTdG9yZUlEKSk7CiAKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1
ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90LCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3Qg
SURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIGNvbnN0IFN0
cmluZyY+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJ
REJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhjdXJzb3JJRCwga2V5LCBwcmltYXJ5S2V5
LCB2YWx1ZSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOworICAgIFJlZlB0cjxBc3luY1JlcXVl
c3Q+IHJlcXVlc3QgPSBBc3luY1JlcXVlc3RJbXBsPGludDY0X3QsIGNvbnN0IElEQktleURhdGEm
LCBjb25zdCBJREJLZXlEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBJREJL
ZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyY+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNr
XShpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURh
dGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgY29uc3QgSURC
S2V5RGF0YSYgdmFsdWVLZXksIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soY3Vyc29ySUQsIGtleSwgcHJpbWFyeUtleSwg
dmFsdWUsIHZhbHVlS2V5LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiAgICAgfSwgW3RoaXMs
IGNhbGxiYWNrXSgpIHsKLSAgICAgICAgY2FsbGJhY2soMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gZ2V0IHJlY29yZCBmcm9tIGRhdGFi
YXNlIik7CisgICAgICAgIGNhbGxiYWNrKDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGdldCByZWNvcmQgZnJvbSBkYXRh
YmFzZSIpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVx
dWVzdElEKCk7CkBAIC01NzIsMTkgKzU3MiwxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpv
cGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaQog
ICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0
YWJhc2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwgY3Vyc29y
VHlwZSwgdGFza1R5cGUsIGtleVJhbmdlRGF0YSkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpjdXJzb3JBZHZhbmNlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIs
IHVpbnQ2NF90IGNvdW50LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgSURCS2V5RGF0YSYsIGNv
bnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQzMl90LCBjb25z
dCBTdHJpbmcmKT4gY2FsbGJhY2spCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JBZHZh
bmNlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVpbnQ2NF90IGNvdW50
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEm
LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCwg
Y29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAKICAgICBpZiAoIW1fYWNjZXB0aW5nTmV3UmVxdWVzdHMpIHsKLSAgICAgICAgY2FsbGJhY2so
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8g
YWR2YW5jZSBjdXJzb3IgaW4gZGF0YWJhc2UgYmVjYXVzZSBpdCBoYXMgc2h1dCBkb3duIik7Cisg
ICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElOVkFM
SURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGFkdmFuY2UgY3Vyc29yIGluIGRhdGFiYXNlIGJlY2F1
c2UgaXQgaGFzIHNodXQgZG93biIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8Y29uc3QgSURCS2V5
RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIHVpbnQz
Ml90LCBjb25zdCBTdHJpbmcmPjo6Y3JlYXRlKFt0aGlzLCBjYWxsYmFja10oY29uc3QgSURCS2V5
RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpIHsKLSAgICAgICAgY2FsbGJhY2soa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgZXJyb3JD
b2RlLCBlcnJvck1lc3NhZ2UpOworICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBB
c3luY1JlcXVlc3RJbXBsPGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJLZXlEYXRhJiwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBjb25zdCBJREJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0
IFN0cmluZyY+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJLZXlEYXRhJiBrZXks
IGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2
YWx1ZSwgY29uc3QgSURCS2V5RGF0YSYgdmFsdWVLZXksIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICAgICAgY2FsbGJhY2soa2V5LCBwcmltYXJ5
S2V5LCB2YWx1ZSwgdmFsdWVLZXksIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKICAgICB9LCBb
dGhpcywgY2FsbGJhY2tdKCkgewotICAgICAgICBjYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBhZHZhbmNlIGN1cnNvciBpbiBk
YXRhYmFzZSIpOworICAgICAgICBjYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0byBhZHZhbmNlIGN1cnNvciBpbiBk
YXRhYmFzZSIpOwogICAgIH0pOwogCiAgICAgdWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+
cmVxdWVzdElEKCk7CkBAIC01OTMsMTkgKzU5MywxOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
OjpjdXJzb3JBZHZhbmNlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVp
bgogICAgIHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURC
RGF0YWJhc2U6OmFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBjdXJzb3JJ
ZGVudGlmaWVyLCBjb3VudCkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjdXJzb3JJ
dGVyYXRlKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQktl
eURhdGEmIGtleSwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJLZXlEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgY29uc3QgU3Ry
aW5nJik+IGNhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3Vyc29ySXRlcmF0ZShj
b25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJLZXlEYXRhJiBr
ZXksIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0
YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgY29uc3QgSURCS2V5RGF0YSYsIHVpbnQzMl90
LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIGlmICghbV9hY2NlcHRpbmdOZXdSZXF1ZXN0cykgewotICAgICAgICBjYWxsYmFj
ayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJTlZBTElEX1NUQVRFX0VSUiwgIlVuYWJsZSB0
byBpdGVyYXRlIGN1cnNvciBpbiBkYXRhYmFzZSBiZWNhdXNlIGl0IGhhcyBzaHV0IGRvd24iKTsK
KyAgICAgICAgY2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSU5W
QUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gaXRlcmF0ZSBjdXJzb3IgaW4gZGF0YWJhc2UgYmVj
YXVzZSBpdCBoYXMgc2h1dCBkb3duIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxjb25zdCBJREJL
ZXlEYXRhJiwgY29uc3QgSURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwgdWlu
dDMyX3QsIGNvbnN0IFN0cmluZyY+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJL
ZXlEYXRhJiBrZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgewotICAgICAgICBjYWxsYmFjayhrZXksIHByaW1hcnlLZXksIHZhbHVlLCBlcnJv
ckNvZGUsIGVycm9yTWVzc2FnZSk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9
IEFzeW5jUmVxdWVzdEltcGw8Y29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQktleURhdGEmLCBQ
YXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIGNvbnN0IElEQktleURhdGEmLCB1aW50MzJfdCwgY29u
c3QgU3RyaW5nJj46OmNyZWF0ZShbdGhpcywgY2FsbGJhY2tdKGNvbnN0IElEQktleURhdGEmIGtl
eSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHZhbHVlLCBjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgdWludDMyX3QgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBjYWxsYmFjayhrZXksIHByaW1h
cnlLZXksIHZhbHVlLCB2YWx1ZUtleSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogICAgIH0s
IFt0aGlzLCBjYWxsYmFja10oKSB7Ci0gICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGl0ZXJhdGUgY3Vyc29yIGlu
IGRhdGFiYXNlIik7CisgICAgICAgIGNhbGxiYWNrKG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIsIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIGl0ZXJhdGUgY3Vyc29yIGlu
IGRhdGFiYXNlIik7CiAgICAgfSk7CiAKICAgICB1aW50NjRfdCByZXF1ZXN0SUQgPSByZXF1ZXN0
LT5yZXF1ZXN0SUQoKTsKQEAgLTg5MCw3NSArODkwLDc4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6Om9wZW5DdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElE
QklkCiAgICAgaW50NjRfdCBjdXJzb3JJRCA9IDA7CiAgICAgSURCS2V5RGF0YSBrZXk7CiAgICAg
SURCS2V5RGF0YSBwcmltYXJ5S2V5OwotICAgIFZlY3RvcjxjaGFyPiB2YWx1ZTsKKyAgICBWZWN0
b3I8Y2hhcj4gdmFsdWVCdWZmZXI7CisgICAgSURCS2V5RGF0YSB2YWx1ZUtleTsKICAgICBpbnQz
Ml90IGVycm9yQ29kZSA9IDA7CiAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKLSAgICBib29sIHN1
Y2Nlc3MgPSBtX2JhY2tpbmdTdG9yZS0+b3BlbkN1cnNvcih0cmFuc2FjdGlvbklkZW50aWZpZXIs
IG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGN1cnNvckRpcmVjdGlvbiwgY3Vyc29yVHlwZSwgdGFz
a1R5cGUsIGtleVJhbmdlLCBjdXJzb3JJRCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSk7CisgICAg
Ym9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPm9wZW5DdXJzb3IodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUlELCBpbmRleElELCBjdXJzb3JEaXJlY3Rpb24sIGN1cnNvclR5
cGUsIHRhc2tUeXBlLCBrZXlSYW5nZSwgY3Vyc29ySUQsIGtleSwgcHJpbWFyeUtleSwgdmFsdWVC
dWZmZXIsIHZhbHVlS2V5KTsKIAogICAgIGlmICghc3VjY2VzcykgewogICAgICAgICBlcnJvckNv
ZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yOwogICAgICAgICBlcnJvck1l
c3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVua25vd24gZXJyb3Igb3BlbmluZyBjdXJzb3IgaW4gYmFj
a2luZyBzdG9yZSIpOwogICAgIH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3lu
Y1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkN1cnNvckluQmFja2luZ1N0
b3JlLCByZXF1ZXN0SUQsIGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIHZhbHVlLCBlcnJvckNv
ZGUsIGVycm9yTWVzc2FnZSkpOworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rh
c2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkT3BlbkN1cnNvckluQmFja2luZ1N0b3Jl
LCByZXF1ZXN0SUQsIGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCB2YWx1
ZUtleSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkT3BlbkN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50
NjRfdCBjdXJzb3JJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBw
cmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUs
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlk
T3BlbkN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjdXJz
b3JJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5
LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlQnVmZmVyLCBjb25zdCBJREJLZXlEYXRhJiB2YWx1
ZUtleSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsK
ICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gbV9wZW5kaW5nRGF0YWJhc2VUYXNr
cy50YWtlKHJlcXVlc3RJRCk7CiAgICAgQVNTRVJUKHJlcXVlc3QpOwogCi0gICAgcmVxdWVzdC0+
Y29tcGxldGVSZXF1ZXN0KGN1cnNvcklELCBrZXksIHByaW1hcnlLZXksIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKSwgZXJyb3JDb2RlLCBlcnJvck1lc3Nh
Z2UpOworICAgIHJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChjdXJzb3JJRCwga2V5LCBwcmltYXJ5
S2V5LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh2YWx1ZUJ1ZmZlci5kYXRhKCksIHZhbHVlQnVmZmVy
LnNpemUoKSksIHZhbHVlS2V5LCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7CiB9CiAKIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OmFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVpbnQ2NF90
IGNvdW50KQogewogICAgIElEQktleURhdGEga2V5OwogICAgIElEQktleURhdGEgcHJpbWFyeUtl
eTsKLSAgICBWZWN0b3I8Y2hhcj4gdmFsdWU7CisgICAgVmVjdG9yPGNoYXI+IHZhbHVlQnVmZmVy
OworICAgIElEQktleURhdGEgdmFsdWVLZXk7CiAgICAgaW50MzJfdCBlcnJvckNvZGUgPSAwOwog
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2U7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3Rv
cmUtPmFkdmFuY2VDdXJzb3IoY3Vyc29ySWRlbnRpZmllciwgY291bnQsIGtleSwgcHJpbWFyeUtl
eSwgdmFsdWUpOworICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5hZHZhbmNlQ3Vy
c29yKGN1cnNvcklkZW50aWZpZXIsIGNvdW50LCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVy
LCB2YWx1ZUtleSk7CiAKICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgZXJyb3JDb2RlID0g
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvcjsKICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gQVNDSUlMaXRlcmFsKCJVbmtub3duIGVycm9yIGFkdmFuY2luZyBjdXJzb3IgaW4gYmFja2lu
ZyBzdG9yZSIpOwogICAgIH0KIAotICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rh
c2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQWR2YW5jZUN1cnNvckluQmFja2luZ1N0
b3JlLCByZXF1ZXN0SUQsIGtleSwgcHJpbWFyeUtleSwgdmFsdWUsIGVycm9yQ29kZSwgZXJyb3JN
ZXNzYWdlKSk7CisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywg
JlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3RvcmUsIHJlcXVl
c3RJRCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZUJ1ZmZlciwgdmFsdWVLZXksIGVycm9yQ29kZSwg
ZXJyb3JNZXNzYWdlKSk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZEFkdmFuY2VD
dXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQktleURhdGEm
IGtleSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2
YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZEFkdmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCS2V5RGF0YSYg
cHJpbWFyeUtleSwgY29uc3QgVmVjdG9yPGNoYXI+JiB2YWx1ZUJ1ZmZlciwgY29uc3QgSURCS2V5
RGF0YSYgdmFsdWVLZXksIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCiB7CiAgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IG1fcGVuZGluZ0Rh
dGFiYXNlVGFza3MudGFrZShyZXF1ZXN0SUQpOwogICAgIEFTU0VSVChyZXF1ZXN0KTsKIAotICAg
IHJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChrZXksIHByaW1hcnlLZXksIFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKSwgZXJyb3JDb2RlLCBlcnJvck1lc3Nh
Z2UpOworICAgIHJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChrZXksIHByaW1hcnlLZXksIFNoYXJl
ZEJ1ZmZlcjo6Y3JlYXRlKHZhbHVlQnVmZmVyLmRhdGEoKSwgdmFsdWVCdWZmZXIuc2l6ZSgpKSwg
dmFsdWVLZXksIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogdm9pZCBVbmlxdWVJREJE
YXRhYmFzZTo6aXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Y29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYg
aXRlcmF0ZUtleSkKIHsKICAgICBJREJLZXlEYXRhIGtleTsKICAgICBJREJLZXlEYXRhIHByaW1h
cnlLZXk7Ci0gICAgVmVjdG9yPGNoYXI+IHZhbHVlOworICAgIFZlY3RvcjxjaGFyPiB2YWx1ZUJ1
ZmZlcjsKKyAgICBJREJLZXlEYXRhIHZhbHVlS2V5OwogICAgIGludDMyX3QgZXJyb3JDb2RlID0g
MDsKICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2lu
Z1N0b3JlLT5pdGVyYXRlQ3Vyc29yKGN1cnNvcklkZW50aWZpZXIsIGl0ZXJhdGVLZXksIGtleSwg
cHJpbWFyeUtleSwgdmFsdWUpOworICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5p
dGVyYXRlQ3Vyc29yKGN1cnNvcklkZW50aWZpZXIsIGl0ZXJhdGVLZXksIGtleSwgcHJpbWFyeUtl
eSwgdmFsdWVCdWZmZXIsIHZhbHVlS2V5KTsKIAogICAgIGlmICghc3VjY2VzcykgewogICAgICAg
ICBlcnJvckNvZGUgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yOwogICAgICAg
ICBlcnJvck1lc3NhZ2UgPSBBU0NJSUxpdGVyYWwoIlVua25vd24gZXJyb3IgaXRlcmF0aW5nIGN1
cnNvciBpbiBiYWNraW5nIHN0b3JlIik7CiAgICAgfQogCi0gICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRJdGVyYXRlQ3Vy
c29ySW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwga2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSwgZXJy
b3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5
bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZEl0ZXJhdGVDdXJzb3JJbkJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBrZXksIHByaW1hcnlLZXksIHZhbHVlQnVmZmVyLCB2YWx1ZUtl
eSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKIH0KIAotdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25zdCBW
ZWN0b3I8Y2hhcj4mIHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJy
b3JNZXNzYWdlKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkSXRlcmF0ZUN1cnNvckluQmFj
a2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25z
dCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBjb25zdCBWZWN0b3I8Y2hhcj4mIHZhbHVlQnVmZmVy
LCBjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0
ID0gbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy50YWtlKHJlcXVlc3RJRCk7CiAgICAgQVNTRVJUKHJl
cXVlc3QpOwogCi0gICAgcmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KGtleSwgcHJpbWFyeUtleSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWUuZGF0YSgpLCB2YWx1ZS5zaXplKCkpLCBlcnJvckNv
ZGUsIGVycm9yTWVzc2FnZSk7CisgICAgcmVxdWVzdC0+Y29tcGxldGVSZXF1ZXN0KGtleSwgcHJp
bWFyeUtleSwgU2hhcmVkQnVmZmVyOjpjcmVhdGUodmFsdWVCdWZmZXIuZGF0YSgpLCB2YWx1ZUJ1
ZmZlci5zaXplKCkpLCB2YWx1ZUtleSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOwogfQogCiB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpjb3VudEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBr
ZXlSYW5nZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYjUzNGM4Zi4uZWU0OGU1
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9V
bmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaApAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwdXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SURC
S2V5RGF0YT4+JiBpbmRleEtleXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpJ
REJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjayk7CiAgICAgdm9p
ZCBnZXRSZWNvcmQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURC
S2V5UmFuZ2VEYXRhJiwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SURCR2V0UmVzdWx0JiwgdWludDMyX3QsIGNvbnN0IFN0
cmluZyYpPiBjYWxsYmFjayk7CiAKLSAgICB2b2lkIG9wZW5DdXJzb3IoY29uc3QgSURCSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0
X3QgaW5kZXhJRCwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIFdlYkNvcmU6
OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpUYXNr
VHlwZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lk
KGludDY0X3QsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+LCB1aW50MzJfdCwgY29u
c3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKLSAgICB2b2lkIGN1cnNvckFkdmFuY2UoY29uc3QgSURC
SWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIHN0ZDo6ZnVuY3Rp
b248dm9pZChjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgdWludDMyX3QsIGNvbnN0
IFN0cmluZyYpPiBjYWxsYmFjayk7Ci0gICAgdm9pZCBjdXJzb3JJdGVyYXRlKGNvbnN0IElEQklk
ZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdlYkNv
cmU6OklEQktleURhdGEmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIHVpbnQz
Ml90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spOworICAgIHZvaWQgb3BlbkN1cnNvcihjb25z
dCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCwgaW50NjRfdCBpbmRleElELCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JUeXBlLCBXZWJDb3JlOjpJREJEYXRhYmFzZUJh
Y2tlbmQ6OlRhc2tUeXBlLCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoaW50NjRfdCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFdl
YkNvcmU6OklEQktleURhdGEmLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIGNv
bnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxi
YWNrKTsKKyAgICB2b2lkIGN1cnNvckFkdmFuY2UoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29y
SWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBXZWJD
b3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIHVpbnQz
Ml90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spOworICAgIHZvaWQgY3Vyc29ySXRlcmF0ZShj
b25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+LCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYp
PiBjYWxsYmFjayk7CiAKICAgICB2b2lkIGNvdW50KGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQs
IGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZChpbnQ2
NF90LCB1aW50MzJfdCwgY29uc3QgU3RyaW5nJik+IGNhbGxiYWNrKTsKICAgICB2b2lkIGRlbGV0
ZVJhbmdlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQodWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjayk7CkBAIC0xNTks
OSArMTU5LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlbGV0ZUluZGV4KHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZFB1dFJlY29yZEluQmFja2luZ1N0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIHVpbnQz
Ml90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogICAgIHZvaWQgZGlk
R2V0UmVjb3JkRnJvbUJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNv
cmU6OklEQkdldFJlc3VsdCYsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwotICAgIHZvaWQgZGlkT3BlbkN1cnNvckluQmFja2luZ1N0b3JlKHVpbnQ2NF90
IHJlcXVlc3RJRCwgaW50NjRfdCBjdXJzb3JJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYs
IGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBWZWN0b3I8Y2hhcj4mLCB1aW50MzJf
dCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIGRpZEFk
dmFuY2VDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNv
cmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgVmVjdG9y
PGNoYXI+JiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
Ci0gICAgdm9pZCBkaWRJdGVyYXRlQ3Vyc29ySW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0
YSYsIGNvbnN0IFZlY3RvcjxjaGFyPiYsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgZGlkT3BlbkN1cnNvckluQmFja2luZ1N0b3JlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjdXJzb3JJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBWZWN0b3I8Y2hhcj4mLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CisgICAgdm9pZCBkaWRBZHZhbmNlQ3Vyc29ySW5CYWNraW5nU3Rv
cmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3Qg
V2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFZlY3RvcjxjaGFyPiYsIGNvbnN0IFdlYkNvcmU6
OklEQktleURhdGEmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKTsKKyAgICB2b2lkIGRpZEl0ZXJhdGVDdXJzb3JJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiwgY29uc3QgVmVjdG9yPGNoYXI+JiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYs
IHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogICAgIHZv
aWQgZGlkQ291bnRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY291
bnQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogICAg
IHZvaWQgZGlkRGVsZXRlUmFuZ2VJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIHVp
bnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRh
dGFiYXNlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmgKaW5kZXggNGEwYjhjNC4uMGNh
MGZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWRE
Qi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaApA
QCAtNzQsOSArNzQsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldEtleVJhbmdlUmVj
b3JkRnJvbU9iamVjdFN0b3JlKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZSYs
IFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiByZXN1bHQsIFJlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+JiByZXN1bHRLZXkpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY291bnQoY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgaW50NjRf
dCYgY291bnQpID0gMDsKIAotICAgIHZpcnR1YWwgYm9vbCBvcGVuQ3Vyc29yKGNvbnN0IElEQklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBp
bnQ2NF90IGluZGV4SUQsIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uLCBXZWJD
b3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUsIFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6
VGFza1R5cGUsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYsIGludDY0X3QmIGN1cnNv
cklELCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFZlY3Rvcjxj
aGFyPiYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgYWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVu
dGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCB1aW50NjRfdCBjb3VudCwgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4mKSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRp
ZmllciwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBX
ZWJDb3JlOjpJREJLZXlEYXRhJiwgVmVjdG9yPGNoYXI+JikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
aW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIFdlYkNvcmU6OkluZGV4ZWRE
Qjo6Q3Vyc29yRGlyZWN0aW9uLCBXZWJDb3JlOjpJbmRleGVkREI6OkN1cnNvclR5cGUsIFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGUsIGNvbnN0IFdlYkNvcmU6OklEQktleVJh
bmdlRGF0YSYsIGludDY0X3QmIGN1cnNvcklELCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29y
ZTo6SURCS2V5RGF0YSYsIFZlY3RvcjxjaGFyPiYsIFdlYkNvcmU6OklEQktleURhdGEmKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGFkdmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vy
c29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJD
b3JlOjpJREJLZXlEYXRhJiwgVmVjdG9yPGNoYXI+JiwgV2ViQ29yZTo6SURCS2V5RGF0YSYpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBj
dXJzb3JJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURC
S2V5RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4mLCBXZWJDb3JlOjpJ
REJLZXlEYXRhJikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxpdGVJ
REJDdXJzb3IuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvU1FMaXRlSURCQ3Vyc29yLmNwcAppbmRleCBjZmQ4ZmU5Li5lNDY1MTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9TUUxp
dGVJREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvc3FsaXRlL1NRTGl0ZUlEQkN1cnNvci5jcHAKQEAgLTI0NCw3ICsyNDQsMTggQEAgYm9v
bCBTUUxpdGVJREJDdXJzb3I6OmFkdmFuY2UodWludDY0X3QgY291bnQpCiAKICAgICBtX2N1cnJl
bnRLZXkgPSBrZXk7CiAgICAgbV9jdXJyZW50UHJpbWFyeUtleSA9IGtleTsKLSAgICBtX2N1cnJl
bnRWYWx1ZSA9IGtleURhdGE7CisgICAgbV9jdXJyZW50VmFsdWVCdWZmZXIgPSBrZXlEYXRhOwor
CisgICAgaWYgKG1faW5kZXhJRCAhPSBJREJJbmRleE1ldGFkYXRhOjpJbnZhbGlkSWQpIHsKKyAg
ICAgICAgaWYgKCFkZXNlcmlhbGl6ZUlEQktleURhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oa2V5RGF0YS5kYXRhKCkpLCBrZXlEYXRhLnNpemUoKSwgbV9jdXJyZW50VmFsdWVL
ZXkpKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSB2YWx1
ZSBkYXRhIGZyb20gZGF0YWJhc2Ugd2hpbGUgYWR2YW5jaW5nIGN1cnNvciIpOworICAgICAgICAg
ICAgbV9jb21wbGV0ZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gSW5kZXggY3Vyc29ycyBzaG91bGQgb25seSBoYXZlIGEgbV9jdXJy
ZW50VmFsdWVLZXksIGFuZCBub3QgbV9jdXJyZW50VmFsdWVCdWZmZXIKKyAgICAgICAgbV9jdXJy
ZW50VmFsdWVCdWZmZXIuY2xlYXIoKTsKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRl
L1NRTGl0ZUlEQkN1cnNvci5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmgKaW5kZXggZDY4OTZkYy4uYzViZDNiMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUv
U1FMaXRlSURCQ3Vyc29yLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9zcWxpdGUvU1FMaXRlSURCQ3Vyc29yLmgKQEAgLTU4LDcgKzU4LDggQEAgcHVibGlj
OgogCiAgICAgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYgY3VycmVudEtleSgpIGNvbnN0IHsg
cmV0dXJuIG1fY3VycmVudEtleTsgfQogICAgIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIGN1
cnJlbnRQcmltYXJ5S2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UHJpbWFyeUtleTsgfQot
ICAgIGNvbnN0IFZlY3RvcjxjaGFyPiYgY3VycmVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9j
dXJyZW50VmFsdWU7IH0KKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4mIGN1cnJlbnRWYWx1ZUJ1ZmZl
cigpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFZhbHVlQnVmZmVyOyB9CisgICAgY29uc3QgV2Vi
Q29yZTo6SURCS2V5RGF0YSYgY3VycmVudFZhbHVlS2V5KCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50VmFsdWVLZXk7IH0KIAogICAgIGJvb2wgYWR2YW5jZSh1aW50NjRfdCBjb3VudCk7CiAgICAg
Ym9vbCBpdGVyYXRlKGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmIHRhcmdldEtleSk7CkBAIC03
OCw3ICs3OSw4IEBAIHByaXZhdGU6CiAKICAgICBXZWJDb3JlOjpJREJLZXlEYXRhIG1fY3VycmVu
dEtleTsKICAgICBXZWJDb3JlOjpJREJLZXlEYXRhIG1fY3VycmVudFByaW1hcnlLZXk7Ci0gICAg
VmVjdG9yPGNoYXI+IG1fY3VycmVudFZhbHVlOworICAgIFZlY3RvcjxjaGFyPiBtX2N1cnJlbnRW
YWx1ZUJ1ZmZlcjsKKyAgICBXZWJDb3JlOjpJREJLZXlEYXRhIG1fY3VycmVudFZhbHVlS2V5Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudD4gbV9zdGF0ZW1l
bnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcAppbmRleCAzNGQ5YmFhLi42ZTgwYjE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9Vbmlx
dWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGUuY3BwCkBAIC05MzgsNyArOTM4LDcgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y291bnQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rp
b24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdT
dG9yZVNRTGl0ZTo6b3BlbkN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBJbmRleGVk
REI6OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJlY3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlw
ZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tlbmQ6OlRhc2tUeXBlIHRhc2tUeXBlLCBjb25z
dCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBpbnQ2NF90JiBjdXJzb3JJRCwgSURCS2V5RGF0
YSYga2V5LCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBWZWN0b3I8Y2hhcj4mIHZhbHVlKQorYm9v
bCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6b3BlbkN1cnNvcihjb25zdCBJ
REJJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgaW50NjRfdCBpbmRleElELCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBjdXJzb3JEaXJl
Y3Rpb24sIEluZGV4ZWREQjo6Q3Vyc29yVHlwZSBjdXJzb3JUeXBlLCBJREJEYXRhYmFzZUJhY2tl
bmQ6OlRhc2tUeXBlIHRhc2tUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlLCBp
bnQ2NF90JiBjdXJzb3JJRCwgSURCS2V5RGF0YSYga2V5LCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5
LCBWZWN0b3I8Y2hhcj4mIHZhbHVlQnVmZmVyLCBJREJLZXlEYXRhJiB2YWx1ZUtleSkKIHsKICAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9zcWxpdGVEQik7CkBAIC05
NTgsMTIgKzk1OCwxMyBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRl
OjpvcGVuQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIHRyYW5zYQogICAgIGN1cnNvcklEID0g
Y3Vyc29yLT5pZGVudGlmaWVyKCkuaWQoKTsKICAgICBrZXkgPSBjdXJzb3ItPmN1cnJlbnRLZXko
KTsKICAgICBwcmltYXJ5S2V5ID0gY3Vyc29yLT5jdXJyZW50UHJpbWFyeUtleSgpOwotICAgIHZh
bHVlID0gY3Vyc29yLT5jdXJyZW50VmFsdWUoKTsKKyAgICB2YWx1ZUJ1ZmZlciA9IGN1cnNvci0+
Y3VycmVudFZhbHVlQnVmZmVyKCk7CisgICAgdmFsdWVLZXkgPSBjdXJzb3ItPmN1cnJlbnRWYWx1
ZUtleSgpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGU6OmFkdmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vy
c29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIElEQktleURhdGEmIGtleSwgSURCS2V5RGF0
YSYgcHJpbWFyeUtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKK2Jvb2wgVW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmVTUUxpdGU6OmFkdmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYg
Y3Vyc29ySWRlbnRpZmllciwgdWludDY0X3QgY291bnQsIElEQktleURhdGEmIGtleSwgSURCS2V5
RGF0YSYgcHJpbWFyeUtleSwgVmVjdG9yPGNoYXI+JiB2YWx1ZUJ1ZmZlciwgSURCS2V5RGF0YSYg
dmFsdWVLZXkpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1f
c3FsaXRlREIpOwpAQCAtOTg2LDEyICs5ODcsMTMgQEAgYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZTo6YWR2YW5jZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXIK
IAogICAgIGtleSA9IGN1cnNvci0+Y3VycmVudEtleSgpOwogICAgIHByaW1hcnlLZXkgPSBjdXJz
b3ItPmN1cnJlbnRQcmltYXJ5S2V5KCk7Ci0gICAgdmFsdWUgPSBjdXJzb3ItPmN1cnJlbnRWYWx1
ZSgpOworICAgIHZhbHVlQnVmZmVyID0gY3Vyc29yLT5jdXJyZW50VmFsdWVCdWZmZXIoKTsKKyAg
ICB2YWx1ZUtleSA9IGN1cnNvci0+Y3VycmVudFZhbHVlS2V5KCk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6aXRlcmF0
ZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJL
ZXlEYXRhJiB0YXJnZXRLZXksIElEQktleURhdGEmIGtleSwgSURCS2V5RGF0YSYgcHJpbWFyeUtl
eSwgVmVjdG9yPGNoYXI+JiB2YWx1ZSkKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRp
ZmllciwgY29uc3QgSURCS2V5RGF0YSYgdGFyZ2V0S2V5LCBJREJLZXlEYXRhJiBrZXksIElEQktl
eURhdGEmIHByaW1hcnlLZXksIFZlY3RvcjxjaGFyPiYgdmFsdWVCdWZmZXIsIElEQktleURhdGEm
IHZhbHVlS2V5KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCht
X3NxbGl0ZURCKTsKQEAgLTEwMTQsNyArMTAxNiw4IEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGU6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vy
CiAKICAgICBrZXkgPSBjdXJzb3ItPmN1cnJlbnRLZXkoKTsKICAgICBwcmltYXJ5S2V5ID0gY3Vy
c29yLT5jdXJyZW50UHJpbWFyeUtleSgpOwotICAgIHZhbHVlID0gY3Vyc29yLT5jdXJyZW50VmFs
dWUoKTsKKyAgICB2YWx1ZUJ1ZmZlciA9IGN1cnNvci0+Y3VycmVudFZhbHVlQnVmZmVyKCk7Cisg
ICAgdmFsdWVLZXkgPSBjdXJzb3ItPmN1cnJlbnRWYWx1ZUtleSgpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmVTUUxpdGUuaAppbmRleCA3YzI3Yjk0Li44MjgwZGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlLmgKQEAgLTgwLDkgKzgwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBnZXRL
ZXlSYW5nZVJlY29yZEZyb21PYmplY3RTdG9yZShjb25zdCBJREJJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURC
S2V5UmFuZ2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYgcmVzdWx0LCBSZWZQdHI8
V2ViQ29yZTo6SURCS2V5PiYgcmVzdWx0S2V5KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wg
Y291bnQoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFu
Z2VEYXRhJiwgaW50NjRfdCYgY291bnQpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCBib29sIG9w
ZW5DdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgV2ViQ29yZTo6SW5kZXhlZERCOjpD
dXJzb3JEaXJlY3Rpb24sIFdlYkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgV2ViQ29yZTo6
SURCRGF0YWJhc2VCYWNrZW5kOjpUYXNrVHlwZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VE
YXRhJiwgaW50NjRfdCYgY3Vyc29ySUQsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJ
REJLZXlEYXRhJiwgVmVjdG9yPGNoYXI+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGFk
dmFuY2VDdXJzb3IoY29uc3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgdWludDY0
X3QgY291bnQsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgVmVj
dG9yPGNoYXI+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBib29sIGl0ZXJhdGVDdXJzb3IoY29u
c3QgSURCSWRlbnRpZmllciYgY3Vyc29ySWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgVmVjdG9y
PGNoYXI+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIG9wZW5DdXJzb3IoY29uc3QgSURC
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQs
IGludDY0X3QgaW5kZXhJRCwgV2ViQ29yZTo6SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24sIFdl
YkNvcmU6OkluZGV4ZWREQjo6Q3Vyc29yVHlwZSwgV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
OjpUYXNrVHlwZSwgY29uc3QgV2ViQ29yZTo6SURCS2V5UmFuZ2VEYXRhJiwgaW50NjRfdCYgY3Vy
c29ySUQsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgVmVjdG9y
PGNoYXI+JiwgV2ViQ29yZTo6SURCS2V5RGF0YSYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9v
bCBhZHZhbmNlQ3Vyc29yKGNvbnN0IElEQklkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIHVp
bnQ2NF90IGNvdW50LCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYs
IFZlY3RvcjxjaGFyPiYsIFdlYkNvcmU6OklEQktleURhdGEmKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdl
YkNvcmU6OklEQktleURhdGEmLCBWZWN0b3I8Y2hhcj4mLCBXZWJDb3JlOjpJREJLZXlEYXRhJikg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIHVucmVnaXN0ZXJDdXJzb3IoU1FMaXRlSURCQ3Vyc29yKik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA4
ZjEyOThhLi43NGU5MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5l
Y3Rpb24uY3BwCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpkaWRHZXRSZWNvcmQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREIKICAg
ICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QoZ2V0UmVzdWx0LCBlcnJvckNvZGUgPyBJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpIDogbnVsbHB0
cik7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkT3BlbkN1cnNvcih1aW50
NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3Vyc29ySUQsIFdlYkNvcmU6OklEQktleURhdGEmIGtl
eSwgV2ViQ29yZTo6SURCS2V5RGF0YSYgcHJpbWFyeUtleSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiB2YWx1ZURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZE9wZW5DdXJzb3IodWludDY0
X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNv
bnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFs
dWVEYXRhLCBjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgdWludDMyX3QgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBMT0coSURCLCAiV2ViUHJvY2VzcyBk
aWRPcGVuQ3Vyc29yIHJlcXVlc3QgSUQgJWxsdSAoZXJyb3IgLSAlcykiLCByZXF1ZXN0SUQsIGVy
cm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKIApAQCAtNDU0LDEwICs0NTQsMTAgQEAgdm9pZCBX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRPcGVuQ3Vyc29yKHVpbnQ2NF90IHJlcXVlc3RJRCwg
aW50NjRfdCBjdXJzb3JJRCwKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gdmFsdWUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh2YWx1ZURhdGEuZGF0YSgpLCB2YWx1
ZURhdGEuc2l6ZSgpKTsKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QoY3Vyc29y
SUQsIGtleS5tYXliZUNyZWF0ZUlEQktleSgpLCBwcmltYXJ5S2V5Lm1heWJlQ3JlYXRlSURCS2V5
KCksIHZhbHVlLnJlbGVhc2UoKSwgZXJyb3JDb2RlID8gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRl
KGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSA6IG51bGxwdHIpOworICAgIHNlcnZlclJlcXVlc3Qt
PmNvbXBsZXRlUmVxdWVzdChjdXJzb3JJRCwga2V5Lm1heWJlQ3JlYXRlSURCS2V5KCksIHByaW1h
cnlLZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgdmFsdWUucmVsZWFzZSgpLCB2YWx1ZUtleS5tYXli
ZUNyZWF0ZUlEQktleSgpLCBlcnJvckNvZGUgPyBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoZXJy
b3JDb2RlLCBlcnJvck1lc3NhZ2UpIDogbnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVy
Q29ubmVjdGlvbjo6ZGlkQWR2YW5jZUN1cnNvcih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6
OklEQktleURhdGEmIGtleSwgV2ViQ29yZTo6SURCS2V5RGF0YSYgcHJpbWFyeUtleSwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZEFk
dmFuY2VDdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNv
bnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFs
dWVEYXRhLCBjb25zdCBJREJLZXlEYXRhJiB2YWx1ZUtleSwgdWludDMyX3QgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKICAgICBMT0coSURCLCAiV2ViUHJvY2VzcyBk
aWRBZHZhbmNlQ3Vyc29yIHJlcXVlc3QgSUQgJWxsdSAoZXJyb3IgLSAlcykiLCByZXF1ZXN0SUQs
IGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKIApAQCAtNDY3LDEwICs0NjcsMTAgQEAgdm9p
ZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRBZHZhbmNlQ3Vyc29yKHVpbnQ2NF90IHJlcXVl
c3RJRCwgV2ViQ29yZTo6SURCS2UKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gdmFsdWUgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh2YWx1ZURhdGEuZGF0YSgpLCB2
YWx1ZURhdGEuc2l6ZSgpKTsKLSAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoa2V5
Lm1heWJlQ3JlYXRlSURCS2V5KCksIHByaW1hcnlLZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgdmFs
dWUucmVsZWFzZSgpLCBlcnJvckNvZGUgPyBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoZXJyb3JD
b2RlLCBlcnJvck1lc3NhZ2UpIDogbnVsbHB0cik7CisgICAgc2VydmVyUmVxdWVzdC0+Y29tcGxl
dGVSZXF1ZXN0KGtleS5tYXliZUNyZWF0ZUlEQktleSgpLCBwcmltYXJ5S2V5Lm1heWJlQ3JlYXRl
SURCS2V5KCksIHZhbHVlLnJlbGVhc2UoKSwgdmFsdWVLZXkubWF5YmVDcmVhdGVJREJLZXkoKSwg
ZXJyb3JDb2RlID8gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgZXJyb3JNZXNz
YWdlKSA6IG51bGxwdHIpOwogfQogCi12b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRpZEl0
ZXJhdGVDdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpJREJLZXlEYXRhJiBrZXks
IFdlYkNvcmU6OklEQktleURhdGEmIHByaW1hcnlLZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgdmFsdWVEYXRhLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRJdGVyYXRlQ3Vyc29yKHVpbnQ2
NF90IHJlcXVlc3RJRCwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJLZXlEYXRhJiBw
cmltYXJ5S2V5LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHZhbHVlRGF0YSwgY29uc3QgSURC
S2V5RGF0YSYgdmFsdWVLZXksIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCiB7CiAgICAgTE9HKElEQiwgIldlYlByb2Nlc3MgZGlkSXRlcmF0ZUN1cnNvciBy
ZXF1ZXN0IElEICVsbHUgKGVycm9yIC0gJXMpIiwgcmVxdWVzdElELCBlcnJvck1lc3NhZ2UudXRm
OCgpLmRhdGEoKSk7CiAKQEAgLTQ4MCw3ICs0ODAsNyBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5l
Y3Rpb246OmRpZEl0ZXJhdGVDdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBXZWJDb3JlOjpJREJL
ZQogICAgICAgICByZXR1cm47CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHZhbHVlRGF0YS5kYXRhKCksIHZhbHVlRGF0YS5zaXplKCkpOwot
ICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChrZXkubWF5YmVDcmVhdGVJREJLZXko
KSwgcHJpbWFyeUtleS5tYXliZUNyZWF0ZUlEQktleSgpLCB2YWx1ZS5yZWxlYXNlKCksIGVycm9y
Q29kZSA/IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkg
OiBudWxscHRyKTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoa2V5Lm1heWJl
Q3JlYXRlSURCS2V5KCksIHByaW1hcnlLZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgdmFsdWUucmVs
ZWFzZSgpLCB2YWx1ZUtleS5tYXliZUNyZWF0ZUlEQktleSgpLCBlcnJvckNvZGUgPyBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpIDogbnVsbHB0cik7CiB9
CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y291bnQoSURCVHJhbnNhY3Rpb25CYWNr
ZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgQ291bnRPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpm
dW5jdGlvbjx2b2lkKGludDY0X3QsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21w
bGV0aW9uQ2FsbGJhY2spCkBAIC02MjgsMTIgKzYyOCwxMiBAQCB2b2lkIFdlYklEQlNlcnZlckNv
bm5lY3Rpb246OmRpZENoYW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGJv
b2wgcwogICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChzdWNjZXNzID8gbnVsbHB0
ciA6IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93
bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVkIGNoYW5naW5nIGRhdGFiYXNlIHZlcnNpb24i
KSk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1cnNvcihJREJUcmFu
c2FjdGlvbkJhY2tlbmQmLCBjb25zdCBPcGVuQ3Vyc29yT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0
ZDo6ZnVuY3Rpb248dm9pZChpbnQ2NF90LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpvcGVuQ3Vyc29yKElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IE9wZW5DdXJzb3JPcGVy
YXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKGludDY0X3QsIFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBh
c3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRp
b25DYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0g
QXN5bmNSZXF1ZXN0SW1wbDxpbnQ2NF90LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CisgICAgUmVmUHRyPEFzeW5jUmVx
dWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8aW50NjRfdCwgUGFzc1JlZlB0
cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiwg
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRl
KGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRs
ZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBsZXRpb25DYWxsYmFjaygw
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBv
cGVuaW5nIGRhdGFiYXNlIGN1cnNvciIpKTsKKyAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKDAs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBv
Y2N1cmVkIG9wZW5pbmcgZGF0YWJhc2UgY3Vyc29yIikpOwogICAgIH0pOwogCiAgICAgdWludDY0
X3QgcmVxdWVzdElEID0gc2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CkBAIC02NDUsMTIgKzY0
NSwxMiBAQCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246Om9wZW5DdXJzb3IoSURCVHJhbnNh
Y3Rpb25CYWNrZW5kJiwgY29uc3QgT3BlbkN1cnNvcgogICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246Ok9wZW5DdXJzb3IocmVxdWVzdElELCBvcGVyYXRpb24u
dHJhbnNhY3Rpb25JRCgpLCBvcGVyYXRpb24ub2JqZWN0U3RvcmVJRCgpLCBvcGVyYXRpb24uaW5k
ZXhJRCgpLCBzdGF0aWNfY2FzdDxpbnQ2NF90PihvcGVyYXRpb24uZGlyZWN0aW9uKCkpLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihvcGVyYXRpb24uY3Vyc29yVHlwZSgpKSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4ob3BlcmF0aW9uLnRhc2tUeXBlKCkpLCBvcGVyYXRpb24ua2V5UmFuZ2UoKSkpOwogfQog
Ci12b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckFkdmFuY2UoSURCQ3Vyc29yQmFj
a2VuZCYsIGNvbnN0IEN1cnNvckFkdmFuY2VPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5j
dGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0
aW9uQ2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmN1cnNvckFkdmFuY2Uo
SURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IEN1cnNvckFkdmFuY2VPcGVyYXRpb24mIG9wZXJhdGlv
biwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJL
ZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFj
ayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVz
dEltcGw8UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJy
b3Igb2NjdXJlZCBhZHZhbmNpbmcgZGF0YWJhc2UgY3Vyc29yIikpOworICAgICAgICBjb21wbGV0
aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtu
b3duIGVycm9yIG9jY3VyZWQgYWR2YW5jaW5nIGRhdGFiYXNlIGN1cnNvciIpKTsKICAgICB9KTsK
IAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJRCgpOwpA
QCAtNjYyLDEyICs2NjIsMTIgQEAgdm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JB
ZHZhbmNlKElEQkN1cnNvckJhY2tlbmQmLCBjb25zdCBDdXJzb3JBZHZhbmMKICAgICBzZW5kKE1l
c3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpDdXJzb3JBZHZhbmNlKHJlcXVl
c3RJRCwgb3BlcmF0aW9uLmN1cnNvcklEKCksIG9wZXJhdGlvbi5jb3VudCgpKSk7CiB9CiAKLXZv
aWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Y3Vyc29ySXRlcmF0ZShJREJDdXJzb3JCYWNrZW5k
JiwgY29uc3QgQ3Vyc29ySXRlcmF0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rp
b248dm9pZChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlv
bkNhbGxiYWNrKQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpjdXJzb3JJdGVyYXRlKElE
QkN1cnNvckJhY2tlbmQmLCBjb25zdCBDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24mIG9wZXJhdGlv
biwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJL
ZXk+LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKLSAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVm
UHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFj
ayk7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVz
dEltcGw8UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8
U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
RXJyb3I+Pjo6Y3JlYXRlKGNvbXBsZXRpb25DYWxsYmFjayk7CiAKICAgICBzZXJ2ZXJSZXF1ZXN0
LT5zZXRBYm9ydEhhbmRsZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25DYWxsYmFjayhudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIlVua25vd24gZXJy
b3Igb2NjdXJlZCBpdGVyYXRpbmcgZGF0YWJhc2UgY3Vyc29yIikpOworICAgICAgICBjb21wbGV0
aW9uQ2FsbGJhY2sobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgSURCRGF0YWJh
c2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJVbmtu
b3duIGVycm9yIG9jY3VyZWQgaXRlcmF0aW5nIGRhdGFiYXNlIGN1cnNvciIpKTsKICAgICB9KTsK
IAogICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0
YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggMGQ1MDM2MC4u
MmIyMTlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oCkBA
IC03Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoV2Vi
Q29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6RGVsZXRlSW5kZXhP
cGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGdldChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpH
ZXRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SURCR2V0UmVz
dWx0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25D
YWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHB1dChXZWJDb3JlOjpJREJUcmFu
c2FjdGlvbkJhY2tlbmQmLCBjb25zdCBXZWJDb3JlOjpQdXRPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKLSAgICB2
aXJ0dWFsIHZvaWQgb3BlbkN1cnNvcihXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBj
b25zdCBXZWJDb3JlOjpPcGVuQ3Vyc29yT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGlu
dDY0X3QsIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuQ3Vyc29yKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2Vu
ZCYsIGNvbnN0IFdlYkNvcmU6Ok9wZW5DdXJzb3JPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoaW50NjRfdCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+
KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY291bnQo
V2ViQ29yZTo6SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q291bnRPcGVy
YXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoaW50NjRfdCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
REJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZVJhbmdlKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNv
bnN0IFdlYkNvcmU6OkRlbGV0ZVJhbmdlT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBh
c3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2sp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0b3JlKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkNsZWFyT2JqZWN0U3RvcmVPcGVy
YXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFz
ZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7CkBAIC04MCw4ICs4MCw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKFdlYkNvcmU6
OklEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2Vu
ZDo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRy
PFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlk
ZTsKIAogICAgIC8vIEN1cnNvci1sZXZlbCBvcGVyYXRpb25zCi0gICAgdmlydHVhbCB2b2lkIGN1
cnNvckFkdmFuY2UoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkN1
cnNvckFkdmFuY2VPcGVyYXRpb24mLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJD
b3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJEYXRhYmFzZUVycm9y
Pik+IGNvbXBsZXRpb25DYWxsYmFjaykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGN1cnNv
ckl0ZXJhdGUoV2ViQ29yZTo6SURCQ3Vyc29yQmFja2VuZCYsIGNvbnN0IFdlYkNvcmU6OkN1cnNv
ckl0ZXJhdGlvbk9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+
KT4gY29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3Vyc29y
QWR2YW5jZShXZWJDb3JlOjpJREJDdXJzb3JCYWNrZW5kJiwgY29uc3QgV2ViQ29yZTo6Q3Vyc29y
QWR2YW5jZU9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4sIFBhc3NSZWZQdHI8
V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBjdXJzb3JJdGVyYXRlKFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmQmLCBjb25zdCBXZWJDb3JlOjpDdXJzb3JJdGVyYXRpb25PcGVyYXRpb24mLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQktleT4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJREJLZXk+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlRXJyb3I+KT4g
Y29tcGxldGlvbkNhbGxiYWNrKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViSURCU2VydmVyQ29ubmVjdGlvbk1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpOwpAQCAtMTEwLDkgKzExMCw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWREZWxldGVJbmRleCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wg
c3VjY2Vzcyk7CiAgICAgdm9pZCBkaWRQdXRSZWNvcmQodWludDY0X3QgcmVxdWVzdElELCBjb25z
dCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBkaWRHZXRSZWNvcmQodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBXZWJDb3JlOjpJREJHZXRSZXN1bHQmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICB2b2lkIGRpZE9wZW5DdXJzb3IodWludDY0X3Qg
cmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgV2ViQ29y
ZTo6SURCS2V5RGF0YSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIHVpbnQzMl90IGVycm9y
Q29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIHZvaWQgZGlkQWR2YW5jZUN1
cnNvcih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OklEQktleURhdGEmLCBXZWJDb3JlOjpJ
REJLZXlEYXRhJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgdWludDMyX3QgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0gICAgdm9pZCBkaWRJdGVyYXRlQ3Vyc29y
KHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSYsIFdlYkNvcmU6OklEQktl
eURhdGEmLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpZE9wZW5DdXJzb3IodWludDY0
X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRh
JiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKTsKKyAgICB2b2lkIGRpZEFkdmFuY2VDdXJzb3IodWludDY0X3Qg
cmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURC
S2V5RGF0YSYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFdlYkNvcmU6OklEQktl
eURhdGEmLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
KyAgICB2b2lkIGRpZEl0ZXJhdGVDdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJD
b3JlOjpJREJLZXlEYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKICAgICB2b2lkIGRpZENvdW50KHVp
bnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCBjb3VudCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBkaWREZWxldGVSYW5nZSh1aW50NjRf
dCByZXF1ZXN0SUQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9J
bmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCmluZGV4IGNiYTg1MGQuLjkyNzEwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2Vz
L0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC00MCw5ICs0
MCw5IEBAIG1lc3NhZ2VzIC0+IFdlYklEQlNlcnZlckNvbm5lY3Rpb24gTGVnYWN5UmVjZWl2ZXIg
ewogICAgIERpZERlbGV0ZUluZGV4KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQog
ICAgIERpZFB1dFJlY29yZCh1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OklEQktleURhdGEg
cmVzdWx0S2V5LCB1aW50MzJfdCBlcnJvckNvZGUsIFN0cmluZyBlcnJvck1lc3NhZ2UpCiAgICAg
RGlkR2V0UmVjb3JkKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6SURCR2V0UmVzdWx0IGdl
dFJlc3VsdCwgdWludDMyX3QgZXJyb3JDb2RlLCBTdHJpbmcgZXJyb3JNZXNzYWdlKQotICAgIERp
ZE9wZW5DdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBXZWJDb3Jl
OjpJREJLZXlEYXRhIGtleSwgV2ViQ29yZTo6SURCS2V5RGF0YSBwcmltYXJ5S2V5LCBJUEM6OkRh
dGFSZWZlcmVuY2UgdmFsdWUsIHVpbnQzMl90IGVycm9yQ29kZSwgU3RyaW5nIGVycm9yTWVzc2Fn
ZSkKLSAgICBEaWRBZHZhbmNlQ3Vyc29yKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6SURC
S2V5RGF0YSBrZXksIFdlYkNvcmU6OklEQktleURhdGEgcHJpbWFyeUtleSwgSVBDOjpEYXRhUmVm
ZXJlbmNlIHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIFN0cmluZyBlcnJvck1lc3NhZ2UpCi0g
ICAgRGlkSXRlcmF0ZUN1cnNvcih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OklEQktleURh
dGEga2V5LCBXZWJDb3JlOjpJREJLZXlEYXRhIHByaW1hcnlLZXksIElQQzo6RGF0YVJlZmVyZW5j
ZSB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBTdHJpbmcgZXJyb3JNZXNzYWdlKQorICAgIERp
ZE9wZW5DdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCBXZWJDb3Jl
OjpJREJLZXlEYXRhIGtleSwgV2ViQ29yZTo6SURCS2V5RGF0YSBwcmltYXJ5S2V5LCBJUEM6OkRh
dGFSZWZlcmVuY2UgdmFsdWUsIFdlYkNvcmU6OklEQktleURhdGEgdmFsdWVLZXksIHVpbnQzMl90
IGVycm9yQ29kZSwgU3RyaW5nIGVycm9yTWVzc2FnZSkKKyAgICBEaWRBZHZhbmNlQ3Vyc29yKHVp
bnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSBrZXksIFdlYkNvcmU6OklEQktl
eURhdGEgcHJpbWFyeUtleSwgSVBDOjpEYXRhUmVmZXJlbmNlIHZhbHVlLCBXZWJDb3JlOjpJREJL
ZXlEYXRhIHZhbHVlS2V5LCB1aW50MzJfdCBlcnJvckNvZGUsIFN0cmluZyBlcnJvck1lc3NhZ2Up
CisgICAgRGlkSXRlcmF0ZUN1cnNvcih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OklEQktl
eURhdGEga2V5LCBXZWJDb3JlOjpJREJLZXlEYXRhIHByaW1hcnlLZXksIElQQzo6RGF0YVJlZmVy
ZW5jZSB2YWx1ZSwgV2ViQ29yZTo6SURCS2V5RGF0YSB2YWx1ZUtleSwgdWludDMyX3QgZXJyb3JD
b2RlLCBTdHJpbmcgZXJyb3JNZXNzYWdlKQogICAgIERpZENvdW50KHVpbnQ2NF90IHJlcXVlc3RJ
RCwgaW50NjRfdCBjb3VudCwgdWludDMyX3QgZXJyb3JDb2RlLCBTdHJpbmcgZXJyb3JNZXNzYWdl
KQogICAgIERpZERlbGV0ZVJhbmdlKHVpbnQ2NF90IHJlcXVlc3RJRCwgdWludDMyX3QgZXJyb3JD
b2RlLCBTdHJpbmcgZXJyb3JNZXNzYWdlKQogfQo=
</data>
<flag name="review"
          id="246898"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>