<?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>127401</bug_id>
          
          <creation_ts>2014-01-21 20:32:49 -0800</creation_ts>
          <short_desc>IDB: Support &quot;put&quot;</short_desc>
          <delta_ts>2014-01-22 15:44:45 -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>InRadar</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>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>970550</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-21 20:32:49 -0800</bug_when>
    <thetext>IDB: Support &quot;put&quot;

In radar as &lt;rdar://problem/15779643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970586</commentid>
    <comment_count>1</comment_count>
      <attachid>221829</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-21 22:36:48 -0800</bug_when>
    <thetext>Created attachment 221829
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970587</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-21 22:38:10 -0800</bug_when>
    <thetext>Attachment 221829 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:409:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:410:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:80:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.h:122:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:78:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/DatabaseProcessIDBConnection.h:78:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 29 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>970858</commentid>
    <comment_count>3</comment_count>
      <attachid>221829</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-01-22 13:56:56 -0800</bug_when>
    <thetext>Comment on attachment 221829
Patch v1

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

Please fix non-Mac builds.

&gt; Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:13
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS&apos;&apos; AND ANY

I&apos;m not sure if these headers are correct. Did you get it from webkit.org?

This says &quot;Apple Inc.&quot; in copyright line, but &quot;APPLE, INC.&quot; with a comma inside.

&gt; Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:69
&gt; +PassRefPtr&lt;IDBKey&gt; IDBKeyData::maybeCreateIDBKey() const

maybe?

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.cpp:57
&gt; +RefPtr&lt;WebCore::SharedBuffer&gt; serializeIDBKey(const WebCore::IDBKey&amp; key)

We should have &quot;using namespace WebCore&quot; in this file if we don&apos;t yet.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:396
&gt; +void UniqueIDBDatabase::putRecord(const IDBTransactionIdentifier&amp; identifier, int64_t objectStoreID, const WebCore::IDBKeyData&amp; keyData, const IPC::DataReference&amp; value, int64_t putMode, const Vector&lt;int64_t&gt;&amp; indexIDs, const Vector&lt;Vector&lt;WebCore::IDBKeyData&gt;&gt;&amp; indexKeys, std::function&lt;void(const IDBKeyData&amp;, uint32_t, const String&amp;)&gt; callback)

Ditto.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:409
&gt; +    }, [this, callback]() {

Hopefully something protects &quot;this&quot; while the request is in progress.

&gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:528
&gt; +    // FIXME: The LevelDB post performs &quot;makeIndexWriters&quot; here. Necessary?

&quot;post&quot; looks like a typo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970881</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-22 14:44:28 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 221829 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=221829&amp;action=review
&gt; 
&gt; Please fix non-Mac builds.
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:13
&gt; &gt; + * THIS SOFTWARE IS PROVIDED BY APPLE, INC. ``AS IS&apos;&apos; AND ANY
&gt; 
&gt; I&apos;m not sure if these headers are correct. Did you get it from webkit.org?
&gt; 
&gt; This says &quot;Apple Inc.&quot; in copyright line, but &quot;APPLE, INC.&quot; with a comma inside.

Grabbed from another newly added file.  I see there&apos;s subtle variations floating around, not sure if any are canonical.  I removed the comma.

&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBKeyData.cpp:69
&gt; &gt; +PassRefPtr&lt;IDBKey&gt; IDBKeyData::maybeCreateIDBKey() const
&gt; 
&gt; maybe?

Definitely might return nullptr to represent a null IDBKey
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/IDBSerialization.cpp:57
&gt; &gt; +RefPtr&lt;WebCore::SharedBuffer&gt; serializeIDBKey(const WebCore::IDBKey&amp; key)
&gt; 
&gt; We should have &quot;using namespace WebCore&quot; in this file if we don&apos;t yet.

Okay!


&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:396
&gt; &gt; +void UniqueIDBDatabase::putRecord(const IDBTransactionIdentifier&amp; identifier, int64_t objectStoreID, const WebCore::IDBKeyData&amp; keyData, const IPC::DataReference&amp; value, int64_t putMode, const Vector&lt;int64_t&gt;&amp; indexIDs, const Vector&lt;Vector&lt;WebCore::IDBKeyData&gt;&gt;&amp; indexKeys, std::function&lt;void(const IDBKeyData&amp;, uint32_t, const String&amp;)&gt; callback)
&gt; 
&gt; Ditto.

Okay!

&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:409
&gt; &gt; +    }, [this, callback]() {
&gt; 
&gt; Hopefully something protects &quot;this&quot; while the request is in progress.

Yup, the connection outlives requests.

&gt; &gt; Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:528
&gt; &gt; +    // FIXME: The LevelDB post performs &quot;makeIndexWriters&quot; here. Necessary?
&gt; 
&gt; &quot;post&quot; looks like a typo.

Because it is!  s/post/port/

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970882</commentid>
    <comment_count>5</comment_count>
      <attachid>221906</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-22 14:47:08 -0800</bug_when>
    <thetext>Created attachment 221906
EWS run to check the builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970884</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 14:49:26 -0800</bug_when>
    <thetext>Attachment 221906 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:409:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 33 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>970903</commentid>
    <comment_count>7</comment_count>
      <attachid>221914</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-22 15:13:42 -0800</bug_when>
    <thetext>Created attachment 221914
Maybe fix EWS builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>970904</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-22 15:15:31 -0800</bug_when>
    <thetext>Attachment 221914 did not pass style-queue:


ERROR: Source/WebKit2/DatabaseProcess/IndexedDB/UniqueIDBDatabase.cpp:409:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 33 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>970918</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-01-22 15:44:45 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/162566</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221829</attachid>
            <date>2014-01-21 22:36:48 -0800</date>
            <delta_ts>2014-01-22 14:47:08 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>54538</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhN2QyZGJhLi45OWQ0MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMg
QEAKIDIwMTQtMDEtMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIElEQjogIlB1dCIgc3VwcG9ydAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU3Nzk2NDM+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDAxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHBlcnNpc3Rl
bnQgZW5jb2RlL2RlY29kZSBmb3Igc3RvcmFnZSB0byB0aGUgZGF0YWJhc2U6CisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleTo6ZGVjb2RlKToKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaDoKKworICAgICAgICBBZGQgYSBkYXRhIGNsYXNzIHRv
IHJlcHJlc2VudCBJREJLZXkgc3VpdGFibGUgZm9yIGNyb3NzaW5nIElQQzoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJREJLZXlEYXRhOjpJREJLZXlEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6
Om1heWJlQ3JlYXRlSURCS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6Omlzb2xh
dGVkQ29weSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleURhdGE6OklEQktleURhdGEpOgorCisgICAgICAg
ICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
S2V5RGF0YT46OmNvcHkpOgorICAgICAgICAqIHBsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmg6
CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKKzIwMTQtMDEtMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCiAgICAgICAgIFRoZSBJREIgYmFja2luZyBzdG9yZSBwdXQoKSBtZXRob2Qg
c2hvdWxkbid0IGNhbGwgSURCIGNhbGxiYWNrcyBkaXJlY3RseQogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Mzk5CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuY3BwCmluZGV4IDYzM2M4MzUuLjM3NWExYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcApAQCAtMjgsNiArMjgs
OCBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKKyNpbmNsdWRlICJLZXllZENv
ZGluZy5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElEQktleTo6fklEQktleSgpCkBAIC05
Niw2ICs5OCw0MSBAQCBib29sIElEQktleTo6aXNFcXVhbChjb25zdCBJREJLZXkqIG90aGVyKSBj
b25zdAogICAgIHJldHVybiAhY29tcGFyZShvdGhlcik7CiB9CiAKK3ZvaWQgSURCS2V5OjplbmNv
ZGUoS2V5ZWRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIuZW5jb2RlRW51
bSgidHlwZSIsIG1fdHlwZSk7CisKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNhc2UgSW52
YWxpZFR5cGU6CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFycmF5VHlwZToKKyAgICAgICAg
ZW5jb2Rlci5lbmNvZGVPYmplY3RzKCJhcnJheSIsIG1fYXJyYXkuYmVnaW4oKSwgbV9hcnJheS5l
bmQoKSwgW10oV2ViQ29yZTo6S2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBSZWZQdHI8SURC
S2V5PiYga2V5KSB7CisgICAgICAgICAgICBlbmNvZGVyLmVuY29kZU9iamVjdCgiaWRiS2V5Iiwg
KmtleSwgW10oS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBJREJLZXkmIGtleSkgeworICAg
ICAgICAgICAgICAgIGtleS5lbmNvZGUoZW5jb2Rlcik7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0cmluZ1R5cGU6CisgICAgICAgIGVu
Y29kZXIuZW5jb2RlU3RyaW5nKCJzdHJpbmciLCBtX3N0cmluZyk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIERhdGVUeXBlOgorICAgIGNhc2UgTnVtYmVyVHlwZToKKyAgICAgICAgZW5jb2Rl
ci5lbmNvZGVEb3VibGUoIm51bWJlciIsIG1fbnVtYmVyKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgTWluVHlwZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKworYm9vbCBJREJL
ZXk6OmRlY29kZShLZXllZERlY29kZXImLCBJREJLZXkmKQoreworICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgd2hlbiBJREIgR2V0IHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQgKDxyZGFyOi8vcHJvYmxl
bS8xNTc3OTY0ND4pCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuaApp
bmRleCA5MGI2MmQ1Li42MTc2ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJLZXkuaApAQCAtMzUsNiArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEtleWVkRGVjb2RlcjsKK2NsYXNzIEtleWVkRW5jb2RlcjsKKwogY2xhc3MgSURCS2V5IDog
cHVibGljIFJlZkNvdW50ZWQ8SURCS2V5PiB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPElEQktleT4+IEtleUFycmF5OwpAQCAtMTQ3LDYgKzE1MCw5IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBSZWZDb3VudGVkPElEQktleT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPElE
QktleT46OmRlcmVmOwogCisgICAgdm9pZCBlbmNvZGUoS2V5ZWRFbmNvZGVyJikgY29uc3Q7Cisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEtleWVkRGVjb2RlciYsIElEQktleSYpOworCiBwcml2YXRl
OgogICAgIElEQktleSgpIDogbV90eXBlKEludmFsaWRUeXBlKSwgbV9udW1iZXIoMCksIG1fc2l6
ZUVzdGltYXRlKE92ZXJoZWFkU2l6ZSkgeyB9CiAgICAgSURCS2V5KFR5cGUgdHlwZSwgZG91Ymxl
IG51bWJlcikgOiBtX3R5cGUodHlwZSksIG1fbnVtYmVyKG51bWJlciksIG1fc2l6ZUVzdGltYXRl
KE92ZXJoZWFkU2l6ZSArIHNpemVvZihkb3VibGUpKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uN2EyMGZjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQktleURhdGEuaCIKKworI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0lEQktleURhdGE6OklE
QktleURhdGEoSURCS2V5KiBrZXkpCisgICAgOiB0eXBlKElEQktleTo6SW52YWxpZFR5cGUpCisg
ICAgLCBudW1iZXJWYWx1ZSgwKQorICAgICwgaXNOdWxsKGZhbHNlKQoreworICAgIGlmICgha2V5
KSB7CisgICAgICAgIGlzTnVsbCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB0eXBlID0ga2V5LT50eXBlKCk7CisgICAgbnVtYmVyVmFsdWUgPSAwOworCisgICAgc3dpdGNo
ICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgorICAgICAgICBicmVhazsK
KyAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgorICAgICAgICBmb3IgKGF1dG8ga2V5IDoga2V5
LT5hcnJheSgpKQorICAgICAgICAgICAgYXJyYXlWYWx1ZS5hcHBlbmQoSURCS2V5RGF0YShrZXku
Z2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6Cisg
ICAgICAgIHN0cmluZ1ZhbHVlID0ga2V5LT5zdHJpbmcoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBJREJLZXk6OkRhdGVUeXBlOgorICAgICAgICBudW1iZXJWYWx1ZSA9IGtleS0+ZGF0ZSgp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToKKyAgICAgICAg
bnVtYmVyVmFsdWUgPSBrZXktPm51bWJlcigpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElE
QktleTo6TWluVHlwZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKworUGFzc1JlZlB0cjxJREJLZXk+IElEQktleURhdGE6Om1heWJlQ3Jl
YXRlSURCS2V5KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlw
ZToKKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlSW52YWxpZCgpOworICAgIGNhc2UgSURC
S2V5OjpBcnJheVR5cGU6CisgICAgeworICAgICAgICBJREJLZXk6OktleUFycmF5IGFycmF5Owor
ICAgICAgICBmb3IgKGF1dG8ga2V5RGF0YSA6IGFycmF5VmFsdWUpIHsKKyAgICAgICAgICAgIGFy
cmF5LmFwcGVuZChrZXlEYXRhLm1heWJlQ3JlYXRlSURCS2V5KCkpOworICAgICAgICAgICAgQVNT
RVJUKGFycmF5Lmxhc3QoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3Jl
YXRlQXJyYXkoYXJyYXkpOworICAgIH0KKyAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKKyAg
ICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlU3RyaW5nKHN0cmluZ1ZhbHVlKTsKKyAgICBjYXNl
IElEQktleTo6RGF0ZVR5cGU6CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZURhdGUobnVt
YmVyVmFsdWUpOworICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgorICAgICAgICByZXR1cm4g
SURCS2V5OjpjcmVhdGVOdW1iZXIobnVtYmVyVmFsdWUpOworICAgIGNhc2UgSURCS2V5OjpNaW5U
eXBlOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKK0lEQktleURhdGEgSURCS2V5RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sK
KyAgICBJREJLZXlEYXRhIHJlc3VsdDsKKyAgICByZXN1bHQudHlwZSA9IHR5cGU7CisgICAgcmVz
dWx0LmlzTnVsbCA9IGlzTnVsbDsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSURC
S2V5OjpJbnZhbGlkVHlwZToKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjYXNlIElEQktl
eTo6QXJyYXlUeXBlOgorICAgICAgICBmb3IgKGF1dG8ga2V5IDogYXJyYXlWYWx1ZSkKKyAgICAg
ICAgICAgIHJlc3VsdC5hcnJheVZhbHVlLmFwcGVuZChrZXkuaXNvbGF0ZWRDb3B5KCkpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgorICAgICAg
ICByZXN1bHQuc3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZS5pc29sYXRlZENvcHkoKTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6CisgICAgY2FzZSBJ
REJLZXk6Ok51bWJlclR5cGU6CisgICAgICAgIHJlc3VsdC5udW1iZXJWYWx1ZSA9IG51bWJlclZh
bHVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wMzIxYWJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZu
ZGVmIElEQktleURhdGFfaAorI2RlZmluZSBJREJLZXlEYXRhX2gKKworI2lmIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCS2V5LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworc3RydWN0IElEQktleURhdGEgeworICAgIElEQktleURhdGEoKQorICAgICAgICA6IHR5
cGUoSURCS2V5OjpJbnZhbGlkVHlwZSkKKyAgICAgICAgLCBudW1iZXJWYWx1ZSgwKQorICAgICAg
ICAsIGlzTnVsbCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBJREJLZXlEYXRhKElEQktleSop
OworCisgICAgUGFzc1JlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3Q7CisK
KyAgICBJREJLZXlEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgSURCS2V5OjpUeXBl
IHR5cGU7CisgICAgVmVjdG9yPElEQktleURhdGE+IGFycmF5VmFsdWU7CisgICAgU3RyaW5nIHN0
cmluZ1ZhbHVlOworICAgIGRvdWJsZSBudW1iZXJWYWx1ZTsKKyAgICBib29sIGlzTnVsbDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQorI2VuZGlmIC8vIElEQktleURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4
YmE2MzhlLi44ODRmZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzA3NywxMyArMzA3Nywx
OSBAQCBfX1pON1dlYkNvcmUyNk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlMTlyZWdpc3Rlck1l
ZGlhRW5naW5lRVBGdlBGTjNXVEYxMFBhc3NPdwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKK19fWk5LN1dlYkNvcmUxMElEQktleURhdGExN21heWJlQ3JlYXRlSURCS2V5
RXYKIF9fWk5LN1dlYkNvcmUxMElEQktleVBhdGg2ZW5jb2RlRVJOU18xMktleWVkRW5jb2RlckUK
K19fWk5LN1dlYkNvcmU2SURCS2V5NmVuY29kZUVSTlNfMTJLZXllZEVuY29kZXJFCitfX1pOSzdX
ZWJDb3JlNklEQktleTdpc1ZhbGlkRXYKK19fWk43V2ViQ29yZTEwSURCS2V5RGF0YUMxRVBOU182
SURCS2V5RQogX19aTjdXZWJDb3JlMTBJREJLZXlQYXRoQzFFUktOM1dURjZTdHJpbmdFCiBfX1pO
N1dlYkNvcmUxMElEQktleVBhdGhDMUVSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMx
XzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUxMElEQktleVBhdGg2ZGVjb2RlRVJO
U18xMktleWVkRGVjb2RlckVSUzBfCiBfX1pON1dlYkNvcmUxOElEQkRhdGFiYXNlQmFja2VuZDE0
b3BlbkNvbm5lY3Rpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJJREJDYWxsYmFja3NFRUVOUzJf
SU5TXzIwSURCRGF0YWJhc2VDYWxsYmFja3NFRUV4eQogX19aTjdXZWJDb3JlMThJREJEYXRhYmFz
ZUJhY2tlbmQ2Y3JlYXRlRVJLTjNXVEY2U3RyaW5nRVM0X1BOU18yNklEQkZhY3RvcnlCYWNrZW5k
SW50ZXJmYWNlRVJOU18xOUlEQlNlcnZlckNvbm5lY3Rpb25FCiBfX1pON1dlYkNvcmUxOElEQkRh
dGFiYXNlQmFja2VuZEQxRXYKK19fWk43V2ViQ29yZTIxQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlSUxi
MEVMYjBFTlNfMTBJREJLZXlEYXRhRUU0Y29weUVSS1MxXwogX19aTjdXZWJDb3JlMjFDcm9zc1Ro
cmVhZENvcGllckJhc2VJTGIwRUxiMEVOU18yMklEQk9iamVjdFN0b3JlTWV0YWRhdGFFRTRjb3B5
RVJLUzFfCiBfX1pON1dlYkNvcmUyMUNyb3NzVGhyZWFkQ29waWVyQmFzZUlMYjBFTGIwRU5TXzlJ
bmRleGVkREIxNVRyYW5zYWN0aW9uTW9kZUVFNGNvcHlFUktTMl8KK19fWk43V2ViQ29yZTZJREJL
ZXlEMUV2CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCBkNmY5MzFlLi5iYzI1OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzc2LDYgKzE3NzYs
OCBAQAogCQk1MTBENEEzODEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTBE
NEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmggKi87IH07
CiAJCTUxMTI5MzVGM0Q1NEI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTEy
OTM2MTNENkRCNEI1MkZBRjk3M0YgLyogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwICov
OyB9OwogCQk1MTEyOTM2MDNENjBCNEI1MkZBRjk3M0YgLyogSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MTI5MzYyM0Q4NUI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oICov
OyB9OworCQk1MTFFQzFBNjE4OERBQ0E0MDBCQTNFQjYgLyogSURCS2V5RGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUMxQTUxODhEQUNBNDAw
QkEzRUI2IC8qIElEQktleURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1MTFFQzFBODE4OERBRTdCMDBCQTNFQjYgLyogSURCS2V5RGF0YS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzFB
NzE4OERBRTdCMDBCQTNFQjYgLyogSURCS2V5RGF0YS5jcHAgKi87IH07CiAJCTUxMUVGMkMwMTdG
MEZEMzUwMEU0RkExNiAvKiBKU0lEQkFueS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFRjJBODE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJBbnku
Y3BwICovOyB9OwogCQk1MTFFRjJDMTE3RjBGRDM1MDBFNEZBMTYgLyogSlNJREJDdXJzb3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUYyQTkx
N0YwRkM0ODAwRTRGQTE2IC8qIEpTSURCQ3Vyc29yLmNwcCAqLzsgfTsKIAkJNTExRUYyQzIxN0Yw
RkQzNTAwRTRGQTE2IC8qIEpTSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVGMkFBMTdGMEZDNDgwMEU0RkExNiAv
KiBKU0lEQkN1cnNvcldpdGhWYWx1ZS5jcHAgKi87IH07CkBAIC04NzIyLDYgKzg3MjQsOCBAQAog
CQk1MTBENEEzMjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvY2tldFN0cmVhbUhhbmRsZUNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEyOTM2MTNENkRCNEI1MkZBRjk3
M0YgLyogSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTEyOTM2MjNEODVCNEI1MkZBRjk3M0YgLyogSW5zcGVj
dG9ySGVhcFByb2ZpbGVyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTExRUMxQTUxODhEQUNBNDAwQkEzRUI2IC8qIElEQktleURhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSURCS2V5RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTFFQzFBNzE4OERBRTdCMDBCQTNFQjYgLyogSURCS2V5RGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJLZXlEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExRUYyQTgxN0YwRkM0ODAwRTRGQTE2IC8qIEpTSURCQW55
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCQW55LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTExRUYyQTkxN0YwRkM0ODAwRTRGQTE2IC8qIEpTSURCQ3Vyc29yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCQ3Vyc29yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTExRUYyQUExN0YwRkM0ODAwRTRGQTE2IC8qIEpTSURCQ3Vyc29yV2l0aFZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSURCQ3Vyc29yV2l0aFZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NjkzLDYgKzE3Njk3LDggQEAKIAkJCQk1MUFCQjVC
NjE4NkQwRUQxMDA4MzkxQTEgLyogSURCSW5kZXhNZXRhZGF0YS5oICovLAogCQkJCTUxRDcxOTkx
MTgxMTA2RTAwMDE2REM1MSAvKiBJREJLZXkuY3BwICovLAogCQkJCTUxRDcxOTkyMTgxMTA2RTAw
MDE2REM1MSAvKiBJREJLZXkuaCAqLywKKwkJCQk1MTFFQzFBNzE4OERBRTdCMDBCQTNFQjYgLyog
SURCS2V5RGF0YS5jcHAgKi8sCisJCQkJNTExRUMxQTUxODhEQUNBNDAwQkEzRUI2IC8qIElEQktl
eURhdGEuaCAqLywKIAkJCQk1MUQ3MTk5MzE4MTEwNkUwMDAxNkRDNTEgLyogSURCS2V5UGF0aC5j
cHAgKi8sCiAJCQkJNTFENzE5OTQxODExMDZFMDAwMTZEQzUxIC8qIElEQktleVBhdGguaCAqLywK
IAkJCQk1MUQ3MTk5NTE4MTEwNkUwMDAxNkRDNTEgLyogSURCS2V5UmFuZ2UuY3BwICovLApAQCAt
MjM5ODcsNiArMjM5OTMsNyBAQAogCQkJCUNEOEI1QTQ5MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0
VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdDQUYwQTE5MkI5QzAw
QThFRjVGIC8qIEhUTUxIUkVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTI3MEEx
NTJBQzgwMEIxMkE2OCAvKiBIVE1MSHRtbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
MUVDMUE2MTg4REFDQTQwMEJBM0VCNiAvKiBJREJLZXlEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzk2OURCNDE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkVycm9yQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJBMEExNTJBQzgwMEIxMkE2OCAvKiBI
VE1MSUZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTdEMkQwQTE5Mzg1NTAw
QThFRjVGIC8qIEhUTUxJbWFnZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg3OTksNiAr
Mjg4MDYsNyBAQAogCQkJCTUxNzcxQzhFMTgyREI0QjcwMDhFNzgxRSAvKiBJREJEYXRhYmFzZUJh
Y2tlbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEyMjQ2NEIwQ0M5OEREQjAwQzA1MjQwIC8q
IFNRTGl0ZVN0YXRlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIyNDY0RDBDQzk4RERC
MDBDMDUyNDAgLyogU1FMaXRlVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTEx
RUMxQTgxODhEQUU3QjAwQkEzRUI2IC8qIElEQktleURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTdCQzZBNDExNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFJlc3VsdFNldC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5N0JDNkE0NDE1MDVGMDgxMDAxQjc0QUMgLyogU1FMUmVzdWx0U2V0Um93TGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkE0NzE1MDVGMDgxMDAxQjc0QUMgLyogU1FM
U3RhdGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Q3Jvc3NUaHJlYWRDb3BpZXIuY3BwCmluZGV4IDBhYWVhNzkuLmIwZTNhMjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogI2luY2x1ZGUgIklEQkRhdGFiYXNl
TWV0YWRhdGEuaCIKKyNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAjZW5kaWYKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtOTgsNiArOTksMTEgQEAgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNl
LCBmYWxzZSwgSURCSW5kZXhNZXRhZGF0YT46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXMKICAg
ICByZXR1cm4gbWV0YWRhdGEuaXNvbGF0ZWRDb3B5KCk7CiB9CiAKK0Nyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIElEQktleURhdGE+OjpUeXBlIENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIElEQktleURhdGE+Ojpjb3B5KGNvbnN0IElEQktleURhdGEmIGtleURh
dGEpCit7CisgICAgcmV0dXJuIGtleURhdGEuaXNvbGF0ZWRDb3B5KCk7Cit9CisKIENyb3NzVGhy
ZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE+OjpUeXBl
IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQk9iamVjdFN0b3JlTWV0YWRh
dGE+Ojpjb3B5KGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmIG1ldGFkYXRhKQogewogICAg
IHJldHVybiBtZXRhZGF0YS5pc29sYXRlZENvcHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Dcm9zc1RocmVhZENvcGllci5oCmluZGV4IDU5ZDBhYzIuLjAzMmEyN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaApAQCAtMTczLDYgKzE3MywxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgSURC
SW5kZXhNZXRhZGF0YSYpOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgSURCS2V5RGF0YTsKKyAgICB0
ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJL
ZXlEYXRhPiB7CisgICAgICAgIHR5cGVkZWYgSURCS2V5RGF0YSBUeXBlOworICAgICAgICBzdGF0
aWMgVHlwZSBjb3B5KGNvbnN0IElEQktleURhdGEmKTsKKyAgICB9OworCiAgICAgc3RydWN0IElE
Qk9iamVjdFN0b3JlTWV0YWRhdGE7CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRD
b3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gewogICAgICAg
ICB0eXBlZGVmIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1Njk1
N2QyLi4zMWRhODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjYgQEAKIDIwMTQtMDEtMjEgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogIlB1dCIgc3Vw
cG9ydAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU3Nzk2NDM+IGFuZCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2hpcCBwdXRSZWNvcmQgcmVxdWVzdHMgb3ZlciB0
byB0aGUgRGF0YWJhc2VQcm9jZXNzLCBhbmQgbGlzdGVuIGZvciBjb21wbGV0aW9uIGZyb20gdGhl
IERhdGFiYXNlUHJvY2VzczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNl
cnZlckNvbm5lY3Rpb246OnB1dCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlckNvbm5l
Y3Rpb246OmRpZFB1dFJlY29yZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKwor
ICAgICAgICBQYXNzIG9mZiB0aGUgcHV0UmVjb3JkIHJlcXVlc3QgdG8gdGhlIFVuaXF1ZSBJREJE
YXRhYmFzZToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uOjpwdXRSZWNvcmQpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRl
eGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oOgorICAgICAgICAqIERhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bjoKKworICAgICAgICBQYXNzIG9mZiB0aGUgcHV0UmVjb3JkIHJlcXVlc3QgdG8gdGhlIGJhY2tp
bmcgc3RvcmU6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJE
YXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNv
cmQpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNr
aW5nU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVj
b3JkSW5CYWNraW5nU3RvcmUpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuaDoKKworICAgICAgICBBZGQgYmFja2luZyBzdG9yZSBtZXRob2Rz
IHJlbGF0ZWQgdG8gcHV0UmVjb3JkLCB0aG91Z2ggb25seSBvbmUgaXMgY3JpdGljYWwgcmlnaHQg
bm93OgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3Nx
bGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpjcmVhdGVBbmRQb3B1
bGF0ZUluaXRpYWxNZXRhZGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlOjpnZW5lcmF0ZUtleSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1
ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjprZXlFeGlzdHNJbk9iamVjdFN0b3JlKToK
KyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnB1
dFJlY29yZCk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlOjp1cGRhdGVLZXlHZW5lcmF0b3IpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmg6CisK
KyAgICAgICAgQWRkIHRoZSBJREJLZXlEYXRhIHR5cGUgdG8gSVBDOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0Mi9tZXNzYWdlcy5weToKKyAgICAgICAgKHN0cnVjdF9vcl9jbGFzcyk6CisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6
QXJndW1lbnRDb2RlcjxJREJLZXlEYXRhPjo6ZW5jb2RlKToKKyAgICAgICAgKElQQzo6QXJndW1l
bnRDb2RlcjxJREJLZXlEYXRhPjo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmg6CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0lE
QlNlcmlhbGl6YXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpzZXJpYWxpemVJREJLZXkpOgor
ICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5oOgor
CisgICAgICAgIEltcGxlbWVudCBtb3JlIGNyb3NzLXRocmVhZCBjb3B5aW5nOgorICAgICAgICAq
IFNoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWZWN0
b3I8dWludDhfdD4+Ojpjb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlZlY3RvcjxWZWN0b3I8SURC
S2V5RGF0YT4+Pjo6Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpBU0NJSUxpdGVyYWw+Ojpjb3B5
KToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKworICAgICAgICBJ
bXBsZW1lbnQgbW9yZSBudW1iZXJzIG9mIGdlbmVyaWMgQXN5bmNUYXNrIHRlbXBsYXRlczoKKyAg
ICAgICAgKiBTaGFyZWQvQXN5bmNUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZUFzeW5j
VGFzayk6CisKKzIwMTQtMDEtMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CiAgICAgICAgIFRoZSBJREIgYmFja2luZyBzdG9yZSBwdXQoKSBtZXRob2Qgc2hvdWxkbid0IGNh
bGwgSURCIGNhbGxiYWNrcyBkaXJlY3RseQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTI3Mzk5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vz
c0lEQkNvbm5lY3Rpb24uY3BwCmluZGV4IDUxOTZkNDguLjVmODA3MzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcApAQCAtMTc3LDYgKzE3NywxOCBA
QCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmRlbGV0ZU9iamVjdFN0b3JlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdAogICAgIH0pOwogfQogCit2b2lkIERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb246OnB1dFJlY29yZCh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3Qg
dHJhbnNhY3Rpb25JRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJL
ZXlEYXRhJiBrZXksIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgdmFsdWUsIGludDY0X3QgcHV0
TW9kZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3Rv
cjxXZWJDb3JlOjpJREJLZXlEYXRhPj4mIGluZGV4S2V5cykKK3sKKyAgICBBU1NFUlQobV91bmlx
dWVJREJEYXRhYmFzZSk7CisKKyAgICBMT0coSURCLCAiRGF0YWJhc2VQcm9jZXNzIHB1dFJlY29y
ZCByZXF1ZXN0IElEICVsbHUsIG9iamVjdCBzdG9yZSBpZCAlbGxpIiwgcmVxdWVzdElELCBvYmpl
Y3RTdG9yZUlEKTsKKyAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbj4gY29u
bmVjdGlvbih0aGlzKTsKKyAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5wdXRSZWNvcmQoSURCVHJh
bnNhY3Rpb25JZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRCwg
a2V5LCB2YWx1ZSwgcHV0TW9kZSwgaW5kZXhJRHMsIGluZGV4S2V5cywgW2Nvbm5lY3Rpb24sIHJl
cXVlc3RJRF0oY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgdWludDMyX3QgZXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRQdXRSZWNvcmQocmVxdWVzdElELCBr
ZXlEYXRhLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOworICAgIH0pOworfQorCisKIElQQzo6
Q29ubmVjdGlvbiogRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKQogewogICAgIHJldHVybiBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgKaW5kZXggNGQ2ZmE1My4u
MGFmMjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgK
QEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK3N0cnVjdCBJREJLZXlEYXRhOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOwpAQCAtNzEsNiArNzUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50
NjRfdCB0cmFuc2FjdGlvbklELCB1aW50NjRfdCBuZXdWZXJzaW9uKTsKICAgICB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBX
ZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQpOworICAgIHZvaWQgcHV0UmVjb3JkKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50
NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6
OklEQktleURhdGEmIGtleSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRf
dCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8
VmVjdG9yPFdlYkNvcmU6OklEQktleURhdGE+PiYgaW5kZXhLZXlzKTsKIAogICAgIFJlZjxEYXRh
YmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICB1aW50NjRfdCBt
X3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRh
YmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQzZDY1ODQuLmE5Mzg0
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTM1LDYgKzM1LDcgQEAgbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgQ2hhbmdlRGF0YWJhc2VWZXJz
aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCB1aW50NjRfdCBu
ZXdWZXJzaW9uKQogICAgIENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50
NjRfdCB0cmFuc2FjdGlvbklELCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVj
dFN0b3JlTWV0YWRhdGEpCiAgICAgRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElE
LCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKKyAgICBQdXRS
ZWNvcmQodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qg
b2JqZWN0U3RvcmVJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSBrZXksIElQQzo6RGF0YVJlZmVyZW5j
ZSB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBWZWN0b3I8aW50NjRfdD4gaW5kZXhJRHMsIFZlY3Rv
cjxWZWN0b3I8V2ViQ29yZTo6SURCS2V5RGF0YT4+IGluZGV4S2V5cykKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2Vy
aWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDYyMGExODYuLmU2MDQ0ZjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJT
ZXJpYWxpemF0aW9uLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkFyZ3VtZW50RW5j
b2Rlci5oIgogI2luY2x1ZGUgIktleWVkRGVjb2Rlci5oIgogI2luY2x1ZGUgIktleWVkRW5jb2Rl
ci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJL
ZXlQYXRoLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTMsNiArNTQsMTMgQEAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OklEQktleVBhdGg+IGRlc2VyaWFsaXplSURCS2V5UGF0
aChjb25zdCB1aW50OF90KiBkYXRhLAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1JlZlB0cjxX
ZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleShjb25zdCBXZWJDb3JlOjpJREJL
ZXkmIGtleSkKK3sKKyAgICBLZXllZEVuY29kZXIgZW5jb2RlcjsKKyAgICBrZXkuZW5jb2RlKGVu
Y29kZXIpOworICAgIHJldHVybiBlbmNvZGVyLmZpbmlzaEVuY29kaW5nKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0lEQlNl
cmlhbGl6YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
SURCU2VyaWFsaXphdGlvbi5oCmluZGV4IGE2YzczZGYuLjU1YmExN2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFs
aXphdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJLZXlQYXRoOwogfQog
CkBAIC00MCw2ICs0MSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogUmVmUHRyPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5UGF0aChjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRo
Jik7CiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCS2V5UGF0aD4gZGVzZXJpYWxpemVJREJL
ZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpOwogCitSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXkoY29uc3QgV2ViQ29yZTo6
SURCS2V5Jik7CitQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gZGVzZXJpYWxpemVJREJLZXko
Y29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5p
cXVlSURCRGF0YWJhc2UuY3BwCmluZGV4IDc3NzgxMTIuLmVlZjFlMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVl
SURCRGF0YWJhc2UuY3BwCkBAIC0zMCwxMyArMzAsMTcgQEAKIAogI2luY2x1ZGUgIkFzeW5jUmVx
dWVzdC5oIgogI2luY2x1ZGUgIkFzeW5jVGFzay5oIgorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2Uu
aCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3MuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGUuaCIKICNpbmNsdWRlICJXZWJDcm9zc1RocmVhZENvcGllci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCRGF0YWJhc2VCYWNr
ZW5kLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKQEAgLTM4OSw2ICszOTMsMjkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2Jq
ZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGkKICAgICBwb3N0
RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpk
ZWxldGVPYmplY3RTdG9yZUluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIGlkZW50aWZpZXIsIG9i
amVjdFN0b3JlSUQpKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNv
bnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RT
dG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90
PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SURCS2V5RGF0YT4+JiBp
bmRleEtleXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJLZXlEYXRhJiwgdWludDMyX3Qs
IGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKCFtX2FjY2VwdGluZ05ld1JlcXVlc3RzKSB7CisgICAgICAgIGNhbGxiYWNr
KElEQktleURhdGEoKSwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gcHV0IHJlY29yZCBp
bnRvIGRhdGFiYXNlIGJlY2F1c2UgaXQgaGFzIHNodXQgZG93biIpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgQVNTRVJUKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhv
YmplY3RTdG9yZUlEKSk7CisKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5
bmNSZXF1ZXN0SW1wbDxjb25zdCBJREJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyY+
OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCB1aW50
MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CisgICAgICAgIGNh
bGxiYWNrKGtleURhdGEsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9LCBbdGhpcywg
Y2FsbGJhY2tdKCkgeworICAgICAgICBjYWxsYmFjayhJREJLZXlEYXRhKCksIElOVkFMSURfU1RB
VEVfRVJSLCAiVW5hYmxlIHRvIHB1dCByZWNvcmQgaW50byBkYXRhYmFzZSIpOzsKKyAgICB9KTsK
KworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHJlcXVlc3QtPnJlcXVlc3RJRCgpOworICAgIG1f
cGVuZGluZ0RhdGFiYXNlVGFza3MuYWRkKHJlcXVlc3RJRCwgcmVxdWVzdC5yZWxlYXNlKCkpOwor
CisgICAgcG9zdERhdGFiYXNlVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJE
YXRhYmFzZTo6cHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgaWRlbnRpZmllciwg
bV9tZXRhZGF0YS0+b2JqZWN0U3RvcmVzLmdldChvYmplY3RTdG9yZUlEKSwga2V5RGF0YSwgdmFs
dWUudmVjdG9yKCksIHB1dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMpKTsKK30KKwogdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKGNvbnN0IElEQlRy
YW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBv
YmplY3RTdG9yZUlEcywgV2ViQ29yZTo6SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTQ2OSw2ICs0OTYsNjIgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGVsZXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnMKICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNU
YXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZERlbGV0ZU9iamVjdFN0b3JlLCByZXF1
ZXN0SUQsIHN1Y2Nlc3MpKTsKIH0KIAordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3Jk
SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklk
ZW50aWZpZXImIHRyYW5zYWN0aW9uLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBvYmpl
Y3RTdG9yZU1ldGFkYXRhLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3Rvcjxp
bnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SURCS2V5RGF0
YT4+JiBpbmRleEtleXMpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKG1fYmFja2luZ1N0b3JlKTsKKworICAgIGJvb2wga2V5V2FzR2VuZXJhdGVkID0gZmFsc2U7
CisgICAgUmVmUHRyPElEQktleT4ga2V5OworCisgICAgaWYgKHB1dE1vZGUgIT0gSURCRGF0YWJh
c2VCYWNrZW5kOjpDdXJzb3JVcGRhdGUgJiYgb2JqZWN0U3RvcmVNZXRhZGF0YS5hdXRvSW5jcmVt
ZW50ICYmIGtleURhdGEuaXNOdWxsKSB7CisgICAgICAgIGtleSA9IG1fYmFja2luZ1N0b3JlLT5n
ZW5lcmF0ZUtleSh0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCk7CisgICAgICAg
IGtleVdhc0dlbmVyYXRlZCA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIGtleSA9IGtleURh
dGEubWF5YmVDcmVhdGVJREJLZXkoKTsKKworICAgIEFTU0VSVChrZXkpOworICAgIEFTU0VSVChr
ZXktPmlzVmFsaWQoKSk7CisKKyAgICBpZiAocHV0TW9kZSA9PSBJREJEYXRhYmFzZUJhY2tlbmQ6
OkFkZE9ubHkpIHsKKyAgICAgICAgYm9vbCBrZXlFeGlzdHM7CisgICAgICAgIGlmICghbV9iYWNr
aW5nU3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb24sIG9iamVjdFN0b3Jl
TWV0YWRhdGEuaWQsICprZXksIGtleUV4aXN0cykpIHsKKyAgICAgICAgICAgIHBvc3RNYWluVGhy
ZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0
UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgpLCBJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCBBU0NJSUxpdGVyYWwoIkludGVybmFsIGJhY2tpbmcg
c3RvcmUgZXJyb3IgY2hlY2tpbmcgZm9yIGtleSBleGlzdGVuY2UiKSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChrZXlFeGlzdHMpIHsKKyAgICAgICAgICAg
IHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRh
YmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YSgp
LCBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6Q29uc3RyYWludEVycm9yLCBBU0NJSUxpdGVyYWwoIktl
eSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgb2JqZWN0IHN0b3JlIikpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEZJWE1FOiBUaGUgTGV2ZWxEQiBwb3N0
IHBlcmZvcm1zICJtYWtlSW5kZXhXcml0ZXJzIiBoZXJlLiBOZWNlc3Nhcnk/CisKKyAgICBpZiAo
IW1fYmFja2luZ1N0b3JlLT5wdXRSZWNvcmQodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRh
dGEuaWQsICprZXksIHZhbHVlLmRhdGEoKSwgdmFsdWUuc2l6ZSgpKSkgeworICAgICAgICBwb3N0
TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURC
RGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBi
YWNraW5nIHN0b3JlIGVycm9yIHB1dHRpbmcgYSByZWNvcmQiKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gRklYTUU6IFRoZSBMZXZlbERCIHBvcnQgdXBkYXRlcyBpbmRleCBr
ZXlzIGhlcmUuIE5lY2Vzc2FyeT8KKworICAgIGlmIChwdXRNb2RlICE9IElEQkRhdGFiYXNlQmFj
a2VuZDo6Q3Vyc29yVXBkYXRlICYmIG9iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCAm
JiBrZXktPnR5cGUoKSA9PSBJREJLZXk6Ok51bWJlclR5cGUpIHsKKyAgICAgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZS0+dXBkYXRlS2V5R2VuZXJhdG9yKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1l
dGFkYXRhLmlkLCAqa2V5LCBrZXlXYXNHZW5lcmF0ZWQpKSB7CisgICAgICAgICAgICBwb3N0TWFp
blRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRp
ZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0
YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNr
aW5nIHN0b3JlIGVycm9yIHVwZGF0aW5nIGtleSBnZW5lcmF0b3IiKSkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0
ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tp
bmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKGtleS5nZXQoKSksIDAsIFN0cmluZyhTdHJp
bmdJbXBsOjplbXB0eSgpKSkpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRS
ZWNvcmRJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQktleURhdGEm
IGtleURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
Cit7CisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gcmVxdWVzdCA9IG1fcGVuZGluZ0RhdGFiYXNl
VGFza3MudGFrZShyZXF1ZXN0SUQpOworICAgIEFTU0VSVChyZXF1ZXN0KTsKKworICAgIHJlcXVl
c3QtPmNvbXBsZXRlUmVxdWVzdChrZXlEYXRhLCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSk7Cit9
CisKIFN0cmluZyBVbmlxdWVJREJEYXRhYmFzZTo6YWJzb2x1dGVEYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaCBi
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJh
c2UuaAppbmRleCBiZWRjZDU4Ny4uNGM1NmE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaApA
QCAtNDAsNiArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgSURCRGF0YWJh
c2VNZXRhZGF0YTsKK3N0cnVjdCBJREJLZXlEYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTc2LDYgKzc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2hhbmdlRGF0YWJhc2VWZXJzaW9u
KGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24sIHN0
ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKICAgICB2b2lkIGNyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNv
cmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1
Y2Nlc3NDYWxsYmFjayk7CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHN0ZDo6ZnVuY3Rpb248
dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICB2b2lkIHB1dFJlY29yZChjb25zdCBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdl
YkNvcmU6OklEQktleURhdGEmIGtleSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwg
aW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBW
ZWN0b3I8VmVjdG9yPFdlYkNvcmU6OklEQktleURhdGE+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJp
bmcmKT4gY2FsbGJhY2spOwogCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0
IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYpOwpAQCAtMTE3LDYgKzExOSw4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tpbmdTdG9yZSh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5l
d1ZlcnNpb24pOwogICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdl
YkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0
b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlv
bklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpOworICAgIHZvaWQgcHV0UmVjb3Jk
SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklk
ZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgY29uc3Qg
V2ViQ29yZTo6SURCS2V5RGF0YSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhbHVlLCBp
bnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZl
Y3RvcjxWZWN0b3I8V2ViQ29yZTo6SURCS2V5RGF0YT4+JiBpbmRleEtleXMpOworCiAKICAgICB2
b2lkIHNodXRkb3duQmFja2luZ1N0b3JlKCk7CiAKQEAgLTEyNyw2ICsxMzEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Ym9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKKyAgICB2b2lkIGRpZFB1dFJlY29yZElu
QmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0
YSYsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogICAg
IHZvaWQgZGlkU2h1dGRvd25CYWNraW5nU3RvcmUoKTsKICAgICB2b2lkIGRpZENvbXBsZXRlQm9v
bFJlcXVlc3QodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmgKaW5kZXggYWJmMTgzZC4uOGRhZWQ3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9V
bmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaApAQCAt
MzIsNiArMzIsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIElEQktleTsKKwogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiBz
dHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIH0KQEAgLTU1LDYgKzU3LDEzIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgY2hhbmdlRGF0YWJhc2VWZXJzaW9uKGNvbnN0IElEQlRyYW5z
YWN0aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwg
Y29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwg
aW50NjRfdCBvYmplY3RTdG9yZUlEKSA9IDA7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCS2V5PiBnZW5lcmF0ZUtleShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXIm
LCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3Rz
SW5PYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9i
amVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wmIGtleUV4aXN0cykgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlm
aWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBjb25z
dCB1aW50OF90KiB2YWx1ZUJ1ZmZlciwgc2l6ZV90IHZhbHVlU2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCB1cGRhdGVLZXlHZW5lcmF0b3IoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVy
JiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBib29sIGNo
ZWNrQ3VycmVudCkgPSAwOworCisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0
YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGUuY3BwCmluZGV4IDlkYzgyYjYuLjdhMmY5MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJTUUxpdGVJREJUcmFuc2FjdGlvbi5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCRGF0
YWJhc2VNZXRhZGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0
YXRlbWVudC5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC04OSw2ICs5MCwxMiBA
QCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VNZXRhZGF0YT4gVW5pcXVlSURC
RGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKKyAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgUmVj
b3JkcyAob2JqZWN0U3RvcmVJRCBJTlRFR0VSIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwsIGtl
eSBCTE9CIE5PVCBOVUxMIE9OIENPTkZMSUNUIEZBSUwgVU5JUVVFIE9OIENPTkZMSUNUIFJFUExB
Q0UsIHZhbHVlIEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCk7IikpIHsKKyAgICAgICAg
TE9HX0VSUk9SKCJDb3VsZCBub3QgY3JlYXRlIFJlY29yZHMgdGFibGUgaW4gZGF0YWJhc2UgKCVp
KSAtICVzIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yKCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1z
ZygpKTsKKyAgICAgICAgbV9zcWxpdGVEQiA9IG51bGxwdHI7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKwogICAgIHsKICAgICAgICAgU1FMaXRlU3RhdGVtZW50IHNxbCgqbV9zcWxp
dGVEQiwgQVNDSUlMaXRlcmFsKCJJTlNFUlQgSU5UTyBJREJEYXRhYmFzZUluZm8gVkFMVUVTICgn
TWV0YWRhdGFWZXJzaW9uJywgPyk7IikpOwogICAgICAgICBpZiAoc3FsLnByZXBhcmUoKSAhPSBT
UUxSZXN1bHRPawpAQCAtNDE1LDYgKzQyMiw2MCBAQCBib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFj
a2luZ1N0b3JlU1FMaXRlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbgog
ICAgIHJldHVybiB0cnVlOwogfQogCitQYXNzUmVmUHRyPElEQktleT4gVW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmVTUUxpdGU6OmdlbmVyYXRlS2V5KGNvbnN0IElEQlRyYW5zYWN0aW9uSWRl
bnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKK3sKKyAgICAvLyBGSVhNRSAoPHJkYXI6
Ly9wcm9ibGVtLzE1ODc3OTA5Pik6IEltcGxlbWVudAorICAgIHJldHVybiBudWxscHRyOworfQor
Citib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjprZXlFeGlzdHNJbk9i
amVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCwgY29uc3QgSURCS2V5JiwgYm9vbCYga2V5RXhpc3RzKQoreworICAgIC8vIEZJWE1F
OiBXaGVuIEdldCBzdXBwb3J0IGlzIGltcGxlbWVudGVkLCB3ZSBuZWVkIHRvIGltcGxlbWVudCB0
aGlzIGFsc28gKDxyZGFyOi8vcHJvYmxlbS8xNTc3OTY0ND4pCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpwdXRSZWNvcmQo
Y29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBpbnQ2NF90IG9iamVj
dFN0b3JlSUQsIGNvbnN0IElEQktleSYga2V5LCBjb25zdCB1aW50OF90KiB2YWx1ZUJ1ZmZlciwg
c2l6ZV90IHZhbHVlU2l6ZSkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQobV9zcWxpdGVEQik7CisgICAgQVNTRVJUKG1fc3FsaXRlREItPmlzT3BlbigpKTsKKwor
ICAgIFNRTGl0ZUlEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IG1fdHJhbnNhY3Rpb25zLmdl
dChpZGVudGlmaWVyKTsKKyAgICBpZiAoIXRyYW5zYWN0aW9uIHx8ICF0cmFuc2FjdGlvbi0+aW5Q
cm9ncmVzcygpKSB7CisgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBwdXQgYSByZWNvcmQg
aW50byBkYXRhYmFzZSB3aXRob3V0IGFuIGVzdGFibGlzaGVkLCBpbi1wcm9ncmVzcyB0cmFuc2Fj
dGlvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmICh0cmFuc2FjdGlv
bi0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlOjpSZWFkT25seSkgeworICAg
ICAgICBMT0dfRVJST1IoIkF0dGVtcHQgdG8gcHV0IGEgcmVjb3JkIGludG8gZGF0YWJhc2UgZHVy
aW5nIHJlYWQtb25seSB0cmFuc2FjdGlvbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4ga2V5QnVmZmVyID0gc2VyaWFsaXplSURCS2V5
KGtleSk7CisgICAgaWYgKCFrZXlCdWZmZXIpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJVbmFibGUg
dG8gc2VyaWFsaXplIElEQktleSB0byBiZSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgeworICAgICAgICBTUUxpdGVTdGF0ZW1lbnQg
c3FsKCptX3NxbGl0ZURCLCBBU0NJSUxpdGVyYWwoIklOU0VSVCBJTlRPIFJlY29yZHMgVkFMVUVT
ICg/LCA/LCA/KTsiKSk7CisgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9r
CisgICAgICAgICAgICB8fCBzcWwuYmluZEludDY0KDEsIG9iamVjdFN0b3JlSUQpICE9IFNRTFJl
c3VsdE9rCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMiwga2V5QnVmZmVyLT5kYXRhKCks
IGtleUJ1ZmZlci0+c2l6ZSgpKSAhPSBTUUxSZXN1bHRPaworICAgICAgICAgICAgfHwgc3FsLmJp
bmRCbG9iKDMsIHZhbHVlQnVmZmVyLCB2YWx1ZVNpemUpICE9IFNRTFJlc3VsdE9rCisgICAgICAg
ICAgICB8fCBzcWwuc3RlcCgpICE9IFNRTFJlc3VsdERvbmUpIHsKKyAgICAgICAgICAgIExPR19F
UlJPUigiQ291bGQgbm90IHB1dCByZWNvcmQgZm9yIG9iamVjdCBzdG9yZSAlbGxpIGluIFJlY29y
ZHMgdGFibGUgKCVpKSAtICVzIiwgb2JqZWN0U3RvcmVJRCwgbV9zcWxpdGVEQi0+bGFzdEVycm9y
KCksIG1fc3FsaXRlREItPmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFVuaXF1
ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjp1cGRhdGVLZXlHZW5lcmF0b3IoY29uc3Qg
SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJ
REJLZXkmLCBib29sIGNoZWNrQ3VycmVudCkKK3sKKyAgICAvLyBGSVhNRSAoPHJkYXI6Ly9wcm9i
bGVtLzE1ODc3OTA5Pik6IEltcGxlbWVudAorICAgIHJldHVybiBmYWxzZTsKK30KKwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxp
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1Vu
aXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgKaW5kZXggODkxYzk4ZC4uNjQ1MDNi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCkBAIC02NCw2ICs2NCwxMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmll
ciYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIGJvb2wgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVu
dGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKSBvdmVycmlkZTsKIAorICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IGdlbmVyYXRlS2V5KGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVu
dGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXkmLCBi
b29sJiBrZXlFeGlzdHMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgYm9vbCBwdXRSZWNvcmQoY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25z
dCBXZWJDb3JlOjpJREJLZXkmLCBjb25zdCB1aW50OF90KiB2YWx1ZUJ1ZmZlciwgc2l6ZV90IHZh
bHVlU2l6ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUtleUdlbmVyYXRvcihj
b25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNv
bnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KSBvdmVycmlkZTsKKwogcHJp
dmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZShjb25zdCBVbmlx
dWVJREJEYXRhYmFzZUlkZW50aWZpZXImLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CmluZGV4IGVk
NDA1ZmQuLjJkNjQ3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0
Mi9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2Fn
ZXMucHkKQEAgLTE3Nyw2ICsxNzcsNyBAQCBkZWYgc3RydWN0X29yX2NsYXNzKG5hbWVzcGFjZSwg
dHlwZSk6CiAgICAgICAgICdXZWJDb3JlOjpGaWxlQ2hvb3NlclNldHRpbmdzJywKICAgICAgICAg
J1dlYkNvcmU6OkdyYW1tYXJEZXRhaWwnLAogICAgICAgICAnV2ViQ29yZTo6SURCRGF0YWJhc2VN
ZXRhZGF0YScsCisgICAgICAgICdXZWJDb3JlOjpJREJLZXlEYXRhJywKICAgICAgICAgJ1dlYkNv
cmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEnLAogICAgICAgICAnV2ViQ29yZTo6SWRlbnRpdHlU
cmFuc2Zvcm1PcGVyYXRpb24nLAogICAgICAgICAnV2ViQ29yZTo6S2V5cHJlc3NDb21tYW5kJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaAppbmRleCAxODdhNjNiLi5iZWRkOGMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNUYXNrLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FzeW5jVGFzay5oCkBAIC0xMTYsNiArMTE2LDUwIEBAIHN0ZDo6dW5pcXVlX3B0
cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKICAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJl
YWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwg
dHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QND4KK3N0
ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKKyAgICBUJiBjYWxsZWUs
CisgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0KSwKKyAgICBjb25zdCBQ
MSYgcGFyYW1ldGVyMSwKKyAgICBjb25zdCBQMiYgcGFyYW1ldGVyMiwKKyAgICBjb25zdCBQMyYg
cGFyYW1ldGVyMywKKyAgICBjb25zdCBQNCYgcGFyYW1ldGVyNCkKK3sKKyAgICByZXR1cm4gc3Rk
OjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBNUDMsIE1QND4+KAorICAg
ICAgICAmY2FsbGVlLAorICAgICAgICBtZXRob2QsCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhy
ZWFkQ29waWVyPFAxPjo6Y29weShwYXJhbWV0ZXIxKSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NU
aHJlYWRDb3BpZXI8UDI+Ojpjb3B5KHBhcmFtZXRlcjIpLAorICAgICAgICBXZWJDb3JlOjpDcm9z
c1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMyksCisgICAgICAgIFdlYkNvcmU6OkNy
b3NzVGhyZWFkQ29waWVyPFA0Pjo6Y29weShwYXJhbWV0ZXI0KSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBNUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFt
ZSBNUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBNUDMsIHR5cGVuYW1lIFA0LCB0eXBlbmFtZSBN
UDQsIHR5cGVuYW1lIFA1LCB0eXBlbmFtZSBNUDUsIHR5cGVuYW1lIFA2LCB0eXBlbmFtZSBNUDYs
IHR5cGVuYW1lIFA3LCB0eXBlbmFtZSBNUDcsIHR5cGVuYW1lIFA4LCB0eXBlbmFtZSBNUDg+Citz
dGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPiBjcmVhdGVBc3luY1Rhc2soCisgICAgVCYgY2FsbGVl
LAorICAgIHZvaWQgKFQ6OiptZXRob2QpKE1QMSwgTVAyLCBNUDMsIE1QNCwgTVA1LCBNUDYsIE1Q
NywgTVA4KSwKKyAgICBjb25zdCBQMSYgcGFyYW1ldGVyMSwKKyAgICBjb25zdCBQMiYgcGFyYW1l
dGVyMiwKKyAgICBjb25zdCBQMyYgcGFyYW1ldGVyMywKKyAgICBjb25zdCBQNCYgcGFyYW1ldGVy
NCwKKyAgICBjb25zdCBQNSYgcGFyYW1ldGVyNSwKKyAgICBjb25zdCBQNiYgcGFyYW1ldGVyNiwK
KyAgICBjb25zdCBQNyYgcGFyYW1ldGVyNywKKyAgICBjb25zdCBQOCYgcGFyYW1ldGVyOCkKK3sK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2tJbXBsPFQsIE1QMSwgTVAyLCBN
UDMsIE1QNCwgTVA1LCBNUDYsIE1QNywgTVA4Pj4oCisgICAgICAgICZjYWxsZWUsCisgICAgICAg
IG1ldGhvZCwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBh
cmFtZXRlcjEpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHko
cGFyYW1ldGVyMiksCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29w
eShwYXJhbWV0ZXIzKSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpj
b3B5KHBhcmFtZXRlcjQpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNT46
OmNvcHkocGFyYW1ldGVyNSksCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA2
Pjo6Y29weShwYXJhbWV0ZXI2KSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8
UDc+Ojpjb3B5KHBhcmFtZXRlcjcpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGll
cjxQOD46OmNvcHkocGFyYW1ldGVyOCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIEFzeW5jVGFza19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ0ZDVmODguLjZmYmY4NDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC00Miw2ICs0Miw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQkRhdGFiYXNlTWV0YWRh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0lEQktleVBhdGguaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ltYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9MZW5ndGguaD4KQEAgLTE2MjIsNiArMTYyMyw2OCBAQCBib29sIEFyZ3VtZW50Q29kZXI8
SURCSW5kZXhNZXRhZGF0YT46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIElEQklu
ZGV4TQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIEFyZ3VtZW50Q29kZXI8SURCS2V5RGF0
YT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IElEQktleURhdGEmIGtl
eURhdGEpCit7CisgICAgZW5jb2RlciA8PCBrZXlEYXRhLmlzTnVsbDsKKyAgICBpZiAoa2V5RGF0
YS5pc051bGwpCisgICAgICAgIHJldHVybjsKKworICAgIGVuY29kZXIuZW5jb2RlRW51bShrZXlE
YXRhLnR5cGUpOworCisgICAgc3dpdGNoIChrZXlEYXRhLnR5cGUpIHsKKyAgICBjYXNlIElEQktl
eTo6SW52YWxpZFR5cGU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpBcnJheVR5
cGU6CisgICAgICAgIGVuY29kZXIgPDwga2V5RGF0YS5hcnJheVZhbHVlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKKyAgICAgICAgZW5jb2RlciA8PCBrZXlE
YXRhLnN0cmluZ1ZhbHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5
cGU6CisgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CisgICAgICAgIGVuY29kZXIgPDwga2V5
RGF0YS5udW1iZXJWYWx1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6Ok1pblR5
cGU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxJREJLZXlEYXRhPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgSURCS2V5RGF0YSYga2V5RGF0YSkKK3sKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGtleURhdGEuaXNOdWxsKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGtleURhdGEuaXNOdWxsKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGVFbnVtKGtleURhdGEudHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHN3aXRjaCAoa2V5RGF0YS50eXBlKSB7CisgICAgY2FzZSBJREJLZXk6OkludmFsaWRUeXBlOgor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgorICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGtleURhdGEuYXJyYXlWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgorICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGtleURhdGEuc3RyaW5nVmFsdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5
cGU6CisgICAgY2FzZSBJREJLZXk6Ok51bWJlclR5cGU6CisgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoa2V5RGF0YS5udW1iZXJWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCiB2b2lkIEFyZ3VtZW50Q29kZXI8SURCS2V5UGF0aD46OmVuY29kZShBcmd1
bWVudEVuY29kZXImIGVuY29kZXIsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKGtleVBhdGgudHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA4ZWY5MDUzLi41NzNmMjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC02Niw2
ICs2Niw3IEBAIHN0cnVjdCBEcmFnU2Vzc2lvbjsKIHN0cnVjdCBGaWxlQ2hvb3NlclNldHRpbmdz
Owogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CiBzdHJ1Y3QgSURCSW5kZXhNZXRhZGF0YTsK
K3N0cnVjdCBJREJLZXlEYXRhOwogc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CiBzdHJ1
Y3QgTGVuZ3RoOwogc3RydWN0IEdyYW1tYXJEZXRhaWw7CkBAIC0zNjQsNiArMzY1LDExIEBAIHRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SURCSW5kZXhNZXRhZGF0YT4g
ewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpJREJJ
bmRleE1ldGFkYXRhJik7CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OklEQktleURhdGE+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYpOworICAgIHN0YXRpYyBib29sIGRlY29k
ZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpJREJLZXlEYXRhJik7Cit9OworCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OklEQktleVBhdGg+IHsKICAgICBzdGF0
aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5UGF0
aCYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpJ
REJLZXlQYXRoJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NU
aHJlYWRDb3BpZXIuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29w
aWVyLmNwcAppbmRleCA1YzMzYzI4Li5jN2IwNjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFi
YXNlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC01MSw2ICs1MiwzMSBAQCBWZWN0b3I8aW50NjRfdD4g
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVmVjdG9yPGludDY0X3Q+Pjo6Y29w
eShjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK1ZlY3Rvcjx1aW50OF90PiBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8dWludDhfdD4+Ojpjb3B5KGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yKQoreworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQ7
CisgICAgcmVzdWx0LmFwcGVuZFZlY3Rvcih2ZWN0b3IpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK1ZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxz
ZSwgZmFsc2UsIFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+Pjo6Y29weShjb25zdCBWZWN0b3I8
VmVjdG9yPElEQktleURhdGE+PiYgdmVjdG9yKQoreworICAgIFZlY3RvcjxWZWN0b3I8SURCS2V5
RGF0YT4+IHJlc3VsdDsKKworICAgIGZvciAoYXV0byBrZXlzIDogdmVjdG9yKSB7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoVmVjdG9yPElEQktleURhdGE+KCkpOworICAgICAgICBmb3IgKGF1dG8g
a2V5IDoga2V5cykKKyAgICAgICAgICAgIHJlc3VsdC5sYXN0KCkuYXBwZW5kKFdlYkNvcmU6OkNy
b3NzVGhyZWFkQ29waWVyPElEQktleURhdGE+Ojpjb3B5KGtleSkpOworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0FTQ0lJTGl0ZXJhbCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFs
c2UsIGZhbHNlLCBBU0NJSUxpdGVyYWw+Ojpjb3B5KGNvbnN0IEFTQ0lJTGl0ZXJhbCYgbGl0ZXJh
bCkKK3sKKyAgICByZXR1cm4gbGl0ZXJhbDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5oCmluZGV4IGIxMjAzOGYuLmE1ZDBjNTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5oCkBAIC0zNiw2ICsz
NiwxMCBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbklkZW50aWZpZXI7CiBjbGFzcyBVbmlxdWVJREJE
YXRhYmFzZUlkZW50aWZpZXI7CiB9CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgQVNDSUlMaXRl
cmFsOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IENyb3Nz
VGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2VJ
ZGVudGlmaWVyPiB7CkBAIC01MCw2ICs1NCwxOCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1Ro
cmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8aW50NjRfdD4+IHsKICAgICBzdGF0
aWMgVmVjdG9yPGludDY0X3Q+IGNvcHkoY29uc3QgVmVjdG9yPGludDY0X3Q+Jik7CiB9OwogCit0
ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0
b3I8dWludDhfdD4+IHsKKyAgICBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNvcHkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+Pj4geworICAgIHN0
YXRpYyBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiBjb3B5KGNvbnN0IFZlY3RvcjxWZWN0b3I8
SURCS2V5RGF0YT4+Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGll
ckJhc2U8ZmFsc2UsIGZhbHNlLCBXVEY6OkFTQ0lJTGl0ZXJhbD4geworICAgIHN0YXRpYyBXVEY6
OkFTQ0lJTGl0ZXJhbCBjb3B5KGNvbnN0IFdURjo6QVNDSUlMaXRlcmFsJik7Cit9OworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
RGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAxYTJm
NTNmLi4wMDAxNDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFi
YXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rp
b24uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYm
IEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCiAjaW5jbHVkZSAiQXN5bmNSZXF1ZXN0LmgiCisj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0lEQkNv
bm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpAQCAtMzAwLDggKzMwMSw0NSBA
QCB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmdldChJREJUcmFuc2FjdGlvbkJhY2tlbmQm
LCBjb25zdCBHZXRPcGVyYXRpb24mLCBzdAogewogfQogCi12b2lkIFdlYklEQlNlcnZlckNvbm5l
Y3Rpb246OnB1dChJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBQdXRPcGVyYXRpb24mLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQoUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+KT4gY29tcGxldGlvbkNhbGxiYWNrKQordm9pZCBXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpwdXQoSURCVHJhbnNhY3Rpb25CYWNrZW5kJiB0cmFuc2FjdGlvbiwgY29uc3QgUHV0T3Bl
cmF0aW9uJiBvcGVyYXRpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQktleT4s
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCiB7Cisg
ICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IEFzeW5jUmVxdWVzdEltcGw8
UGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+Pjo6Y3JlYXRl
KGNvbXBsZXRpb25DYWxsYmFjayk7CisKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5zZXRBYm9ydEhhbmRs
ZXIoW2NvbXBsZXRpb25DYWxsYmFja10oKSB7CisgICAgICAgIGNvbXBsZXRpb25DYWxsYmFjayhu
dWxscHRyLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVu
a25vd25FcnJvciwgIlVua25vd24gZXJyb3Igb2NjdXJlZCBwdXR0aW5nIHJlY29yZCIpKTsKKyAg
ICB9KTsKKworICAgIHVpbnQ2NF90IHJlcXVlc3RJRCA9IHNlcnZlclJlcXVlc3QtPnJlcXVlc3RJ
RCgpOworICAgIEFTU0VSVCghbV9zZXJ2ZXJSZXF1ZXN0cy5jb250YWlucyhyZXF1ZXN0SUQpKTsK
KyAgICBtX3NlcnZlclJlcXVlc3RzLmFkZChyZXF1ZXN0SUQsIHNlcnZlclJlcXVlc3QucmVsZWFz
ZSgpKTsKKworICAgIExPRyhJREIsICJXZWJQcm9jZXNzIHB1dCByZXF1ZXN0IElEICVsbHUiLCBy
ZXF1ZXN0SUQpOworCisgICAgQVNTRVJUKG9wZXJhdGlvbi5rZXkoKSk7CisgICAgQVNTRVJUKG9w
ZXJhdGlvbi52YWx1ZSgpKTsKKworICAgIElQQzo6RGF0YVJlZmVyZW5jZSB2YWx1ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihvcGVyYXRpb24udmFsdWUoKS0+ZGF0YSgpKSwgb3Bl
cmF0aW9uLnZhbHVlKCktPnNpemUoKSk7CisKKyAgICBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+
PiBpbmRleEtleXM7CisgICAgZm9yIChhdXRvIGtleXMgOiBvcGVyYXRpb24uaW5kZXhLZXlzKCkp
IHsKKyAgICAgICAgaW5kZXhLZXlzLmFwcGVuZChWZWN0b3I8SURCS2V5RGF0YT4oKSk7CisgICAg
ICAgIGZvciAoYXV0byBrZXkgOiBrZXlzKQorICAgICAgICAgICAgaW5kZXhLZXlzLmxhc3QoKS5h
cHBlbmQoSURCS2V5RGF0YShrZXkuZ2V0KCkpKTsKKyAgICB9CisKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpQdXRSZWNvcmQocmVxdWVzdElELCB0cmFu
c2FjdGlvbi5pZCgpLCBvcGVyYXRpb24ub2JqZWN0U3RvcmUoKS5pZCwgSURCS2V5RGF0YShvcGVy
YXRpb24ua2V5KCkpLCB2YWx1ZSwgb3BlcmF0aW9uLnB1dE1vZGUoKSwgb3BlcmF0aW9uLmluZGV4
SURzKCksIGluZGV4S2V5cykpOworfQorCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OmRp
ZFB1dFJlY29yZCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEm
IHJlc3VsdEtleSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkKK3sKKyAgICBMT0coSURCLCAiV2ViUHJvY2VzcyBkaWRQdXRSZWNvcmQgcmVxdWVzdCBJRCAl
bGx1IChlcnJvciAtICVzKSIsIHJlcXVlc3RJRCwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgUmVmUHRyPEFzeW5jUmVxdWVzdD4gc2VydmVyUmVxdWVzdCA9IG1fc2VydmVyUmVx
dWVzdHMudGFrZShyZXF1ZXN0SUQpOworCisgICAgaWYgKCFzZXJ2ZXJSZXF1ZXN0KQorICAgICAg
ICByZXR1cm47CisKKyAgICBzZXJ2ZXJSZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3QocmVzdWx0S2V5
LmlzTnVsbCA/IG51bGxwdHIgOiByZXN1bHRLZXkubWF5YmVDcmVhdGVJREJLZXkoKSwgZXJyb3JD
b2RlID8gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSA6
IG51bGxwdHIpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246Om9wZW5DdXJzb3Io
SURCVHJhbnNhY3Rpb25CYWNrZW5kJiwgY29uc3QgT3BlbkN1cnNvck9wZXJhdGlvbiYsIHN0ZDo6
ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KT4gY29tcGxldGlvbkNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMv
SW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXgg
MzU0ZWM1NS4uNjY3NjkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVj
dGlvbi5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSURCRGF0YWJhc2VN
ZXRhZGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCU2VydmVyQ29ubmVjdGlvbi5oPgogCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgSURCS2V5RGF0YTsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIEFzeW5jUmVxdWVzdDsKQEAgLTEwMiw2ICsxMDYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwg
Ym9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJl
cXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKICAgICB2b2lkIGRpZERlbGV0ZU9iamVjdFN0b3JlKHVp
bnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKTsKKyAgICB2b2lkIGRpZFB1dFJlY29yZCh1
aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OklEQktleURhdGEmLCB1aW50MzJfdCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAogICAgIHVpbnQ2NF90IG1f
c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERC
L1dlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggZTJhMGQ1MC4uYjBiYTEw
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KQEAgLTM0LDYgKzM0LDcgQEAgbWVzc2FnZXMgLT4gV2ViSURCU2VydmVyQ29u
bmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVp
bnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQogICAgIERpZENyZWF0ZU9iamVjdFN0b3Jl
KHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQogICAgIERpZERlbGV0ZU9iamVjdFN0
b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgYm9vbCBzdWNjZXNzKQorICAgIERpZFB1dFJlY29yZCh1
aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OklEQktleURhdGEgcmVzdWx0S2V5LCB1aW50MzJf
dCBlcnJvckNvZGUsIFN0cmluZyBlcnJvck1lc3NhZ2UpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCg==
</data>
<flag name="review"
          id="245797"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221906</attachid>
            <date>2014-01-22 14:47:08 -0800</date>
            <delta_ts>2014-01-22 15:13:42 -0800</delta_ts>
            <desc>EWS run to check the builds</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59805</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzZlMTY1YS4uZDRkMDAwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTgxMCw2ICs4MTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcAor
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAK
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2QyZGJhLi5iZTdjZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMgQEAKIDIwMTQtMDEtMjEg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogIlB1dCIg
c3VwcG9ydAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU3Nzk2NDM+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGQgcGVyc2lzdGVudCBlbmNvZGUv
ZGVjb2RlIGZvciBzdG9yYWdlIHRvIHRoZSBkYXRhYmFzZToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleS5oOgorCisgICAgICAgIEFkZCBhIGRhdGEgY2xhc3MgdG8gcmVwcmVzZW50
IElEQktleSBzdWl0YWJsZSBmb3IgY3Jvc3NpbmcgSVBDOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleURh
dGE6OklEQktleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bWF5YmVDcmVh
dGVJREJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURCS2V5RGF0YSk6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9Dcm9zc1RocmVhZENvcGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhPjo6
Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKworMjAxNC0wMS0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKICAgICAgICAgVGhlIElEQiBiYWNraW5nIHN0b3JlIHB1dCgpIG1ldGhvZCBzaG91bGRuJ3Qg
Y2FsbCBJREIgY2FsbGJhY2tzIGRpcmVjdGx5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjczOTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggOWUyYzk4ZS4uNTk2OTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yNSw3ICsyNSw3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIFwK
LQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMu
aCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNo
ZXJzLmggXCAgICAKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5jcHAgXApA
QCAtMTg0Miw2ICsxODQyLDggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlEYXRhLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
RGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAKaW5kZXggNjMzYzgzNS4uMzc1
YTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuY3BwCkBA
IC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1
ZGUgIktleWVkQ29kaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSURCS2V5Ojp+SURC
S2V5KCkKQEAgLTk2LDYgKzk4LDQxIEBAIGJvb2wgSURCS2V5Ojppc0VxdWFsKGNvbnN0IElEQktl
eSogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuICFjb21wYXJlKG90aGVyKTsKIH0KIAordm9pZCBJ
REJLZXk6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKCJ0eXBlIiwgbV90eXBlKTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBJbnZhbGlkVHlwZToKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJyYXlUeXBl
OgorICAgICAgICBlbmNvZGVyLmVuY29kZU9iamVjdHMoImFycmF5IiwgbV9hcnJheS5iZWdpbigp
LCBtX2FycmF5LmVuZCgpLCBbXShXZWJDb3JlOjpLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlZlB0cjxJREJLZXk+JiBrZXkpIHsKKyAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlT2JqZWN0
KCJpZGJLZXkiLCAqa2V5LCBbXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IElEQktleSYg
a2V5KSB7CisgICAgICAgICAgICAgICAga2V5LmVuY29kZShlbmNvZGVyKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RyaW5nVHlwZToK
KyAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoInN0cmluZyIsIG1fc3RyaW5nKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRGF0ZVR5cGU6CisgICAgY2FzZSBOdW1iZXJUeXBlOgorICAg
ICAgICBlbmNvZGVyLmVuY29kZURvdWJsZSgibnVtYmVyIiwgbV9udW1iZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBNaW5UeXBlOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Citib29sIElEQktleTo6ZGVjb2RlKEtleWVkRGVjb2RlciYsIElEQktleSYpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCB3aGVuIElEQiBHZXQgc3VwcG9ydCBpcyBpbXBsZW1lbnRlZCAoPHJk
YXI6Ly9wcm9ibGVtLzE1Nzc5NjQ0PikKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleS5oCmluZGV4IDkwYjYyZDUuLjYxNzZkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleS5oCkBAIC0zNSw2ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgS2V5ZWREZWNvZGVyOworY2xhc3MgS2V5ZWRFbmNvZGVyOworCiBjbGFz
cyBJREJLZXkgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJLZXk+IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4gS2V5QXJyYXk7CkBAIC0xNDcsNiArMTUwLDkgQEAg
cHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCS2V5Pjo6cmVmOwogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8SURCS2V5Pjo6ZGVyZWY7CiAKKyAgICB2b2lkIGVuY29kZShLZXllZEVuY29kZXIm
KSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgSURCS2V5Jik7
CisKIHByaXZhdGU6CiAgICAgSURCS2V5KCkgOiBtX3R5cGUoSW52YWxpZFR5cGUpLCBtX251bWJl
cigwKSwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplKSB7IH0KICAgICBJREJLZXkoVHlwZSB0
eXBlLCBkb3VibGUgbnVtYmVyKSA6IG1fdHlwZSh0eXBlKSwgbV9udW1iZXIobnVtYmVyKSwgbV9z
aXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplICsgc2l6ZW9mKGRvdWJsZSkpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDA5ODRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKQEAgLTAsMCArMSwxMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgorCisj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSURC
S2V5RGF0YTo6SURCS2V5RGF0YShJREJLZXkqIGtleSkKKyAgICA6IHR5cGUoSURCS2V5OjpJbnZh
bGlkVHlwZSkKKyAgICAsIG51bWJlclZhbHVlKDApCisgICAgLCBpc051bGwoZmFsc2UpCit7Cisg
ICAgaWYgKCFrZXkpIHsKKyAgICAgICAgaXNOdWxsID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHR5cGUgPSBrZXktPnR5cGUoKTsKKyAgICBudW1iZXJWYWx1ZSA9IDA7CisK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIElEQktleTo6SW52YWxpZFR5cGU6CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6CisgICAgICAgIGZvciAoYXV0
byBrZXkgOiBrZXktPmFycmF5KCkpCisgICAgICAgICAgICBhcnJheVZhbHVlLmFwcGVuZChJREJL
ZXlEYXRhKGtleS5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleTo6U3Ry
aW5nVHlwZToKKyAgICAgICAgc3RyaW5nVmFsdWUgPSBrZXktPnN0cmluZygpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6CisgICAgICAgIG51bWJlclZhbHVlID0g
a2V5LT5kYXRlKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBl
OgorICAgICAgICBudW1iZXJWYWx1ZSA9IGtleS0+bnVtYmVyKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitQYXNzUmVmUHRyPElEQktleT4gSURCS2V5RGF0
YTo6bWF5YmVDcmVhdGVJREJLZXkoKSBjb25zdAoreworICAgIGlmIChpc051bGwpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBJREJLZXk6
OkludmFsaWRUeXBlOgorICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVJbnZhbGlkKCk7Cisg
ICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToKKyAgICAgICAgeworICAgICAgICAgICAgSURCS2V5
OjpLZXlBcnJheSBhcnJheTsKKyAgICAgICAgICAgIGZvciAoYXV0byBrZXlEYXRhIDogYXJyYXlW
YWx1ZSkgeworICAgICAgICAgICAgICAgIGFycmF5LmFwcGVuZChrZXlEYXRhLm1heWJlQ3JlYXRl
SURCS2V5KCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChhcnJheS5sYXN0KCkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlQXJyYXkoYXJyYXkpOwor
ICAgICAgICB9CisgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6CisgICAgICAgIHJldHVybiBJ
REJLZXk6OmNyZWF0ZVN0cmluZyhzdHJpbmdWYWx1ZSk7CisgICAgY2FzZSBJREJLZXk6OkRhdGVU
eXBlOgorICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRlKG51bWJlclZhbHVlKTsKKyAg
ICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToKKyAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRl
TnVtYmVyKG51bWJlclZhbHVlKTsKKyAgICBjYXNlIElEQktleTo6TWluVHlwZToKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitJREJL
ZXlEYXRhIElEQktleURhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0Cit7CisgICAgSURCS2V5RGF0
YSByZXN1bHQ7CisgICAgcmVzdWx0LnR5cGUgPSB0eXBlOworICAgIHJlc3VsdC5pc051bGwgPSBp
c051bGw7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIElEQktleTo6SW52YWxpZFR5
cGU6CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToK
KyAgICAgICAgZm9yIChhdXRvIGtleSA6IGFycmF5VmFsdWUpCisgICAgICAgICAgICByZXN1bHQu
YXJyYXlWYWx1ZS5hcHBlbmQoa2V5Lmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKKyAgICAgICAgcmVzdWx0LnN0cmlu
Z1ZhbHVlID0gc3RyaW5nVmFsdWUuaXNvbGF0ZWRDb3B5KCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgY2FzZSBJREJLZXk6OkRhdGVUeXBlOgorICAgIGNhc2UgSURCS2V5OjpOdW1iZXJU
eXBlOgorICAgICAgICByZXN1bHQubnVtYmVyVmFsdWUgPSBudW1iZXJWYWx1ZTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBjYXNlIElEQktleTo6TWluVHlwZToKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXlEYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzdmMzViYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQktleURhdGEuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjaWZuZGVmIElEQktleURhdGFf
aAorI2RlZmluZSBJREJLZXlEYXRhX2gKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQor
CisjaW5jbHVkZSAiSURCS2V5LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IElE
QktleURhdGEgeworICAgIElEQktleURhdGEoKQorICAgICAgICA6IHR5cGUoSURCS2V5OjpJbnZh
bGlkVHlwZSkKKyAgICAgICAgLCBudW1iZXJWYWx1ZSgwKQorICAgICAgICAsIGlzTnVsbCh0cnVl
KQorICAgIHsKKyAgICB9CisKKyAgICBJREJLZXlEYXRhKElEQktleSopOworCisgICAgUGFzc1Jl
ZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5KCkgY29uc3Q7CisKKyAgICBJREJLZXlEYXRh
IGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgSURCS2V5OjpUeXBlIHR5cGU7CisgICAgVmVj
dG9yPElEQktleURhdGE+IGFycmF5VmFsdWU7CisgICAgU3RyaW5nIHN0cmluZ1ZhbHVlOworICAg
IGRvdWJsZSBudW1iZXJWYWx1ZTsKKyAgICBib29sIGlzTnVsbDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorI2VuZGlm
IC8vIElEQktleURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcApp
bmRleCA5ZGM1YTI0Li44YjhiYWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRp
b25zLmNwcApAQCAtMTA2LDcgKzEwNiw4IEBAIHZvaWQgUHV0T3BlcmF0aW9uOjpwZXJmb3JtKHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJhY2spCiAgICAgUmVmUHRyPFB1dE9w
ZXJhdGlvbj4gb3BlcmF0aW9uKHRoaXMpOwogICAgIFNUQU5EQVJEX0RBVEFCQVNFX0VSUk9SX0NB
TExCQUNLOwogCi0gICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9u
KCkucHV0KCptX3RyYW5zYWN0aW9uLCAqdGhpcywgW3RoaXMsIG9wZXJhdGlvbiwgb3BlcmF0aW9u
Q2FsbGJhY2tdKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4gZXJyb3IpIHsKKyAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5l
Y3Rpb24oKS5wdXQoKm1fdHJhbnNhY3Rpb24sICp0aGlzLCBbdGhpcywgb3BlcmF0aW9uLCBvcGVy
YXRpb25DYWxsYmFja10oUGFzc1JlZlB0cjxJREJLZXk+IGtleSwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUVycm9yPiBwcnBFcnJvcikgeworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4g
ZXJyb3IgPSBwcnBFcnJvcjsKICAgICAgICAgaWYgKGtleSkgewogICAgICAgICAgICAgQVNTRVJU
KCFlcnJvcik7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGtleSk7CkBAIC0x
MTQsNiArMTE1LDcgQEAgdm9pZCBQdXRPcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICAgICAgICAgIEFTU0VSVChlcnJvcik7CiAg
ICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAgIH0KKyAgICAg
ICAgb3BlcmF0aW9uQ2FsbGJhY2soZXJyb3IucmVsZWFzZSgpKTsKICAgICB9KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCA4YmE2MzhlLi44ODRmZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgpAQCAtMzA3NywxMyArMzA3NywxOSBAQCBfX1pON1dlYkNvcmUyNk1vY2tNZWRpYVBsYXllck1l
ZGlhU291cmNlMTlyZWdpc3Rlck1lZGlhRW5naW5lRVBGdlBGTjNXVEYxMFBhc3NPdwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK19fWk5LN1dlYkNvcmUxMElEQktleURh
dGExN21heWJlQ3JlYXRlSURCS2V5RXYKIF9fWk5LN1dlYkNvcmUxMElEQktleVBhdGg2ZW5jb2Rl
RVJOU18xMktleWVkRW5jb2RlckUKK19fWk5LN1dlYkNvcmU2SURCS2V5NmVuY29kZUVSTlNfMTJL
ZXllZEVuY29kZXJFCitfX1pOSzdXZWJDb3JlNklEQktleTdpc1ZhbGlkRXYKK19fWk43V2ViQ29y
ZTEwSURCS2V5RGF0YUMxRVBOU182SURCS2V5RQogX19aTjdXZWJDb3JlMTBJREJLZXlQYXRoQzFF
UktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMElEQktleVBhdGhDMUVSS04zV1RGNlZlY3Rv
cklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJmbG93RUVFCiBfX1pON1dlYkNvcmUx
MElEQktleVBhdGg2ZGVjb2RlRVJOU18xMktleWVkRGVjb2RlckVSUzBfCiBfX1pON1dlYkNvcmUx
OElEQkRhdGFiYXNlQmFja2VuZDE0b3BlbkNvbm5lY3Rpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNf
MTJJREJDYWxsYmFja3NFRUVOUzJfSU5TXzIwSURCRGF0YWJhc2VDYWxsYmFja3NFRUV4eQogX19a
TjdXZWJDb3JlMThJREJEYXRhYmFzZUJhY2tlbmQ2Y3JlYXRlRVJLTjNXVEY2U3RyaW5nRVM0X1BO
U18yNklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlRVJOU18xOUlEQlNlcnZlckNvbm5lY3Rpb25F
CiBfX1pON1dlYkNvcmUxOElEQkRhdGFiYXNlQmFja2VuZEQxRXYKK19fWk43V2ViQ29yZTIxQ3Jv
c3NUaHJlYWRDb3BpZXJCYXNlSUxiMEVMYjBFTlNfMTBJREJLZXlEYXRhRUU0Y29weUVSS1MxXwog
X19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENvcGllckJhc2VJTGIwRUxiMEVOU18yMklEQk9iamVj
dFN0b3JlTWV0YWRhdGFFRTRjb3B5RVJLUzFfCiBfX1pON1dlYkNvcmUyMUNyb3NzVGhyZWFkQ29w
aWVyQmFzZUlMYjBFTGIwRU5TXzlJbmRleGVkREIxNVRyYW5zYWN0aW9uTW9kZUVFNGNvcHlFUktT
Ml8KK19fWk43V2ViQ29yZTZJREJLZXlEMUV2CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IGVmZjk1MmEuLjU5ZDlhNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAt
NjU5OSw2ICs2NTk5LDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5k
ZXhlZGRiXElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXElEQkluZGV4LmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXElEQktleS5jcHAiIC8+CisgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGluZGV4ZWRkYlxJREJLZXlEYXRhLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXElEQktleVJh
bmdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRi
XElEQk9iamVjdFN0b3JlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcaW5kZXhlZGRiXElEQlJlcXVlc3QuY3BwIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ2ZjkzMWUuLmJjMjU5ZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTE3NzYsNiArMTc3Niw4IEBACiAJCTUxMEQ0QTM4MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2Nr
ZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5k
bGVDbGllbnQuaCAqLzsgfTsKIAkJNTExMjkzNUYzRDU0QjRCNTJGQUY5NzNGIC8qIEluc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMTI5MzYxM0Q2REI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5jcHAgKi87IH07CiAJCTUxMTI5MzYwM0Q2MEI0QjUyRkFGOTczRiAvKiBJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTExMjkzNjIzRDg1QjRCNTJGQUY5NzNGIC8qIEluc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50LmggKi87IH07CisJCTUxMUVDMUE2MTg4REFDQTQwMEJBM0VCNiAvKiBJREJL
ZXlEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTFFQzFBNTE4OERBQ0E0MDBCQTNFQjYgLyogSURCS2V5RGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxMUVDMUE4MTg4REFFN0IwMEJBM0VC
NiAvKiBJREJLZXlEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMUVDMUE3MTg4REFFN0IwMEJBM0VCNiAvKiBJREJLZXlEYXRhLmNwcCAqLzsg
fTsKIAkJNTExRUYyQzAxN0YwRkQzNTAwRTRGQTE2IC8qIEpTSURCQW55LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVGMkE4MTdGMEZDNDgwMEU0
RkExNiAvKiBKU0lEQkFueS5jcHAgKi87IH07CiAJCTUxMUVGMkMxMTdGMEZEMzUwMEU0RkExNiAv
KiBKU0lEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTFFRjJBOTE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJDdXJzb3IuY3BwICovOyB9
OwogCQk1MTFFRjJDMjE3RjBGRDM1MDBFNEZBMTYgLyogSlNJREJDdXJzb3JXaXRoVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExRUYyQUEx
N0YwRkM0ODAwRTRGQTE2IC8qIEpTSURCQ3Vyc29yV2l0aFZhbHVlLmNwcCAqLzsgfTsKQEAgLTg3
MjIsNiArODcyNCw4IEBACiAJCTUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0
U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTI5
MzYxM0Q2REI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMTI5MzYyM0Q4NUI0QjUy
RkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTFFQzFBNTE4OERBQ0E0MDBCQTNFQjYgLyogSURCS2V5RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJLZXlEYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMUVDMUE3MTg4REFFN0IwMEJBM0VCNiAvKiBJREJL
ZXlEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQktleURh
dGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFFRjJBODE3RjBGQzQ4MDBF
NEZBMTYgLyogSlNJREJBbnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJBbnkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFFRjJBOTE3RjBGQzQ4MDBFNEZBMTYgLyog
SlNJREJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFFRjJBQTE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJ
REJDdXJzb3JXaXRoVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJREJDdXJzb3JXaXRo
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc2OTMsNiArMTc2OTcs
OCBAQAogCQkJCTUxQUJCNUI2MTg2RDBFRDEwMDgzOTFBMSAvKiBJREJJbmRleE1ldGFkYXRhLmgg
Ki8sCiAJCQkJNTFENzE5OTExODExMDZFMDAwMTZEQzUxIC8qIElEQktleS5jcHAgKi8sCiAJCQkJ
NTFENzE5OTIxODExMDZFMDAwMTZEQzUxIC8qIElEQktleS5oICovLAorCQkJCTUxMUVDMUE3MTg4
REFFN0IwMEJBM0VCNiAvKiBJREJLZXlEYXRhLmNwcCAqLywKKwkJCQk1MTFFQzFBNTE4OERBQ0E0
MDBCQTNFQjYgLyogSURCS2V5RGF0YS5oICovLAogCQkJCTUxRDcxOTkzMTgxMTA2RTAwMDE2REM1
MSAvKiBJREJLZXlQYXRoLmNwcCAqLywKIAkJCQk1MUQ3MTk5NDE4MTEwNkUwMDAxNkRDNTEgLyog
SURCS2V5UGF0aC5oICovLAogCQkJCTUxRDcxOTk1MTgxMTA2RTAwMDE2REM1MSAvKiBJREJLZXlS
YW5nZS5jcHAgKi8sCkBAIC0yMzk4Nyw2ICsyMzk5Myw3IEBACiAJCQkJQ0Q4QjVBNDkxODBFMTM4
QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEVBN0NBRjBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTEhSRWxlbWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTg3MURFMjcwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxIdG1sRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTExRUMxQTYxODhEQUNBNDAwQkEzRUI2IC8qIElEQktleURhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3OTY5REI0MTdEMTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1BlZXJD
b25uZWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURFMkEwQTE1
MkFDODAwQjEyQTY4IC8qIEhUTUxJRnJhbWVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEVBN0QyRDBBMTkzODU1MDBBOEVGNUYgLyogSFRNTEltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yODc5OSw2ICsyODgwNiw3IEBACiAJCQkJNTE3NzFDOEUxODJEQjRCNzAwOEU3ODFF
IC8qIElEQkRhdGFiYXNlQmFja2VuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTIyNDY0QjBD
Qzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBMjI0NjREMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1MTFFQzFBODE4OERBRTdCMDBCQTNFQjYgLyogSURCS2V5RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkE0MTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMUmVzdWx0
U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTQ0MTUwNUYwODEwMDFCNzRBQyAvKiBT
UUxSZXN1bHRTZXRSb3dMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTQ3MTUwNUYw
ODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5jcHAKaW5kZXggMGFhZWE3OS4uYjBl
M2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAjaW5j
bHVkZSAiSURCRGF0YWJhc2VNZXRhZGF0YS5oIgorI2luY2x1ZGUgIklEQktleURhdGEuaCIKICNl
bmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05OCw2ICs5OSwxMSBAQCBDcm9zc1RocmVh
ZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJJbmRleE1ldGFkYXRhPjo6VHlwZSBDcm9zc1Ro
cmVhZENvcGllckJhcwogICAgIHJldHVybiBtZXRhZGF0YS5pc29sYXRlZENvcHkoKTsKIH0KIAor
Q3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCS2V5RGF0YT46OlR5cGUgQ3Jv
c3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCS2V5RGF0YT46OmNvcHkoY29uc3Qg
SURCS2V5RGF0YSYga2V5RGF0YSkKK3sKKyAgICByZXR1cm4ga2V5RGF0YS5pc29sYXRlZENvcHko
KTsKK30KKwogQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURCT2JqZWN0U3Rv
cmVNZXRhZGF0YT46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YT46OmNvcHkoY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYg
bWV0YWRhdGEpCiB7CiAgICAgcmV0dXJuIG1ldGFkYXRhLmlzb2xhdGVkQ29weSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXggNTlkMGFjMi4uMDMy
YTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3Bp
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5oCkBA
IC0xNzMsNiArMTczLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFR5
cGUgY29weShjb25zdCBJREJJbmRleE1ldGFkYXRhJik7CiAgICAgfTsKIAorICAgIHN0cnVjdCBJ
REJLZXlEYXRhOworICAgIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxm
YWxzZSwgZmFsc2UsIElEQktleURhdGE+IHsKKyAgICAgICAgdHlwZWRlZiBJREJLZXlEYXRhIFR5
cGU7CisgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3QgSURCS2V5RGF0YSYpOworICAgIH07
CisKICAgICBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKICAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhPiB7CiAgICAgICAgIHR5cGVkZWYgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSBUeXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IDU2OTU3ZDIuLjdmNzVjYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2NiBA
QAogMjAxNC0wMS0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAg
ICAgSURCOiAiUHV0IiBzdXBwb3J0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNTc3OTY0Mz4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc0MDEKKworICAg
ICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFNoaXAgcHV0
UmVjb3JkIHJlcXVlc3RzIG92ZXIgdG8gdGhlIERhdGFiYXNlUHJvY2VzcywgYW5kIGxpc3RlbiBm
b3IgY29tcGxldGlvbiBmcm9tIHRoZSBEYXRhYmFzZVByb2Nlc3M6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpwdXQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRQdXRSZWNvcmQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW46CisKKyAgICAgICAgUGFzcyBvZmYgdGhlIHB1dFJlY29yZCByZXF1
ZXN0IHRvIHRoZSBVbmlxdWUgSURCRGF0YWJhc2U6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6cHV0UmVjb3JkKToKKyAgICAgICAg
KiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lE
QkNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKKyAgICAgICAgUGFzcyBvZmYgdGhlIHB1dFJlY29y
ZCByZXF1ZXN0IHRvIHRoZSBiYWNraW5nIHN0b3JlOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpVbmlx
dWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0
YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6VW5pcXVl
SURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBEYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmg6CisKKyAgICAgICAgQWRk
IGJhY2tpbmcgc3RvcmUgbWV0aG9kcyByZWxhdGVkIHRvIHB1dFJlY29yZCwgdGhvdWdoIG9ubHkg
b25lIGlzIGNyaXRpY2FsIHJpZ2h0IG5vdzoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5k
ZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVT
UUxpdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsTWV0YWRhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Z2VuZXJhdGVLZXkpOgor
ICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6a2V5
RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlOjpwdXRSZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6dXBkYXRlS2V5R2VuZXJhdG9yKToKKyAgICAg
ICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZS5oOgorCisgICAgICAgIEFkZCB0aGUgSURCS2V5RGF0YSB0eXBlIHRv
IElQQzoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHk6CisgICAgICAgIChz
dHJ1Y3Rfb3JfY2xhc3MpOgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SURCS2V5RGF0YT46OmVuY29kZSk6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SURCS2V5RGF0YT46OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorCisgICAgICAgICogRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6c2VyaWFsaXplSURCS2V5KToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERC
L0lEQlNlcmlhbGl6YXRpb24uaDoKKworICAgICAgICBJbXBsZW1lbnQgbW9yZSBjcm9zcy10aHJl
YWQgY29weWluZzoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VmVjdG9yPHVpbnQ4X3Q+Pjo6Y29weSk6CisgICAgICAgIChXZWJD
b3JlOjpWZWN0b3I8VmVjdG9yPElEQktleURhdGE+Pj46OmNvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6QVNDSUlMaXRlcmFsPjo6Y29weSk6CisgICAgICAgICogU2hhcmVkL1dlYkNyb3NzVGhyZWFk
Q29waWVyLmg6CisKKyAgICAgICAgSW1wbGVtZW50IG1vcmUgbnVtYmVycyBvZiBnZW5lcmljIEFz
eW5jVGFzayB0ZW1wbGF0ZXM6CisgICAgICAgICogU2hhcmVkL0FzeW5jVGFzay5oOgorICAgICAg
ICAoV2ViS2l0OjpjcmVhdGVBc3luY1Rhc2spOgorCisyMDE0LTAxLTIxICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBUaGUgSURCIGJhY2tpbmcgc3RvcmUgcHV0
KCkgbWV0aG9kIHNob3VsZG4ndCBjYWxsIElEQiBjYWxsYmFja3MgZGlyZWN0bHkKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzM5OQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmNwcAppbmRleCA1MTk2ZDQ4Li41
ZjgwNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5j
cHAKQEAgLTE3Nyw2ICsxNzcsMTggQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9u
OjpkZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QKICAgICB9KTsK
IH0KIAordm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpwdXRSZWNvcmQodWludDY0
X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJ
RHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SURCS2V5RGF0YT4+JiBpbmRleEtleXMp
Cit7CisgICAgQVNTRVJUKG1fdW5pcXVlSURCRGF0YWJhc2UpOworCisgICAgTE9HKElEQiwgIkRh
dGFiYXNlUHJvY2VzcyBwdXRSZWNvcmQgcmVxdWVzdCBJRCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQg
JWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CisgICAgUmVmUHRyPERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7CisgICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+cHV0UmVjb3JkKElEQlRyYW5zYWN0aW9uSWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rp
b25JRCksIG9iamVjdFN0b3JlSUQsIGtleSwgdmFsdWUsIHB1dE1vZGUsIGluZGV4SURzLCBpbmRl
eEtleXMsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGNvbnN0IElEQktleURhdGEmIGtleURhdGEs
IHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlk
UHV0UmVjb3JkKHJlcXVlc3RJRCwga2V5RGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsK
KyAgICB9KTsKK30KKworCiBJUEM6OkNvbm5lY3Rpb24qIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5l
Y3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKIHsKICAgICByZXR1cm4gbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVj
dGlvbi5oCmluZGV4IDRkNmZhNTMuLmFjMjE5MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgIlVuaXF1
ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgSURCS2V5RGF0YTsKK30KKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIERhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbjsKQEAg
LTcxLDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNoYW5nZURhdGFiYXNlVmVyc2lvbih1
aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCwgdWludDY0X3QgbmV3VmVy
c2lvbik7CiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGlu
dDY0X3QgdHJhbnNhY3Rpb25JRCwgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSk7CiAg
ICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJh
bnNhY3Rpb25JRCwgaW50NjRfdCBvYmplY3RTdG9yZUlEKTsKKyAgICB2b2lkIHB1dFJlY29yZCh1
aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBvYmplY3RT
dG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4
SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OklEQktleURhdGE+PiYgaW5kZXhLZXlz
KTsKIAogICAgIFJlZjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlv
bjsKICAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IGQzZDY1ODQuLmE5Mzg0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM1LDYgKzM1LDcgQEAgbWVzc2Fn
ZXMgLT4gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbiBMZWdhY3lSZWNlaXZlciB7CiAgICAg
Q2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2Fj
dGlvbklELCB1aW50NjRfdCBuZXdWZXJzaW9uKQogICAgIENyZWF0ZU9iamVjdFN0b3JlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBXZWJDb3JlOjpJREJPYmplY3RT
dG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEpCiAgICAgRGVsZXRlT2JqZWN0U3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJRCkKKyAgICBQdXRSZWNvcmQodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5z
YWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSBrZXks
IElQQzo6RGF0YVJlZmVyZW5jZSB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBWZWN0b3I8aW50NjRf
dD4gaW5kZXhJRHMsIFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SURCS2V5RGF0YT4+IGluZGV4S2V5
cykKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFU
QUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvSW5kZXhlZERCL0lEQlNlcmlhbGl6YXRpb24uY3BwCmluZGV4IDYyMGExODYuLjFh
ZjcyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmNwcApAQCAtMzAsMTMgKzMwLDE0IEBACiAj
aW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCiAjaW5jbHVkZSAiS2V5ZWREZWNvZGVyLmgiCiAj
aW5jbHVkZSAiS2V5ZWRFbmNvZGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXkuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0lEQktleVBhdGguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmIGtleVBhdGgpCitSZWZQdHI8U2hh
cmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgp
CiB7CiAgICAgS2V5ZWRFbmNvZGVyIGVuY29kZXI7CiAgICAga2V5UGF0aC5lbmNvZGUoZW5jb2Rl
cik7CkBAIC01Myw2ICs1NCwxMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCS2V5UGF0
aD4gZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4X3QqIGRhdGEsCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAorUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gc2VyaWFsaXplSURC
S2V5KGNvbnN0IElEQktleSYga2V5KQoreworICAgIEtleWVkRW5jb2RlciBlbmNvZGVyOworICAg
IGtleS5lbmNvZGUoZW5jb2Rlcik7CisgICAgcmV0dXJuIGVuY29kZXIuZmluaXNoRW5jb2Rpbmco
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmgKaW5kZXggYTZjNzNkZi4uNTViYTE3ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJT
ZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElEQktleTsKIGNsYXNzIElE
QktleVBhdGg7CiB9CiAKQEAgLTQwLDYgKzQxLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBSZWZQ
dHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IFdlYkNv
cmU6OklEQktleVBhdGgmKTsKIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJLZXlQYXRoPiBk
ZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCogYnVmZmVyLCBzaXplX3QgYnVmZmVy
U2l6ZSk7CiAKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IHNlcmlhbGl6ZUlEQktleShj
b25zdCBXZWJDb3JlOjpJREJLZXkmKTsKK1Bhc3NSZWZQdHI8V2ViQ29yZTo6SURCS2V5PiBkZXNl
cmlhbGl6ZUlEQktleShjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVk
REIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNzc3ODExMi4uODMwMjJhMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTMwLDEzICszMCwxNyBAQAogCiAjaW5j
bHVkZSAiQXN5bmNSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQXN5bmNUYXNrLmgiCisjaW5jbHVkZSAi
RGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzcy5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIgogI2luY2x1ZGUgIldlYkNyb3NzVGhyZWFkQ29waWVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9J
REJEYXRhYmFzZUJhY2tlbmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQkRhdGFiYXNlTWV0YWRh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIApAQCAtMjIyLDcgKzIyNiw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OmRpZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRhdGEoY29uc3QgSURCRGF0YWJhc2VN
ZXRhCiAgICAgfQogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSBtb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3Zv
aWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5UcmFuc2FjdGlvbihjb25zdCBJREJUcmFuc2FjdGlv
bklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgb2JqZWN0U3Rv
cmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIHBvc3RUcmFuc2FjdGlvbk9wZXJhdGlv
bihpZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6
b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCBpZGVudGlmaWVyLCBvYmplY3RTdG9yZUlEcywg
bW9kZSksIHN1Y2Nlc3NDYWxsYmFjayk7CiB9CkBAIC0zMzQsNyArMzM4LDcgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVCb29sUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQs
IGJvb2wgc3VjY2VzcykKICAgICByZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoc3VjY2Vzcyk7CiB9
CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRy
YW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vz
c0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RT
dG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMzg5LDcgKzM5
MywzMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aQogICAgIHBvc3REYXRhYmFzZVRhc2soY3Jl
YXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3Jl
SW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgaWRlbnRpZmllciwgb2JqZWN0U3RvcmVJRCkpOwog
fQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSBtb2RlKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKGNvbnN0IElEQlRy
YW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBj
b25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHZhbHVl
LCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0
IFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+JiBpbmRleEtleXMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZChjb25zdCBJREJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyYpPiBjYWxsYmFjaykK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFtX2FjY2VwdGluZ05l
d1JlcXVlc3RzKSB7CisgICAgICAgIGNhbGxiYWNrKElEQktleURhdGEoKSwgSU5WQUxJRF9TVEFU
RV9FUlIsICJVbmFibGUgdG8gcHV0IHJlY29yZCBpbnRvIGRhdGFiYXNlIGJlY2F1c2UgaXQgaGFz
IHNodXQgZG93biIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKG1fbWV0
YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RTdG9yZUlEKSk7CisKKyAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxjb25zdCBJREJLZXlE
YXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyY+OjpjcmVhdGUoW3RoaXMsIGNhbGxiYWNrXShj
b25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKSB7CisgICAgICAgIGNhbGxiYWNrKGtleURhdGEsIGVycm9yQ29kZSwg
ZXJyb3JNZXNzYWdlKTsKKyAgICB9LCBbdGhpcywgY2FsbGJhY2tdKCkgeworICAgICAgICBjYWxs
YmFjayhJREJLZXlEYXRhKCksIElOVkFMSURfU1RBVEVfRVJSLCAiVW5hYmxlIHRvIHB1dCByZWNv
cmQgaW50byBkYXRhYmFzZSIpOworICAgIH0pOworCisgICAgdWludDY0X3QgcmVxdWVzdElEID0g
cmVxdWVzdC0+cmVxdWVzdElEKCk7CisgICAgbV9wZW5kaW5nRGF0YWJhc2VUYXNrcy5hZGQocmVx
dWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CisKKyAgICBwb3N0RGF0YWJhc2VUYXNrKGNyZWF0
ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRSZWNvcmRJbkJhY2tpbmdT
dG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBtX21ldGFkYXRhLT5vYmplY3RTdG9yZXMuZ2V0
KG9iamVjdFN0b3JlSUQpLCBrZXlEYXRhLCB2YWx1ZS52ZWN0b3IoKSwgcHV0TW9kZSwgaW5kZXhJ
RHMsIGluZGV4S2V5cykpOworfQorCit2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFja2lu
Z1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlm
aWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBJbmRleGVkREI6OlRy
YW5zYWN0aW9uTW9kZSBtb2RlKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CkBAIC00NjksNiArNDk2LDYyIEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVx
dWVzdElELCBjb25zCiAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhp
cywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVPYmplY3RTdG9yZSwgcmVxdWVzdElELCBz
dWNjZXNzKSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2lu
Z1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVy
JiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgb2JqZWN0U3RvcmVN
ZXRhZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURz
LCBjb25zdCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhLZXlzKQoreworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CisKKyAg
ICBib29sIGtleVdhc0dlbmVyYXRlZCA9IGZhbHNlOworICAgIFJlZlB0cjxJREJLZXk+IGtleTsK
KworICAgIGlmIChwdXRNb2RlICE9IElEQkRhdGFiYXNlQmFja2VuZDo6Q3Vyc29yVXBkYXRlICYm
IG9iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCAmJiBrZXlEYXRhLmlzTnVsbCkgewor
ICAgICAgICBrZXkgPSBtX2JhY2tpbmdTdG9yZS0+Z2VuZXJhdGVLZXkodHJhbnNhY3Rpb24sIG9i
amVjdFN0b3JlTWV0YWRhdGEuaWQpOworICAgICAgICBrZXlXYXNHZW5lcmF0ZWQgPSB0cnVlOwor
ICAgIH0gZWxzZQorICAgICAgICBrZXkgPSBrZXlEYXRhLm1heWJlQ3JlYXRlSURCS2V5KCk7CisK
KyAgICBBU1NFUlQoa2V5KTsKKyAgICBBU1NFUlQoa2V5LT5pc1ZhbGlkKCkpOworCisgICAgaWYg
KHB1dE1vZGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRPbmx5KSB7CisgICAgICAgIGJvb2wg
a2V5RXhpc3RzOworICAgICAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5rZXlFeGlzdHNJbk9iamVj
dFN0b3JlKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCAqa2V5LCBrZXlFeGlz
dHMpKSB7CisgICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0
aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1
ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwg
QVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3JlIGVycm9yIGNoZWNraW5nIGZvciBr
ZXkgZXhpc3RlbmNlIikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoa2V5RXhpc3RzKSB7CisgICAgICAgICAgICBwb3N0TWFpblRocmVhZFRhc2soY3JlYXRl
QXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2lu
Z1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNlcHRpb246OkNv
bnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgYWxyZWFkeSBleGlzdHMgaW4gdGhlIG9i
amVjdCBzdG9yZSIpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisK
KyAgICAvLyBGSVhNRTogVGhlIExldmVsREIgcG9ydCBwZXJmb3JtcyAibWFrZUluZGV4V3JpdGVy
cyIgaGVyZS4gTmVjZXNzYXJ5PworCisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+cHV0UmVjb3Jk
KHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlkLCAqa2V5LCB2YWx1ZS5kYXRhKCks
IHZhbHVlLnNpemUoKSkpIHsKKyAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5j
VGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9y
ZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3du
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciBwdXR0aW5n
IGEgcmVjb3JkIikpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBU
aGUgTGV2ZWxEQiBwb3J0IHVwZGF0ZXMgaW5kZXgga2V5cyBoZXJlLiBOZWNlc3Nhcnk/CisKKyAg
ICBpZiAocHV0TW9kZSAhPSBJREJEYXRhYmFzZUJhY2tlbmQ6OkN1cnNvclVwZGF0ZSAmJiBvYmpl
Y3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNyZW1lbnQgJiYga2V5LT50eXBlKCkgPT0gSURCS2V5OjpO
dW1iZXJUeXBlKSB7CisgICAgICAgIGlmICghbV9iYWNraW5nU3RvcmUtPnVwZGF0ZUtleUdlbmVy
YXRvcih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0YS5pZCwgKmtleSwga2V5V2FzR2Vu
ZXJhdGVkKSkgeworICAgICAgICAgICAgcG9zdE1haW5UaHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFz
aygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwg
cmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBzdG9yZSBlcnJvciB1cGRhdGluZyBr
ZXkgZ2VuZXJhdG9yIikpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3luY1Rhc2soKnRoaXMsICZVbmlxdWVJ
REJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgSURCS2V5
RGF0YShrZXkuZ2V0KCkpLCAwLCBTdHJpbmcoU3RyaW5nSW1wbDo6ZW1wdHkoKSkpKTsKK30KKwor
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCB1aW50MzJfdCBlcnJvckNv
ZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIFJlZlB0cjxBc3luY1JlcXVl
c3Q+IHJlcXVlc3QgPSBtX3BlbmRpbmdEYXRhYmFzZVRhc2tzLnRha2UocmVxdWVzdElEKTsKKyAg
ICBBU1NFUlQocmVxdWVzdCk7CisKKyAgICByZXF1ZXN0LT5jb21wbGV0ZVJlcXVlc3Qoa2V5RGF0
YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOworfQorCiBTdHJpbmcgVW5pcXVlSURCRGF0YWJh
c2U6OmFic29sdXRlRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdAogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKaW5kZXggYmVkY2Q1ODcuLmJhOWI1
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
VW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGE7CitzdHJ1Y3QgSURCS2V5
RGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03Niw2ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50
aWZpZXImLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1
Y2Nlc3NDYWxsYmFjayk7CiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRh
Jiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spOwogICAgIHZvaWQg
ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRf
dCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFj
ayk7CisgICAgdm9pZCBwdXRSZWNvcmQoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwg
aW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8
aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OklEQktleURh
dGE+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6SURCS2V5
RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2FsbGJhY2spOwogCiBwcml2YXRlOgog
ICAgIFVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYp
OwpAQCAtMTE3LDYgKzExOSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjaGFuZ2VEYXRhYmFzZVZl
cnNpb25JbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0
aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24pOwogICAgIHZvaWQgY3JlYXRlT2Jq
ZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IElEQlRyYW5z
YWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OklEQk9iamVjdFN0b3JlTWV0YWRhdGEm
KTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0
b3JlSUQpOworICAgIHZvaWQgcHV0UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJP
YmplY3RTdG9yZU1ldGFkYXRhJiwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgdmFsdWUsIGludDY0X3QgcHV0TW9kZSwgY29uc3QgVmVjdG9yPGludDY0
X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJREJLZXlEYXRhPj4m
IGluZGV4S2V5cyk7CisKIAogICAgIHZvaWQgc2h1dGRvd25CYWNraW5nU3RvcmUoKTsKIApAQCAt
MTI3LDYgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VEYXRhYmFzZVZlcnNp
b24odWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwogICAgIHZvaWQgZGlkQ3JlYXRl
T2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwogICAgIHZvaWQg
ZGlkRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwor
ICAgIHZvaWQgZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBkaWRTaHV0ZG93bkJhY2tpbmdTdG9yZSgpOwog
ICAgIHZvaWQgZGlkQ29tcGxldGVCb29sUmVxdWVzdCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wg
c3VjY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9J
bmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQy
L0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmUu
aAppbmRleCBhYmYxODNkLi44ZGFlZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZS5oCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSURCS2V5OworCiBzdHJ1Y3Qg
SURCRGF0YWJhc2VNZXRhZGF0YTsKIHN0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOwogfQpA
QCAtNTUsNiArNTcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjaGFuZ2VEYXRhYmFz
ZVZlcnNpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgdWludDY0X3QgbmV3VmVy
c2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFk
YXRhJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJU
cmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpID0gMDsKKworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+IGdlbmVyYXRlS2V5KGNvbnN0IElE
QlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9u
SWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5
JiwgYm9vbCYga2V5RXhpc3RzKSA9IDA7CisgICAgdmlydHVhbCBib29sIHB1dFJlY29yZChjb25z
dCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0
IFdlYkNvcmU6OklEQktleSYsIGNvbnN0IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXplX3QgdmFs
dWVTaXplKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZUtleUdlbmVyYXRvcihjb25zdCBJ
REJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IFdl
YkNvcmU6OklEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KSA9IDA7CisKKwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9Vbmlx
dWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAKaW5kZXggOWRjODJiNi4uN2EyZjkx
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9z
cWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlNR
TGl0ZUlEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KQEAgLTg5LDYgKzkwLDEyIEBAIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJEYXRh
YmFzZU1ldGFkYXRhPiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmICghbV9zcWxpdGVEQi0+ZXhlY3V0ZUNv
bW1hbmQoIkNSRUFURSBUQUJMRSBSZWNvcmRzIChvYmplY3RTdG9yZUlEIElOVEVHRVIgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5IEJMT0IgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCBV
TklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxPQiBOT1QgTlVMTCBPTiBDT05GTElD
VCBGQUlMKTsiKSkgeworICAgICAgICBMT0dfRVJST1IoIkNvdWxkIG5vdCBjcmVhdGUgUmVjb3Jk
cyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwg
bV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICBtX3NxbGl0ZURCID0gbnVsbHB0
cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCiAgICAgewogICAgICAgICBTUUxp
dGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCBBU0NJSUxpdGVyYWwoIklOU0VSVCBJTlRPIElE
QkRhdGFiYXNlSW5mbyBWQUxVRVMgKCdNZXRhZGF0YVZlcnNpb24nLCA/KTsiKSk7CiAgICAgICAg
IGlmIChzcWwucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rCkBAIC00MTUsNiArNDIyLDYwIEBAIGJv
b2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmRlbGV0ZU9iamVjdFN0b3Jl
KGNvbnN0IElEQlRyYW5zYWN0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK1Bhc3NSZWZQdHI8
SURCS2V5PiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Z2VuZXJhdGVLZXko
Y29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKQor
eworICAgIC8vIEZJWE1FICg8cmRhcjovL3Byb2JsZW0vMTU4Nzc5MDk+KTogSW1wbGVtZW50Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmVTUUxpdGU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVu
dGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJLZXkmLCBib29sJiBrZXlF
eGlzdHMpCit7CisgICAgLy8gRklYTUU6IFdoZW4gR2V0IHN1cHBvcnQgaXMgaW1wbGVtZW50ZWQs
IHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgYWxzbyAoPHJkYXI6Ly9wcm9ibGVtLzE1Nzc5NjQ0
PikKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5n
U3RvcmVTUUxpdGU6OnB1dFJlY29yZChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlk
ZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgSURCS2V5JiBrZXksIGNvbnN0
IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXplX3QgdmFsdWVTaXplKQoreworICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3NxbGl0ZURCKTsKKyAgICBBU1NFUlQobV9z
cWxpdGVEQi0+aXNPcGVuKCkpOworCisgICAgU1FMaXRlSURCVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIpOworICAgIGlmICghdHJhbnNhY3Rp
b24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsKKyAgICAgICAgTE9HX0VSUk9SKCJB
dHRlbXB0IHRvIHB1dCBhIHJlY29yZCBpbnRvIGRhdGFiYXNlIHdpdGhvdXQgYW4gZXN0YWJsaXNo
ZWQsIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlv
bk1vZGU6OlJlYWRPbmx5KSB7CisgICAgICAgIExPR19FUlJPUigiQXR0ZW1wdCB0byBwdXQgYSBy
ZWNvcmQgaW50byBkYXRhYmFzZSBkdXJpbmcgcmVhZC1vbmx5IHRyYW5zYWN0aW9uIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBrZXlC
dWZmZXIgPSBzZXJpYWxpemVJREJLZXkoa2V5KTsKKyAgICBpZiAoIWtleUJ1ZmZlcikgeworICAg
ICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUgSURCS2V5IHRvIGJlIHN0b3JlZCBp
biB0aGUgZGF0YWJhc2UiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICB7Cisg
ICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRlREIsIEFTQ0lJTGl0ZXJhbCgiSU5T
RVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8pOyIpKTsKKyAgICAgICAgaWYgKHNxbC5w
cmVwYXJlKCkgIT0gU1FMUmVzdWx0T2sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kSW50NjQoMSwg
b2JqZWN0U3RvcmVJRCkgIT0gU1FMUmVzdWx0T2sKKyAgICAgICAgICAgIHx8IHNxbC5iaW5kQmxv
YigyLCBrZXlCdWZmZXItPmRhdGEoKSwga2V5QnVmZmVyLT5zaXplKCkpICE9IFNRTFJlc3VsdE9r
CisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMywgdmFsdWVCdWZmZXIsIHZhbHVlU2l6ZSkg
IT0gU1FMUmVzdWx0T2sKKyAgICAgICAgICAgIHx8IHNxbC5zdGVwKCkgIT0gU1FMUmVzdWx0RG9u
ZSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgcHV0IHJlY29yZCBmb3Igb2Jq
ZWN0IHN0b3JlICVsbGkgaW4gUmVjb3JkcyB0YWJsZSAoJWkpIC0gJXMiLCBvYmplY3RTdG9yZUlE
LCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnVw
ZGF0ZUtleUdlbmVyYXRvcihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90
IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KQoreworICAg
IC8vIEZJWE1FICg8cmRhcjovL3Byb2JsZW0vMTU4Nzc5MDk+KTogSW1wbGVtZW50CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJE
YXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9j
ZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUu
aAppbmRleCA4OTFjOThkLi42NDUwM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
c3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmgKQEAgLTY0LDYgKzY0
LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlT2JqZWN0U3RvcmUoY29uc3Qg
SURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgY29uc3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpIG92
ZXJyaWRlOwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4gZ2VuZXJh
dGVLZXkoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9y
ZUlEKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wga2V5RXhpc3RzSW5PYmplY3RTdG9yZShj
b25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNv
bnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wmIGtleUV4aXN0cykgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIHB1dFJlY29yZChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGNvbnN0IHVpbnQ4X3Qq
IHZhbHVlQnVmZmVyLCBzaXplX3QgdmFsdWVTaXplKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJv
b2wgdXBkYXRlS2V5R2VuZXJhdG9yKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViQ29yZTo6SURCS2V5JiwgYm9vbCBjaGVja0N1
cnJlbnQpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlQmFja2lu
Z1N0b3JlU1FMaXRlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllciYsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
Y3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtp
dDIvbWVzc2FnZXMucHkKaW5kZXggZWQ0MDVmZC4uMmQ2NDc2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQpAQCAtMTc3LDYgKzE3Nyw3IEBAIGRlZiBzdHJ1
Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToKICAgICAgICAgJ1dlYkNvcmU6OkZpbGVDaG9v
c2VyU2V0dGluZ3MnLAogICAgICAgICAnV2ViQ29yZTo6R3JhbW1hckRldGFpbCcsCiAgICAgICAg
ICdXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJywKKyAgICAgICAgJ1dlYkNvcmU6OklEQktl
eURhdGEnLAogICAgICAgICAnV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YScsCiAgICAg
ICAgICdXZWJDb3JlOjpJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbicsCiAgICAgICAgICdXZWJD
b3JlOjpLZXlwcmVzc0NvbW1hbmQnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FzeW5jVGFzay5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jVGFzay5oCmluZGV4IDE4
N2E2M2IuLmJlZGQ4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Bc3luY1Rh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5bmNUYXNrLmgKQEAgLTExNiw2ICsx
MTYsNTAgQEAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAogICAg
ICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46OmNvcHkocGFyYW1ldGVyMykpOwog
fQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgTVAxLCB0eXBl
bmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgTVAzLCB0eXBlbmFt
ZSBQNCwgdHlwZW5hbWUgTVA0Pgorc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4gY3JlYXRlQXN5
bmNUYXNrKAorICAgIFQmIGNhbGxlZSwKKyAgICB2b2lkIChUOjoqbWV0aG9kKShNUDEsIE1QMiwg
TVAzLCBNUDQpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAorICAgIGNvbnN0IFAyJiBwYXJh
bWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLAorICAgIGNvbnN0IFA0JiBwYXJhbWV0
ZXI0KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFza0ltcGw8VCwgTVAx
LCBNUDIsIE1QMywgTVA0Pj4oCisgICAgICAgICZjYWxsZWUsCisgICAgICAgIG1ldGhvZCwKKyAg
ICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+Ojpjb3B5KHBhcmFtZXRlcjEpLAor
ICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMj46OmNvcHkocGFyYW1ldGVyMiks
CisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAzPjo6Y29weShwYXJhbWV0ZXIz
KSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDQ+Ojpjb3B5KHBhcmFtZXRl
cjQpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIE1Q
MSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIE1QMywg
dHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUgUDUsIHR5cGVuYW1lIE1QNSwgdHlw
ZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcsIHR5cGVuYW1lIE1QNywgdHlwZW5h
bWUgUDgsIHR5cGVuYW1lIE1QOD4KK3N0ZDo6dW5pcXVlX3B0cjxBc3luY1Rhc2s+IGNyZWF0ZUFz
eW5jVGFzaygKKyAgICBUJiBjYWxsZWUsCisgICAgdm9pZCAoVDo6Km1ldGhvZCkoTVAxLCBNUDIs
IE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIx
LAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLAor
ICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LAorICAgIGNvbnN0IFA1JiBwYXJhbWV0ZXI1LAorICAg
IGNvbnN0IFA2JiBwYXJhbWV0ZXI2LAorICAgIGNvbnN0IFA3JiBwYXJhbWV0ZXI3LAorICAgIGNv
bnN0IFA4JiBwYXJhbWV0ZXI4KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEFzeW5j
VGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDg+PigKKyAg
ICAgICAgJmNhbGxlZSwKKyAgICAgICAgbWV0aG9kLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1Ro
cmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCisgICAgICAgIFdlYkNvcmU6OkNyb3Nz
VGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jv
c3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMpLAorICAgICAgICBXZWJDb3JlOjpD
cm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVyNCksCisgICAgICAgIFdlYkNvcmU6
OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0ZXI1KSwKKyAgICAgICAgV2ViQ29y
ZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFtZXRlcjYpLAorICAgICAgICBXZWJD
b3JlOjpDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFyYW1ldGVyNyksCisgICAgICAgIFdl
YkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA4Pjo6Y29weShwYXJhbWV0ZXI4KSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gQXN5bmNUYXNrX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggZDRkNWY4OC4u
NmZiZjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29u
dGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSURCRGF0YWJhc2VNZXRhZGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5UGF0aC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aC5oPgpAQCAtMTYyMiw2ICsxNjIzLDY4
IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJREJJbmRleE1ldGFkYXRhPjo6ZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYgZGVjb2RlciwgSURCSW5kZXhNCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
QXJndW1lbnRDb2RlcjxJREJLZXlEYXRhPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSkKK3sKKyAgICBlbmNvZGVyIDw8IGtleURhdGEu
aXNOdWxsOworICAgIGlmIChrZXlEYXRhLmlzTnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
ZW5jb2Rlci5lbmNvZGVFbnVtKGtleURhdGEudHlwZSk7CisKKyAgICBzd2l0Y2ggKGtleURhdGEu
dHlwZSkgeworICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlwZToKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToKKyAgICAgICAgZW5jb2RlciA8PCBrZXlEYXRhLmFy
cmF5VmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgor
ICAgICAgICBlbmNvZGVyIDw8IGtleURhdGEuc3RyaW5nVmFsdWU7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKKyAgICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToK
KyAgICAgICAgZW5jb2RlciA8PCBrZXlEYXRhLm51bWJlclZhbHVlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIElEQktleTo6TWluVHlwZToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPElEQktleURh
dGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBJREJLZXlEYXRhJiBrZXlEYXRh
KQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0YS5pc051bGwpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoa2V5RGF0YS5pc051bGwpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oa2V5RGF0YS50eXBlKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChrZXlEYXRhLnR5cGUpIHsKKyAgICBjYXNl
IElEQktleTo6SW52YWxpZFR5cGU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpB
cnJheVR5cGU6CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0YS5hcnJheVZhbHVl
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJ
REJLZXk6OlN0cmluZ1R5cGU6CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0YS5z
dHJpbmdWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKKyAgICBjYXNlIElEQktleTo6TnVtYmVyVHlwZToK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXlEYXRhLm51bWJlclZhbHVlKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6Ok1p
blR5cGU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgQXJndW1lbnRDb2RlcjxJ
REJLZXlQYXRoPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgSURCS2V5
UGF0aCYga2V5UGF0aCkKIHsKICAgICBlbmNvZGVyLmVuY29kZUVudW0oa2V5UGF0aC50eXBlKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IDhlZjkwNTMuLjU3M2YyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKQEAgLTY2LDYgKzY2LDcgQEAgc3RydWN0IERyYWdTZXNzaW9uOwogc3Ry
dWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKIHN0
cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQktleURhdGE7CiBzdHJ1Y3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YTsKIHN0cnVjdCBMZW5ndGg7CiBzdHJ1Y3QgR3JhbW1hckRldGFpbDsK
QEAgLTM2NCw2ICszNjUsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpJREJJbmRleE1ldGFkYXRhPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciYsIFdlYkNvcmU6OklEQkluZGV4TWV0YWRhdGEmKTsKIH07CiAKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SURCS2V5RGF0YT4geworICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJik7
CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OklEQktl
eURhdGEmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
SURCS2V5UGF0aD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBj
b25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJik7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciYsIFdlYkNvcmU6OklEQktleVBhdGgmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCmluZGV4IDVjMzNjMjguLmM3YjA2NjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAt
MjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9JREJLZXlEYXRhLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTUxLDYgKzUy
LDMxIEBAIFZlY3RvcjxpbnQ2NF90PiBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNl
LCBWZWN0b3I8aW50NjRfdD4+Ojpjb3B5KGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAor
VmVjdG9yPHVpbnQ4X3Q+IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFZlY3Rv
cjx1aW50OF90Pj46OmNvcHkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2ZWN0b3IpCit7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kVmVjdG9yKHZlY3Rvcik7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4gQ3Jv
c3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRh
Pj4+Ojpjb3B5KGNvbnN0IFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+JiB2ZWN0b3IpCit7Cisg
ICAgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4gcmVzdWx0OworCisgICAgZm9yIChhdXRvIGtl
eXMgOiB2ZWN0b3IpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChWZWN0b3I8SURCS2V5RGF0YT4o
KSk7CisgICAgICAgIGZvciAoYXV0byBrZXkgOiBrZXlzKQorICAgICAgICAgICAgcmVzdWx0Lmxh
c3QoKS5hcHBlbmQoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8SURCS2V5RGF0YT46OmNvcHko
a2V5KSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVNDSUlMaXRlcmFsIENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEFTQ0lJTGl0ZXJhbD46OmNvcHkoY29u
c3QgQVNDSUlMaXRlcmFsJiBsaXRlcmFsKQoreworICAgIHJldHVybiBsaXRlcmFsOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGll
ci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgKaW5kZXgg
YjEyMDM4Zi4uYTVkMGM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNy
b3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhy
ZWFkQ29waWVyLmgKQEAgLTM2LDYgKzM2LDEwIEBAIGNsYXNzIElEQlRyYW5zYWN0aW9uSWRlbnRp
ZmllcjsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllcjsKIH0KIAorbmFtZXNwYWNl
IFdURiB7CitjbGFzcyBBU0NJSUxpdGVyYWw7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
dGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgV2Vi
S2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI+IHsKQEAgLTUwLDYgKzU0LDE4IEBAIHRl
bXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFZlY3Rv
cjxpbnQ2NF90Pj4gewogICAgIHN0YXRpYyBWZWN0b3I8aW50NjRfdD4gY29weShjb25zdCBWZWN0
b3I8aW50NjRfdD4mKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVy
QmFzZTxmYWxzZSwgZmFsc2UsIFZlY3Rvcjx1aW50OF90Pj4geworICAgIHN0YXRpYyBWZWN0b3I8
dWludDhfdD4gY29weShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFZlY3RvcjxWZWN0b3I8
SURCS2V5RGF0YT4+PiB7CisgICAgc3RhdGljIFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+IGNv
cHkoY29uc3QgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4mKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFdURjo6QVNDSUlMaXRl
cmFsPiB7CisgICAgc3RhdGljIFdURjo6QVNDSUlMaXRlcmFsIGNvcHkoY29uc3QgV1RGOjpBU0NJ
SUxpdGVyYWwmKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNv
bm5lY3Rpb24uY3BwCmluZGV4IDFhMmY1M2YuLjAwMDE0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVk
REIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAKICNpbmNs
dWRlICJBc3luY1JlcXVlc3QuaCIKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVk
ZSAiRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCkBAIC0zMDAsOCArMzAxLDQ1IEBAIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6Z2V0
KElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IEdldE9wZXJhdGlvbiYsIHN0CiB7CiB9CiAK
LXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6cHV0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYs
IGNvbnN0IFB1dE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248dm9pZChQYXNzUmVmUHRyPElEQktl
eT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCit2
b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnB1dChJREJUcmFuc2FjdGlvbkJhY2tlbmQmIHRy
YW5zYWN0aW9uLCBjb25zdCBQdXRPcGVyYXRpb24mIG9wZXJhdGlvbiwgc3RkOjpmdW5jdGlvbjx2
b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik+IGNv
bXBsZXRpb25DYWxsYmFjaykKIHsKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1
ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNhbGxiYWNrKTsKKworICAgIHNlcnZl
clJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlvbkNhbGxiYWNrXSgpIHsKKyAgICAg
ICAgY29tcGxldGlvbkNhbGxiYWNrKG51bGxwdHIsIElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiVW5rbm93biBlcnJvciBvY2N1cmVk
IHB1dHRpbmcgcmVjb3JkIikpOworICAgIH0pOworCisgICAgdWludDY0X3QgcmVxdWVzdElEID0g
c2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CisgICAgQVNTRVJUKCFtX3NlcnZlclJlcXVlc3Rz
LmNvbnRhaW5zKHJlcXVlc3RJRCkpOworICAgIG1fc2VydmVyUmVxdWVzdHMuYWRkKHJlcXVlc3RJ
RCwgc2VydmVyUmVxdWVzdC5yZWxlYXNlKCkpOworCisgICAgTE9HKElEQiwgIldlYlByb2Nlc3Mg
cHV0IHJlcXVlc3QgSUQgJWxsdSIsIHJlcXVlc3RJRCk7CisKKyAgICBBU1NFUlQob3BlcmF0aW9u
LmtleSgpKTsKKyAgICBBU1NFUlQob3BlcmF0aW9uLnZhbHVlKCkpOworCisgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIHZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG9wZXJhdGlv
bi52YWx1ZSgpLT5kYXRhKCkpLCBvcGVyYXRpb24udmFsdWUoKS0+c2l6ZSgpKTsKKworICAgIFZl
Y3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+IGluZGV4S2V5czsKKyAgICBmb3IgKGF1dG8ga2V5cyA6
IG9wZXJhdGlvbi5pbmRleEtleXMoKSkgeworICAgICAgICBpbmRleEtleXMuYXBwZW5kKFZlY3Rv
cjxJREJLZXlEYXRhPigpKTsKKyAgICAgICAgZm9yIChhdXRvIGtleSA6IGtleXMpCisgICAgICAg
ICAgICBpbmRleEtleXMubGFzdCgpLmFwcGVuZChJREJLZXlEYXRhKGtleS5nZXQoKSkpOworICAg
IH0KKworICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OlB1
dFJlY29yZChyZXF1ZXN0SUQsIHRyYW5zYWN0aW9uLmlkKCksIG9wZXJhdGlvbi5vYmplY3RTdG9y
ZSgpLmlkLCBJREJLZXlEYXRhKG9wZXJhdGlvbi5rZXkoKSksIHZhbHVlLCBvcGVyYXRpb24ucHV0
TW9kZSgpLCBvcGVyYXRpb24uaW5kZXhJRHMoKSwgaW5kZXhLZXlzKSk7Cit9CisKK3ZvaWQgV2Vi
SURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkUHV0UmVjb3JkKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgV2ViQ29yZTo6SURCS2V5RGF0YSYgcmVzdWx0S2V5LCB1aW50MzJfdCBlcnJvckNvZGUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIExPRyhJREIsICJXZWJQcm9jZXNzIGRp
ZFB1dFJlY29yZCByZXF1ZXN0IElEICVsbHUgKGVycm9yIC0gJXMpIiwgcmVxdWVzdElELCBlcnJv
ck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiBzZXJ2
ZXJSZXF1ZXN0ID0gbV9zZXJ2ZXJSZXF1ZXN0cy50YWtlKHJlcXVlc3RJRCk7CisKKyAgICBpZiAo
IXNlcnZlclJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKworICAgIHNlcnZlclJlcXVlc3QtPmNv
bXBsZXRlUmVxdWVzdChyZXN1bHRLZXkuaXNOdWxsID8gbnVsbHB0ciA6IHJlc3VsdEtleS5tYXli
ZUNyZWF0ZUlEQktleSgpLCBlcnJvckNvZGUgPyBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoZXJy
b3JDb2RlLCBlcnJvck1lc3NhZ2UpIDogbnVsbHB0cik7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVy
Q29ubmVjdGlvbjo6b3BlbkN1cnNvcihJREJUcmFuc2FjdGlvbkJhY2tlbmQmLCBjb25zdCBPcGVu
Q3Vyc29yT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNl
cnZlckNvbm5lY3Rpb24uaAppbmRleCAzNTRlYzU1Li42Njc2OTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4
ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJT
ZXJ2ZXJDb25uZWN0aW9uLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBJREJLZXlE
YXRhOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXN5bmNSZXF1ZXN0OwpAQCAt
MTAyLDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VEYXRhYmFzZVZlcnNp
b24odWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwogICAgIHZvaWQgZGlkQ3JlYXRl
T2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwogICAgIHZvaWQg
ZGlkRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpOwor
ICAgIHZvaWQgZGlkUHV0UmVjb3JkKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6
SURCS2V5RGF0YSYsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOwogCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dl
YklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5p
bgppbmRleCBlMmEwZDUwLi5iMGJhMTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIv
V2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzQsNiArMzQsNyBAQCBtZXNz
YWdlcyAtPiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRD
aGFuZ2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCiAg
ICAgRGlkQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3Mp
CiAgICAgRGlkRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nl
c3MpCisgICAgRGlkUHV0UmVjb3JkKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6SURCS2V5
RGF0YSByZXN1bHRLZXksIHVpbnQzMl90IGVycm9yQ29kZSwgU3RyaW5nIGVycm9yTWVzc2FnZSkK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221914</attachid>
            <date>2014-01-22 15:13:42 -0800</date>
            <delta_ts>2014-01-22 15:13:42 -0800</delta_ts>
            <desc>Maybe fix EWS builds</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59826</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNzZlMTY1YS4uZDRkMDAwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTgxMCw2ICs4MTAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuY3BwCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcAor
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvSURCS2V5UGF0aC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAK
ICAgICBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
N2QyZGJhLi5iZTdjZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzMgQEAKIDIwMTQtMDEtMjEg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAgICAgIElEQjogIlB1dCIg
c3VwcG9ydAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTU3Nzk2NDM+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NDAxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWxleGV5IFByb3NrdXJ5YWtvdi4KKworICAgICAgICBBZGQgcGVyc2lzdGVudCBlbmNvZGUv
ZGVjb2RlIGZvciBzdG9yYWdlIHRvIHRoZSBkYXRhYmFzZToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJLZXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjplbmNvZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SURCS2V5OjpkZWNvZGUpOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleS5oOgorCisgICAgICAgIEFkZCBhIGRhdGEgY2xhc3MgdG8gcmVwcmVzZW50
IElEQktleSBzdWl0YWJsZSBmb3IgY3Jvc3NpbmcgSVBDOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQktleURhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OklEQktleURh
dGE6OklEQktleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6bWF5YmVDcmVh
dGVJREJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SURCS2V5RGF0YTo6SURCS2V5RGF0YSk6CisKKyAgICAgICAgKiBwbGF0Zm9y
bS9Dcm9zc1RocmVhZENvcGllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlEYXRhPjo6
Y29weSk6CisgICAgICAgICogcGxhdGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaDoKKworICAgICAg
ICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKworMjAxNC0wMS0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKICAgICAgICAgVGhlIElEQiBiYWNraW5nIHN0b3JlIHB1dCgpIG1ldGhvZCBzaG91bGRuJ3Qg
Y2FsbCBJREIgY2FsbGJhY2tzIGRpcmVjdGx5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjczOTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
aW5kZXggOWUyYzk4ZS4uNTk2OTFkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBA
IC0yNSw3ICsyNSw3IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIFwK
LQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMu
aCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9JbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNo
ZXJzLmggXCAgICAKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0luc3BlY3RvcldlYlR5cGVCdWls
ZGVycy5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSW5zcGVjdG9yV2ViVHlwZUJ1aWxk
ZXJzLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNBYnN0cmFjdFdvcmtlci5jcHAgXApA
QCAtMTg0Miw2ICsxODQyLDggQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQktleS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJLZXlEYXRhLmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
RGF0YS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5jcHAKaW5kZXggNjMzYzgzNS4uMzc1
YTFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXkuY3BwCkBA
IC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAorI2luY2x1
ZGUgIktleWVkQ29kaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSURCS2V5Ojp+SURC
S2V5KCkKQEAgLTk2LDYgKzk4LDQxIEBAIGJvb2wgSURCS2V5Ojppc0VxdWFsKGNvbnN0IElEQktl
eSogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuICFjb21wYXJlKG90aGVyKTsKIH0KIAordm9pZCBJ
REJLZXk6OmVuY29kZShLZXllZEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ci5lbmNvZGVFbnVtKCJ0eXBlIiwgbV90eXBlKTsKKworICAgIHN3aXRjaCAobV90eXBlKSB7Cisg
ICAgY2FzZSBJbnZhbGlkVHlwZToKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQXJyYXlUeXBl
OgorICAgICAgICBlbmNvZGVyLmVuY29kZU9iamVjdHMoImFycmF5IiwgbV9hcnJheS5iZWdpbigp
LCBtX2FycmF5LmVuZCgpLCBbXShXZWJDb3JlOjpLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlZlB0cjxJREJLZXk+JiBrZXkpIHsKKyAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlT2JqZWN0
KCJpZGJLZXkiLCAqa2V5LCBbXShLZXllZEVuY29kZXImIGVuY29kZXIsIGNvbnN0IElEQktleSYg
a2V5KSB7CisgICAgICAgICAgICAgICAga2V5LmVuY29kZShlbmNvZGVyKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RyaW5nVHlwZToK
KyAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcoInN0cmluZyIsIG1fc3RyaW5nKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgRGF0ZVR5cGU6CisgICAgY2FzZSBOdW1iZXJUeXBlOgorICAg
ICAgICBlbmNvZGVyLmVuY29kZURvdWJsZSgibnVtYmVyIiwgbV9udW1iZXIpOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBNaW5UeXBlOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
Citib29sIElEQktleTo6ZGVjb2RlKEtleWVkRGVjb2RlciYsIElEQktleSYpCit7CisgICAgLy8g
RklYTUU6IEltcGxlbWVudCB3aGVuIElEQiBHZXQgc3VwcG9ydCBpcyBpbXBsZW1lbnRlZCAoPHJk
YXI6Ly9wcm9ibGVtLzE1Nzc5NjQ0PikKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleS5oCmluZGV4IDkwYjYyZDUuLjYxNzZkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQktleS5oCkBAIC0zNSw2ICszNSw5IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgS2V5ZWREZWNvZGVyOworY2xhc3MgS2V5ZWRFbmNvZGVyOworCiBjbGFz
cyBJREJLZXkgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJLZXk+IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8SURCS2V5Pj4gS2V5QXJyYXk7CkBAIC0xNDcsNiArMTUwLDkgQEAg
cHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8SURCS2V5Pjo6cmVmOwogICAgIHVzaW5nIFJl
ZkNvdW50ZWQ8SURCS2V5Pjo6ZGVyZWY7CiAKKyAgICB2b2lkIGVuY29kZShLZXllZEVuY29kZXIm
KSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoS2V5ZWREZWNvZGVyJiwgSURCS2V5Jik7
CisKIHByaXZhdGU6CiAgICAgSURCS2V5KCkgOiBtX3R5cGUoSW52YWxpZFR5cGUpLCBtX251bWJl
cigwKSwgbV9zaXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplKSB7IH0KICAgICBJREJLZXkoVHlwZSB0
eXBlLCBkb3VibGUgbnVtYmVyKSA6IG1fdHlwZSh0eXBlKSwgbV9udW1iZXIobnVtYmVyKSwgbV9z
aXplRXN0aW1hdGUoT3ZlcmhlYWRTaXplICsgc2l6ZW9mKGRvdWJsZSkpIHsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlEYXRhLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmM4MmNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5jcHAKQEAgLTAsMCArMSwxMzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCS2V5RGF0
YS5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworSURCS2V5RGF0YTo6SURCS2V5RGF0YShJREJLZXkqIGtleSkKKyAgICA6IHR5cGUoSURC
S2V5OjpJbnZhbGlkVHlwZSkKKyAgICAsIG51bWJlclZhbHVlKDApCisgICAgLCBpc051bGwoZmFs
c2UpCit7CisgICAgaWYgKCFrZXkpIHsKKyAgICAgICAgaXNOdWxsID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHR5cGUgPSBrZXktPnR5cGUoKTsKKyAgICBudW1iZXJWYWx1
ZSA9IDA7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIElEQktleTo6SW52YWxpZFR5
cGU6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6CisgICAgICAg
IGZvciAoYXV0byBrZXkyIDoga2V5LT5hcnJheSgpKQorICAgICAgICAgICAgYXJyYXlWYWx1ZS5h
cHBlbmQoSURCS2V5RGF0YShrZXkyLmdldCgpKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SURCS2V5OjpTdHJpbmdUeXBlOgorICAgICAgICBzdHJpbmdWYWx1ZSA9IGtleS0+c3RyaW5nKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKKyAgICAgICAgbnVt
YmVyVmFsdWUgPSBrZXktPmRhdGUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6
Ok51bWJlclR5cGU6CisgICAgICAgIG51bWJlclZhbHVlID0ga2V5LT5udW1iZXIoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK1Bhc3NSZWZQdHI8SURCS2V5
PiBJREJLZXlEYXRhOjptYXliZUNyZWF0ZUlEQktleSgpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVs
bCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBj
YXNlIElEQktleTo6SW52YWxpZFR5cGU6CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZUlu
dmFsaWQoKTsKKyAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOgorICAgICAgICB7CisgICAgICAg
ICAgICBJREJLZXk6OktleUFycmF5IGFycmF5OworICAgICAgICAgICAgZm9yIChhdXRvIGtleURh
dGEgOiBhcnJheVZhbHVlKSB7CisgICAgICAgICAgICAgICAgYXJyYXkuYXBwZW5kKGtleURhdGEu
bWF5YmVDcmVhdGVJREJLZXkoKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGFycmF5Lmxhc3Qo
KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVBcnJh
eShhcnJheSk7CisgICAgICAgIH0KKyAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZToKKyAgICAg
ICAgcmV0dXJuIElEQktleTo6Y3JlYXRlU3RyaW5nKHN0cmluZ1ZhbHVlKTsKKyAgICBjYXNlIElE
QktleTo6RGF0ZVR5cGU6CisgICAgICAgIHJldHVybiBJREJLZXk6OmNyZWF0ZURhdGUobnVtYmVy
VmFsdWUpOworICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOgorICAgICAgICByZXR1cm4gSURC
S2V5OjpjcmVhdGVOdW1iZXIobnVtYmVyVmFsdWUpOworICAgIGNhc2UgSURCS2V5OjpNaW5UeXBl
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK0lEQktleURhdGEgSURCS2V5RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKK3sKKyAg
ICBJREJLZXlEYXRhIHJlc3VsdDsKKyAgICByZXN1bHQudHlwZSA9IHR5cGU7CisgICAgcmVzdWx0
LmlzTnVsbCA9IGlzTnVsbDsKKworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSURCS2V5
OjpJbnZhbGlkVHlwZToKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICBjYXNlIElEQktleTo6
QXJyYXlUeXBlOgorICAgICAgICBmb3IgKGF1dG8ga2V5IDogYXJyYXlWYWx1ZSkKKyAgICAgICAg
ICAgIHJlc3VsdC5hcnJheVZhbHVlLmFwcGVuZChrZXkuaXNvbGF0ZWRDb3B5KCkpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIGNhc2UgSURCS2V5OjpTdHJpbmdUeXBlOgorICAgICAgICBy
ZXN1bHQuc3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZS5pc29sYXRlZENvcHkoKTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBjYXNlIElEQktleTo6RGF0ZVR5cGU6CisgICAgY2FzZSBJREJL
ZXk6Ok51bWJlclR5cGU6CisgICAgICAgIHJlc3VsdC5udW1iZXJWYWx1ZSA9IG51bWJlclZhbHVl
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGNhc2UgSURCS2V5OjpNaW5UeXBlOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleURhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40NjM5ZTYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCS2V5RGF0YS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIElEQktleURhdGFfaAorI2RlZmluZSBJREJLZXlEYXRhX2gKKworI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCS2V5LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworc3RydWN0IElEQktleURhdGEgeworICAgIElEQktleURhdGEoKQorICAgICAg
ICA6IHR5cGUoSURCS2V5OjpJbnZhbGlkVHlwZSkKKyAgICAgICAgLCBudW1iZXJWYWx1ZSgwKQor
ICAgICAgICAsIGlzTnVsbCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBJREJLZXlEYXRhKElE
QktleSopOworCisgICAgUGFzc1JlZlB0cjxJREJLZXk+IG1heWJlQ3JlYXRlSURCS2V5KCkgY29u
c3Q7CisKKyAgICBJREJLZXlEYXRhIGlzb2xhdGVkQ29weSgpIGNvbnN0OworCisgICAgSURCS2V5
OjpUeXBlIHR5cGU7CisgICAgVmVjdG9yPElEQktleURhdGE+IGFycmF5VmFsdWU7CisgICAgU3Ry
aW5nIHN0cmluZ1ZhbHVlOworICAgIGRvdWJsZSBudW1iZXJWYWx1ZTsKKyAgICBib29sIGlzTnVs
bDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRF
WEVEX0RBVEFCQVNFKQorI2VuZGlmIC8vIElEQktleURhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRPcGVyYXRpb25zLmNwcAppbmRleCA5ZGM1YTI0Li44YjhiYWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcApAQCAtMTA2LDcgKzEwNiw4IEBAIHZvaWQgUHV0
T3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uQ2FsbGJh
Y2spCiAgICAgUmVmUHRyPFB1dE9wZXJhdGlvbj4gb3BlcmF0aW9uKHRoaXMpOwogICAgIFNUQU5E
QVJEX0RBVEFCQVNFX0VSUk9SX0NBTExCQUNLOwogCi0gICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJh
c2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkucHV0KCptX3RyYW5zYWN0aW9uLCAqdGhpcywgW3RoaXMs
IG9wZXJhdGlvbiwgb3BlcmF0aW9uQ2FsbGJhY2tdKFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IpIHsKKyAgICBtX3RyYW5zYWN0aW9uLT5k
YXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5wdXQoKm1fdHJhbnNhY3Rpb24sICp0aGlzLCBb
dGhpcywgb3BlcmF0aW9uLCBvcGVyYXRpb25DYWxsYmFja10oUGFzc1JlZlB0cjxJREJLZXk+IGtl
eSwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBwcnBFcnJvcikgeworICAgICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBwcnBFcnJvcjsKICAgICAgICAgaWYgKGtleSkg
ewogICAgICAgICAgICAgQVNTRVJUKCFlcnJvcik7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKGtleSk7CkBAIC0xMTQsNiArMTE1LDcgQEAgdm9pZCBQdXRPcGVyYXRpb246OnBl
cmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25DYWxsYmFjaykKICAgICAgICAg
ICAgIEFTU0VSVChlcnJvcik7CiAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25FcnJvcihlcnJv
cik7CiAgICAgICAgIH0KKyAgICAgICAgb3BlcmF0aW9uQ2FsbGJhY2soZXJyb3IucmVsZWFzZSgp
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA4YmE2MzhlLi44ODRmZDJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzA3NywxMyArMzA3NywxOSBAQCBfX1pON1dlYkNv
cmUyNk1vY2tNZWRpYVBsYXllck1lZGlhU291cmNlMTlyZWdpc3Rlck1lZGlhRW5naW5lRVBGdlBG
TjNXVEYxMFBhc3NPdwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKK19f
Wk5LN1dlYkNvcmUxMElEQktleURhdGExN21heWJlQ3JlYXRlSURCS2V5RXYKIF9fWk5LN1dlYkNv
cmUxMElEQktleVBhdGg2ZW5jb2RlRVJOU18xMktleWVkRW5jb2RlckUKK19fWk5LN1dlYkNvcmU2
SURCS2V5NmVuY29kZUVSTlNfMTJLZXllZEVuY29kZXJFCitfX1pOSzdXZWJDb3JlNklEQktleTdp
c1ZhbGlkRXYKK19fWk43V2ViQ29yZTEwSURCS2V5RGF0YUMxRVBOU182SURCS2V5RQogX19aTjdX
ZWJDb3JlMTBJREJLZXlQYXRoQzFFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMElEQktl
eVBhdGhDMUVSS04zV1RGNlZlY3RvcklOUzFfNlN0cmluZ0VMbTBFTlMxXzE1Q3Jhc2hPbk92ZXJm
bG93RUVFCiBfX1pON1dlYkNvcmUxMElEQktleVBhdGg2ZGVjb2RlRVJOU18xMktleWVkRGVjb2Rl
ckVSUzBfCiBfX1pON1dlYkNvcmUxOElEQkRhdGFiYXNlQmFja2VuZDE0b3BlbkNvbm5lY3Rpb25F
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJJREJDYWxsYmFja3NFRUVOUzJfSU5TXzIwSURCRGF0YWJh
c2VDYWxsYmFja3NFRUV4eQogX19aTjdXZWJDb3JlMThJREJEYXRhYmFzZUJhY2tlbmQ2Y3JlYXRl
RVJLTjNXVEY2U3RyaW5nRVM0X1BOU18yNklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlRVJOU18x
OUlEQlNlcnZlckNvbm5lY3Rpb25FCiBfX1pON1dlYkNvcmUxOElEQkRhdGFiYXNlQmFja2VuZEQx
RXYKK19fWk43V2ViQ29yZTIxQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlSUxiMEVMYjBFTlNfMTBJREJL
ZXlEYXRhRUU0Y29weUVSS1MxXwogX19aTjdXZWJDb3JlMjFDcm9zc1RocmVhZENvcGllckJhc2VJ
TGIwRUxiMEVOU18yMklEQk9iamVjdFN0b3JlTWV0YWRhdGFFRTRjb3B5RVJLUzFfCiBfX1pON1dl
YkNvcmUyMUNyb3NzVGhyZWFkQ29waWVyQmFzZUlMYjBFTGIwRU5TXzlJbmRleGVkREIxNVRyYW5z
YWN0aW9uTW9kZUVFNGNvcHlFUktTMl8KK19fWk43V2ViQ29yZTZJREJLZXlEMUV2CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4
IGVmZjk1MmEuLjU5ZDlhNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvagpAQCAtNjU5OSw2ICs2NTk5LDcgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXElEQklu
ZGV4LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRi
XElEQktleS5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGluZGV4
ZWRkYlxJREJLZXlEYXRhLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVs
ZXNcaW5kZXhlZGRiXElEQktleVJhbmdlLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXElEQk9iamVjdFN0b3JlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcaW5kZXhlZGRiXElEQlJlcXVlc3QuY3BwIiAvPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGQ2ZjkzMWUuLmJjMjU5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NzYsNiArMTc3Niw4IEBACiAJCTUxMEQ0QTM4MTAz
MTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMEQ0QTMyMTAzMTY1RUUwMDQ5RUE1
NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLzsgfTsKIAkJNTExMjkzNUYzRDU0QjRC
NTJGQUY5NzNGIC8qIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTI5MzYxM0Q2REI0QjUyRkFGOTcz
RiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgKi87IH07CiAJCTUxMTI5MzYwM0Q2
MEI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTExMjkzNjIzRDg1QjRCNTJGQUY5
NzNGIC8qIEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmggKi87IH07CisJCTUxMUVDMUE2MTg4
REFDQTQwMEJBM0VCNiAvKiBJREJLZXlEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFQzFBNTE4OERBQ0E0MDBCQTNFQjYgLyogSURCS2V5RGF0
YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUx
MUVDMUE4MTg4REFFN0IwMEJBM0VCNiAvKiBJREJLZXlEYXRhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMUVDMUE3MTg4REFFN0IwMEJBM0VCNiAv
KiBJREJLZXlEYXRhLmNwcCAqLzsgfTsKIAkJNTExRUYyQzAxN0YwRkQzNTAwRTRGQTE2IC8qIEpT
SURCQW55LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMUVGMkE4MTdGMEZDNDgwMEU0RkExNiAvKiBKU0lEQkFueS5jcHAgKi87IH07CiAJCTUxMUVG
MkMxMTdGMEZEMzUwMEU0RkExNiAvKiBKU0lEQkN1cnNvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTFFRjJBOTE3RjBGQzQ4MDBFNEZBMTYgLyog
SlNJREJDdXJzb3IuY3BwICovOyB9OwogCQk1MTFFRjJDMjE3RjBGRDM1MDBFNEZBMTYgLyogSlNJ
REJDdXJzb3JXaXRoVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTExRUYyQUExN0YwRkM0ODAwRTRGQTE2IC8qIEpTSURCQ3Vyc29yV2l0aFZh
bHVlLmNwcCAqLzsgfTsKQEAgLTg3MjIsNiArODcyNCw4IEBACiAJCTUxMEQ0QTMyMTAzMTY1RUUw
MDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMTI5MzYxM0Q2REI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMTI5MzYyM0Q4NUI0QjUyRkFGOTczRiAvKiBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JIZWFwUHJvZmls
ZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTFFQzFBNTE4OERBQ0E0
MDBCQTNFQjYgLyogSURCS2V5RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJREJLZXlEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMUVDMUE3MTg4
REFFN0IwMEJBM0VCNiAvKiBJREJLZXlEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IElEQktleURhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTFFRjJBODE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJBbnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJREJBbnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFFRjJB
OTE3RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJDdXJzb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNJREJDdXJzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTFFRjJBQTE3
RjBGQzQ4MDBFNEZBMTYgLyogSlNJREJDdXJzb3JXaXRoVmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNJREJDdXJzb3JXaXRoVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTc2OTMsNiArMTc2OTcsOCBAQAogCQkJCTUxQUJCNUI2MTg2RDBFRDEwMDgzOTFBMSAv
KiBJREJJbmRleE1ldGFkYXRhLmggKi8sCiAJCQkJNTFENzE5OTExODExMDZFMDAwMTZEQzUxIC8q
IElEQktleS5jcHAgKi8sCiAJCQkJNTFENzE5OTIxODExMDZFMDAwMTZEQzUxIC8qIElEQktleS5o
ICovLAorCQkJCTUxMUVDMUE3MTg4REFFN0IwMEJBM0VCNiAvKiBJREJLZXlEYXRhLmNwcCAqLywK
KwkJCQk1MTFFQzFBNTE4OERBQ0E0MDBCQTNFQjYgLyogSURCS2V5RGF0YS5oICovLAogCQkJCTUx
RDcxOTkzMTgxMTA2RTAwMDE2REM1MSAvKiBJREJLZXlQYXRoLmNwcCAqLywKIAkJCQk1MUQ3MTk5
NDE4MTEwNkUwMDAxNkRDNTEgLyogSURCS2V5UGF0aC5oICovLAogCQkJCTUxRDcxOTk1MTgxMTA2
RTAwMDE2REM1MSAvKiBJREJLZXlSYW5nZS5jcHAgKi8sCkBAIC0yMzk4Nyw2ICsyMzk5Myw3IEBA
CiAJCQkJQ0Q4QjVBNDkxODBFMTM4QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0NBRjBBMTkyQjlDMDBBOEVGNUYgLyogSFRNTEhSRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURFMjcwQTE1MkFDODAwQjEyQTY4IC8qIEhU
TUxIdG1sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTExRUMxQTYxODhEQUNBNDAwQkEz
RUI2IC8qIElEQktleURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REI0MTdEMTQxNTEw
MDdGRjg0MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTg3MURFMkEwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxJRnJhbWVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBOEVBN0QyRDBBMTkzODU1MDBBOEVGNUYgLyogSFRNTEltYWdl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODc5OSw2ICsyODgwNiw3IEBACiAJCQkJNTE3
NzFDOEUxODJEQjRCNzAwOEU3ODFFIC8qIElEQkRhdGFiYXNlQmFja2VuZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQTIyNDY0QjBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFBMjI0NjREMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVU
cmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTFFQzFBODE4OERBRTdCMDBCQTNF
QjYgLyogSURCS2V5RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0JDNkE0MTE1MDVGMDgx
MDAxQjc0QUMgLyogU1FMUmVzdWx0U2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3QkM2QTQ0
MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxSZXN1bHRTZXRSb3dMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTk3QkM2QTQ3MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVh
ZENvcGllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Dcm9zc1RocmVhZENvcGllci5j
cHAKaW5kZXggMGFhZWE3OS4uYjBlM2EyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0Nyb3NzVGhyZWFkQ29waWVyLmNwcApAQCAtNDIsNiArNDIsNyBAQAogCiAjaWYgRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VNZXRhZGF0YS5oIgorI2luY2x1
ZGUgIklEQktleURhdGEuaCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05OCw2
ICs5OSwxMSBAQCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZhbHNlLCBJREJJbmRleE1l
dGFkYXRhPjo6VHlwZSBDcm9zc1RocmVhZENvcGllckJhcwogICAgIHJldHVybiBtZXRhZGF0YS5p
c29sYXRlZENvcHkoKTsKIH0KIAorQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwg
SURCS2V5RGF0YT46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgSURC
S2V5RGF0YT46OmNvcHkoY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSkKK3sKKyAgICByZXR1cm4g
a2V5RGF0YS5pc29sYXRlZENvcHkoKTsKK30KKwogQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNl
LCBmYWxzZSwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT46OlR5cGUgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT46OmNvcHkoY29uc3QgSURC
T2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgcmV0dXJuIG1ldGFkYXRhLmlz
b2xhdGVkQ29weSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ3Jvc3NU
aHJlYWRDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Nyb3NzVGhyZWFkQ29waWVy
LmgKaW5kZXggNTlkMGFjMi4uMDMyYTI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vQ3Jvc3NUaHJlYWRDb3BpZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9D
cm9zc1RocmVhZENvcGllci5oCkBAIC0xNzMsNiArMTczLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgc3RhdGljIFR5cGUgY29weShjb25zdCBJREJJbmRleE1ldGFkYXRhJik7CiAg
ICAgfTsKIAorICAgIHN0cnVjdCBJREJLZXlEYXRhOworICAgIHRlbXBsYXRlPD4gc3RydWN0IENy
b3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIElEQktleURhdGE+IHsKKyAgICAgICAg
dHlwZWRlZiBJREJLZXlEYXRhIFR5cGU7CisgICAgICAgIHN0YXRpYyBUeXBlIGNvcHkoY29uc3Qg
SURCS2V5RGF0YSYpOworICAgIH07CisKICAgICBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0
YTsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBDcm9zc1RocmVhZENvcGllckJhc2U8ZmFsc2UsIGZh
bHNlLCBJREJPYmplY3RTdG9yZU1ldGFkYXRhPiB7CiAgICAgICAgIHR5cGVkZWYgSURCT2JqZWN0
U3RvcmVNZXRhZGF0YSBUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDU2OTU3ZDIuLjdmNzVjYmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsNSArMSw2NiBAQAogMjAxNC0wMS0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKKyAgICAgICAgSURCOiAiUHV0IiBzdXBwb3J0CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xNTc3OTY0Mz4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjc0MDEKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292
LgorCisgICAgICAgIFNoaXAgcHV0UmVjb3JkIHJlcXVlc3RzIG92ZXIgdG8gdGhlIERhdGFiYXNl
UHJvY2VzcywgYW5kIGxpc3RlbiBmb3IgY29tcGxldGlvbiBmcm9tIHRoZSBEYXRhYmFzZVByb2Nl
c3M6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZl
ckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpwdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpkaWRQdXRS
ZWNvcmQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhl
ZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKKyAgICAgICAgUGFzcyBv
ZmYgdGhlIHB1dFJlY29yZCByZXF1ZXN0IHRvIHRoZSBVbmlxdWUgSURCRGF0YWJhc2U6CisgICAg
ICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6
cHV0UmVjb3JkKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisKKyAgICAgICAg
UGFzcyBvZmYgdGhlIHB1dFJlY29yZCByZXF1ZXN0IHRvIHRoZSBiYWNraW5nIHN0b3JlOgorICAg
ICAgICAqIERhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZTo6cHV0UmVjb3JkKToKKyAgICAgICAg
KFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYktpdDo6VW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29yZEluQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFi
YXNlLmg6CisKKyAgICAgICAgQWRkIGJhY2tpbmcgc3RvcmUgbWV0aG9kcyByZWxhdGVkIHRvIHB1
dFJlY29yZCwgdGhvdWdoIG9ubHkgb25lIGlzIGNyaXRpY2FsIHJpZ2h0IG5vdzoKKyAgICAgICAg
KiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURC
RGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6Y3JlYXRlQW5kUG9wdWxhdGVJbml0aWFsTWV0
YWRhdGEpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNR
TGl0ZTo6Z2VuZXJhdGVLZXkpOgorICAgICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUJh
Y2tpbmdTdG9yZVNRTGl0ZTo6a2V5RXhpc3RzSW5PYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJL
aXQ6OlVuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlOjpwdXRSZWNvcmQpOgorICAg
ICAgICAoV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZTo6dXBkYXRl
S2V5R2VuZXJhdG9yKToKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0
ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oOgorCisgICAgICAgIEFkZCB0
aGUgSURCS2V5RGF0YSB0eXBlIHRvIElQQzoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdDIvbWVz
c2FnZXMucHk6CisgICAgICAgIChzdHJ1Y3Rfb3JfY2xhc3MpOgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
SURCS2V5RGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SURCS2V5
RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
OgorCisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VyaWFsaXplSURCS2V5KToKKyAgICAgICAgKiBEYXRh
YmFzZVByb2Nlc3MvSW5kZXhlZERCL0lEQlNlcmlhbGl6YXRpb24uaDoKKworICAgICAgICBJbXBs
ZW1lbnQgbW9yZSBjcm9zcy10aHJlYWQgY29weWluZzoKKyAgICAgICAgKiBTaGFyZWQvV2ViQ3Jv
c3NUaHJlYWRDb3BpZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmVjdG9yPHVpbnQ4X3Q+Pjo6
Y29weSk6CisgICAgICAgIChXZWJDb3JlOjpWZWN0b3I8VmVjdG9yPElEQktleURhdGE+Pj46OmNv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6QVNDSUlMaXRlcmFsPjo6Y29weSk6CisgICAgICAgICog
U2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmg6CisKKyAgICAgICAgSW1wbGVtZW50IG1vcmUg
bnVtYmVycyBvZiBnZW5lcmljIEFzeW5jVGFzayB0ZW1wbGF0ZXM6CisgICAgICAgICogU2hhcmVk
L0FzeW5jVGFzay5oOgorICAgICAgICAoV2ViS2l0OjpjcmVhdGVBc3luY1Rhc2spOgorCisyMDE0
LTAxLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBUaGUg
SURCIGJhY2tpbmcgc3RvcmUgcHV0KCkgbWV0aG9kIHNob3VsZG4ndCBjYWxsIElEQiBjYWxsYmFj
a3MgZGlyZWN0bHkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyNzM5OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9u
LmNwcAppbmRleCA1MTk2ZDQ4Li41ZjgwNzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9E
YXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbi5jcHAKQEAgLTE3Nyw2ICsxNzcsMTggQEAgdm9pZCBEYXRhYmFz
ZVByb2Nlc3NJREJDb25uZWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGludDY0X3QKICAgICB9KTsKIH0KIAordm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uOjpwdXRSZWNvcmQodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYga2V5LCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SURC
S2V5RGF0YT4+JiBpbmRleEtleXMpCit7CisgICAgQVNTRVJUKG1fdW5pcXVlSURCRGF0YWJhc2Up
OworCisgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBwdXRSZWNvcmQgcmVxdWVzdCBJRCAl
bGx1LCBvYmplY3Qgc3RvcmUgaWQgJWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7Cisg
ICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7
CisgICAgbV91bmlxdWVJREJEYXRhYmFzZS0+cHV0UmVjb3JkKElEQlRyYW5zYWN0aW9uSWRlbnRp
ZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIGtleSwgdmFsdWUsIHB1
dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGNvbnN0
IElEQktleURhdGEmIGtleURhdGEsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6RGlkUHV0UmVjb3JkKHJlcXVlc3RJRCwga2V5RGF0YSwgZXJyb3JD
b2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICB9KTsKK30KKworCiBJUEM6OkNvbm5lY3Rpb24qIERh
dGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKIHsK
ICAgICByZXR1cm4gbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0
YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oCmluZGV4IDRkNmZhNTMuLmFjMjE5MjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oCkBAIC0zNCw2ICszNCwx
MCBAQAogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgSURC
S2V5RGF0YTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIERhdGFiYXNlVG9XZWJQ
cm9jZXNzQ29ubmVjdGlvbjsKQEAgLTcxLDYgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNo
YW5nZURhdGFiYXNlVmVyc2lvbih1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rp
b25JRCwgdWludDY0X3QgbmV3VmVyc2lvbik7CiAgICAgdm9pZCBjcmVhdGVPYmplY3RTdG9yZSh1
aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCwgV2ViQ29yZTo6SURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSk7CiAgICAgdm9pZCBkZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCBy
ZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rpb25JRCwgaW50NjRfdCBvYmplY3RTdG9yZUlEKTsK
KyAgICB2b2lkIHB1dFJlY29yZCh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rp
b25JRCwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBW
ZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OklE
QktleURhdGE+PiYgaW5kZXhLZXlzKTsKIAogICAgIFJlZjxEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICB1aW50NjRfdCBtX3NlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGQzZDY1ODQuLmE5Mzg0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nl
c3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTM1LDYgKzM1LDcgQEAgbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbiBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgQ2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVl
c3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCB1aW50NjRfdCBuZXdWZXJzaW9uKQogICAgIENy
ZWF0ZU9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklE
LCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhIG9iamVjdFN0b3JlTWV0YWRhdGEpCiAg
ICAgRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0
aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCkKKyAgICBQdXRSZWNvcmQodWludDY0X3QgcmVx
dWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgV2Vi
Q29yZTo6SURCS2V5RGF0YSBrZXksIElQQzo6RGF0YVJlZmVyZW5jZSB2YWx1ZSwgaW50NjRfdCBw
dXRNb2RlLCBWZWN0b3I8aW50NjRfdD4gaW5kZXhJRHMsIFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6
SURCS2V5RGF0YT4+IGluZGV4S2V5cykKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL0lEQlNlcmlhbGl6YXRpb24u
Y3BwCmluZGV4IDYyMGExODYuLjFhZjcyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmNwcApA
QCAtMzAsMTMgKzMwLDE0IEBACiAjaW5jbHVkZSAiQXJndW1lbnRFbmNvZGVyLmgiCiAjaW5jbHVk
ZSAiS2V5ZWREZWNvZGVyLmgiCiAjaW5jbHVkZSAiS2V5ZWRFbmNvZGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9JREJLZXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleVBhdGguaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWZQdHI8U2hh
cmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgm
IGtleVBhdGgpCitSZWZQdHI8U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgS2V5ZWRFbmNvZGVyIGVuY29kZXI7CiAgICAg
a2V5UGF0aC5lbmNvZGUoZW5jb2Rlcik7CkBAIC01Myw2ICs1NCwxMyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8V2ViQ29yZTo6SURCS2V5UGF0aD4gZGVzZXJpYWxpemVJREJLZXlQYXRoKGNvbnN0IHVpbnQ4
X3QqIGRhdGEsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4gc2VyaWFsaXplSURCS2V5KGNvbnN0IElEQktleSYga2V5KQoreworICAgIEtleWVk
RW5jb2RlciBlbmNvZGVyOworICAgIGtleS5lbmNvZGUoZW5jb2Rlcik7CisgICAgcmV0dXJuIGVu
Y29kZXIuZmluaXNoRW5jb2RpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvSURCU2VyaWFsaXphdGlvbi5oIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmgKaW5k
ZXggYTZjNzNkZi4uNTViYTE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9JREJTZXJpYWxpemF0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIElEQktleTsKIGNsYXNzIElEQktleVBhdGg7CiB9CiAKQEAgLTQwLDYgKzQxLDkgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBzZXJpYWxpemVJ
REJLZXlQYXRoKGNvbnN0IFdlYkNvcmU6OklEQktleVBhdGgmKTsKIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpJREJLZXlQYXRoPiBkZXNlcmlhbGl6ZUlEQktleVBhdGgoY29uc3QgdWludDhfdCog
YnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSk7CiAKK1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI+IHNlcmlhbGl6ZUlEQktleShjb25zdCBXZWJDb3JlOjpJREJLZXkmKTsKK1Bhc3NSZWZQdHI8
V2ViQ29yZTo6SURCS2V5PiBkZXNlcmlhbGl6ZUlEQktleShjb25zdCB1aW50OF90KiBidWZmZXIs
IHNpemVfdCBidWZmZXJTaXplKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5k
ZXggNzc3ODExMi4uODMwMjJhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTMw
LDEzICszMCwxNyBAQAogCiAjaW5jbHVkZSAiQXN5bmNSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiQXN5
bmNUYXNrLmgiCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRhdGFiYXNl
UHJvY2Vzcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uaCIKICNp
bmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIgogI2luY2x1ZGUg
IldlYkNyb3NzVGhyZWFkQ29waWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZUJhY2tlbmQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0lEQkRhdGFiYXNlTWV0YWRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEu
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMjIyLDcgKzIyNiw3IEBA
IHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRpZE9wZW5CYWNraW5nU3RvcmVBbmRSZWFkTWV0YWRh
dGEoY29uc3QgSURCRGF0YWJhc2VNZXRhCiAgICAgfQogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpvcGVuVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoYm9vbCk+
IHN1Y2Nlc3NDYWxsYmFjaykKK3ZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZW5UcmFuc2FjdGlv
bihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIsIGNvbnN0IFZlY3Rv
cjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1v
ZGUsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQogewogICAgIHBv
c3RUcmFuc2FjdGlvbk9wZXJhdGlvbihpZGVudGlmaWVyLCBjcmVhdGVBc3luY1Rhc2soKnRoaXMs
ICZVbmlxdWVJREJEYXRhYmFzZTo6b3BlbkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLCBpZGVudGlm
aWVyLCBvYmplY3RTdG9yZUlEcywgbW9kZSksIHN1Y2Nlc3NDYWxsYmFjayk7CiB9CkBAIC0zMzQs
NyArMzM4LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkQ29tcGxldGVCb29sUmVxdWVz
dCh1aW50NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2VzcykKICAgICByZXF1ZXN0LT5jb21wbGV0
ZVJlcXVlc3Qoc3VjY2Vzcyk7CiB9CiAKLXZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmNyZWF0ZU9i
amVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYgbWV0YWRhdGEsIHN0ZDo6ZnVuY3Rp
b248dm9pZChib29sKT4gc3VjY2Vzc0NhbGxiYWNrKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVudGlm
aWVyLCBjb25zdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhJiBtZXRhZGF0YSwgc3RkOjpmdW5jdGlv
bjx2b2lkKGJvb2wpPiBzdWNjZXNzQ2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIApAQCAtMzg5LDcgKzM5MywzMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpkZWxl
dGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImIGlkZW50aQogICAg
IHBvc3REYXRhYmFzZVRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJh
c2U6OmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNraW5nU3RvcmUsIHJlcXVlc3RJRCwgaWRlbnRpZmll
ciwgb2JqZWN0U3RvcmVJRCkpOwogfQogCi12b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVuQmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSURzLCBXZWJDb3JlOjpJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlKQordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6
cHV0UmVjb3JkKGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYgaWRlbnRpZmllciwgaW50
NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHZhbHVlLCBpbnQ2NF90IHB1dE1vZGUsIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgaW5kZXhJRHMsIGNvbnN0IFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+JiBpbmRleEtl
eXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBJREJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0
IFN0cmluZyYpPiBjYWxsYmFjaykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgaWYgKCFtX2FjY2VwdGluZ05ld1JlcXVlc3RzKSB7CisgICAgICAgIGNhbGxiYWNrKElEQktl
eURhdGEoKSwgSU5WQUxJRF9TVEFURV9FUlIsICJVbmFibGUgdG8gcHV0IHJlY29yZCBpbnRvIGRh
dGFiYXNlIGJlY2F1c2UgaXQgaGFzIHNodXQgZG93biIpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgQVNTRVJUKG1fbWV0YWRhdGEtPm9iamVjdFN0b3Jlcy5jb250YWlucyhvYmplY3RT
dG9yZUlEKSk7CisKKyAgICBSZWZQdHI8QXN5bmNSZXF1ZXN0PiByZXF1ZXN0ID0gQXN5bmNSZXF1
ZXN0SW1wbDxjb25zdCBJREJLZXlEYXRhJiwgdWludDMyX3QsIGNvbnN0IFN0cmluZyY+OjpjcmVh
dGUoW3RoaXMsIGNhbGxiYWNrXShjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCB1aW50MzJfdCBl
cnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7CisgICAgICAgIGNhbGxiYWNr
KGtleURhdGEsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKTsKKyAgICB9LCBbdGhpcywgY2FsbGJh
Y2tdKCkgeworICAgICAgICBjYWxsYmFjayhJREJLZXlEYXRhKCksIElOVkFMSURfU1RBVEVfRVJS
LCAiVW5hYmxlIHRvIHB1dCByZWNvcmQgaW50byBkYXRhYmFzZSIpOworICAgIH0pOworCisgICAg
dWludDY0X3QgcmVxdWVzdElEID0gcmVxdWVzdC0+cmVxdWVzdElEKCk7CisgICAgbV9wZW5kaW5n
RGF0YWJhc2VUYXNrcy5hZGQocmVxdWVzdElELCByZXF1ZXN0LnJlbGVhc2UoKSk7CisKKyAgICBw
b3N0RGF0YWJhc2VUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNl
OjpwdXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBpZGVudGlmaWVyLCBtX21ldGFk
YXRhLT5vYmplY3RTdG9yZXMuZ2V0KG9iamVjdFN0b3JlSUQpLCBrZXlEYXRhLCB2YWx1ZS52ZWN0
b3IoKSwgcHV0TW9kZSwgaW5kZXhJRHMsIGluZGV4S2V5cykpOworfQorCit2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpvcGVuQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rp
b25JZGVudGlmaWVyJiBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0
b3JlSURzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX2JhY2tpbmdTdG9yZSk7CkBAIC00NjksNiAr
NDk2LDYyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OmRlbGV0ZU9iamVjdFN0b3JlSW5CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zCiAgICAgcG9zdE1haW5UaHJlYWRUYXNr
KGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWREZWxldGVPYmpl
Y3RTdG9yZSwgcmVxdWVzdElELCBzdWNjZXNzKSk7CiB9CiAKK3ZvaWQgVW5pcXVlSURCRGF0YWJh
c2U6OnB1dFJlY29yZEluQmFja2luZ1N0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgSURC
VHJhbnNhY3Rpb25JZGVudGlmaWVyJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCT2JqZWN0U3RvcmVN
ZXRhZGF0YSYgb2JqZWN0U3RvcmVNZXRhZGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0
b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiYg
aW5kZXhLZXlzKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCht
X2JhY2tpbmdTdG9yZSk7CisKKyAgICBib29sIGtleVdhc0dlbmVyYXRlZCA9IGZhbHNlOworICAg
IFJlZlB0cjxJREJLZXk+IGtleTsKKworICAgIGlmIChwdXRNb2RlICE9IElEQkRhdGFiYXNlQmFj
a2VuZDo6Q3Vyc29yVXBkYXRlICYmIG9iamVjdFN0b3JlTWV0YWRhdGEuYXV0b0luY3JlbWVudCAm
JiBrZXlEYXRhLmlzTnVsbCkgeworICAgICAgICBrZXkgPSBtX2JhY2tpbmdTdG9yZS0+Z2VuZXJh
dGVLZXkodHJhbnNhY3Rpb24sIG9iamVjdFN0b3JlTWV0YWRhdGEuaWQpOworICAgICAgICBrZXlX
YXNHZW5lcmF0ZWQgPSB0cnVlOworICAgIH0gZWxzZQorICAgICAgICBrZXkgPSBrZXlEYXRhLm1h
eWJlQ3JlYXRlSURCS2V5KCk7CisKKyAgICBBU1NFUlQoa2V5KTsKKyAgICBBU1NFUlQoa2V5LT5p
c1ZhbGlkKCkpOworCisgICAgaWYgKHB1dE1vZGUgPT0gSURCRGF0YWJhc2VCYWNrZW5kOjpBZGRP
bmx5KSB7CisgICAgICAgIGJvb2wga2V5RXhpc3RzOworICAgICAgICBpZiAoIW1fYmFja2luZ1N0
b3JlLT5rZXlFeGlzdHNJbk9iamVjdFN0b3JlKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFk
YXRhLmlkLCAqa2V5LCBrZXlFeGlzdHMpKSB7CisgICAgICAgICAgICBwb3N0TWFpblRocmVhZFRh
c2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6OmRpZFB1dFJlY29y
ZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJJbnRlcm5hbCBiYWNraW5nIHN0b3Jl
IGVycm9yIGNoZWNraW5nIGZvciBrZXkgZXhpc3RlbmNlIikpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBpZiAoa2V5RXhpc3RzKSB7CisgICAgICAgICAgICBwb3N0
TWFpblRocmVhZFRhc2soY3JlYXRlQXN5bmNUYXNrKCp0aGlzLCAmVW5pcXVlSURCRGF0YWJhc2U6
OmRpZFB1dFJlY29yZEluQmFja2luZ1N0b3JlLCByZXF1ZXN0SUQsIElEQktleURhdGEoKSwgSURC
RGF0YWJhc2VFeGNlcHRpb246OkNvbnN0cmFpbnRFcnJvciwgQVNDSUlMaXRlcmFsKCJLZXkgYWxy
ZWFkeSBleGlzdHMgaW4gdGhlIG9iamVjdCBzdG9yZSIpKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGSVhNRTogVGhlIExldmVsREIgcG9ydCBwZXJm
b3JtcyAibWFrZUluZGV4V3JpdGVycyIgaGVyZS4gTmVjZXNzYXJ5PworCisgICAgaWYgKCFtX2Jh
Y2tpbmdTdG9yZS0+cHV0UmVjb3JkKHRyYW5zYWN0aW9uLCBvYmplY3RTdG9yZU1ldGFkYXRhLmlk
LCAqa2V5LCB2YWx1ZS5kYXRhKCksIHZhbHVlLnNpemUoKSkpIHsKKyAgICAgICAgcG9zdE1haW5U
aHJlYWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQ
dXRSZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2lu
ZyBzdG9yZSBlcnJvciBwdXR0aW5nIGEgcmVjb3JkIikpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIC8vIEZJWE1FOiBUaGUgTGV2ZWxEQiBwb3J0IHVwZGF0ZXMgaW5kZXgga2V5cyBo
ZXJlLiBOZWNlc3Nhcnk/CisKKyAgICBpZiAocHV0TW9kZSAhPSBJREJEYXRhYmFzZUJhY2tlbmQ6
OkN1cnNvclVwZGF0ZSAmJiBvYmplY3RTdG9yZU1ldGFkYXRhLmF1dG9JbmNyZW1lbnQgJiYga2V5
LT50eXBlKCkgPT0gSURCS2V5OjpOdW1iZXJUeXBlKSB7CisgICAgICAgIGlmICghbV9iYWNraW5n
U3RvcmUtPnVwZGF0ZUtleUdlbmVyYXRvcih0cmFuc2FjdGlvbiwgb2JqZWN0U3RvcmVNZXRhZGF0
YS5pZCwgKmtleSwga2V5V2FzR2VuZXJhdGVkKSkgeworICAgICAgICAgICAgcG9zdE1haW5UaHJl
YWRUYXNrKGNyZWF0ZUFzeW5jVGFzaygqdGhpcywgJlVuaXF1ZUlEQkRhdGFiYXNlOjpkaWRQdXRS
ZWNvcmRJbkJhY2tpbmdTdG9yZSwgcmVxdWVzdElELCBJREJLZXlEYXRhKCksIElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpVbmtub3duRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgYmFja2luZyBz
dG9yZSBlcnJvciB1cGRhdGluZyBrZXkgZ2VuZXJhdG9yIikpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBvc3RNYWluVGhyZWFkVGFzayhjcmVhdGVBc3lu
Y1Rhc2soKnRoaXMsICZVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3JkSW5CYWNraW5nU3Rv
cmUsIHJlcXVlc3RJRCwgSURCS2V5RGF0YShrZXkuZ2V0KCkpLCAwLCBTdHJpbmcoU3RyaW5nSW1w
bDo6ZW1wdHkoKSkpKTsKK30KKwordm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6ZGlkUHV0UmVjb3Jk
SW5CYWNraW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJLZXlEYXRhJiBrZXlE
YXRhLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQorewor
ICAgIFJlZlB0cjxBc3luY1JlcXVlc3Q+IHJlcXVlc3QgPSBtX3BlbmRpbmdEYXRhYmFzZVRhc2tz
LnRha2UocmVxdWVzdElEKTsKKyAgICBBU1NFUlQocmVxdWVzdCk7CisKKyAgICByZXF1ZXN0LT5j
b21wbGV0ZVJlcXVlc3Qoa2V5RGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpOworfQorCiBT
dHJpbmcgVW5pcXVlSURCRGF0YWJhc2U6OmFic29sdXRlRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25z
dAogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgK
aW5kZXggYmVkY2Q1ODcuLmJhOWI1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFiYXNlLmgKQEAgLTQw
LDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IElEQkRhdGFiYXNlTWV0
YWRhdGE7CitzdHJ1Y3QgSURCS2V5RGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC03
Niw2ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNoYW5nZURhdGFiYXNlVmVyc2lvbihjb25z
dCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoYm9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CiAgICAgdm9pZCBjcmVhdGVPYmpl
Y3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3JlOjpJ
REJPYmplY3RTdG9yZU1ldGFkYXRhJiwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiBzdWNjZXNz
Q2FsbGJhY2spOwogICAgIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rp
b25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Ym9vbCk+IHN1Y2Nlc3NDYWxsYmFjayk7CisgICAgdm9pZCBwdXRSZWNvcmQoY29uc3QgSURCVHJh
bnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25zdCBXZWJDb3Jl
OjpJREJLZXlEYXRhJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBw
dXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVj
dG9yPFdlYkNvcmU6OklEQktleURhdGE+PiYgaW5kZXhLZXlzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
Y29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIHVpbnQzMl90LCBjb25zdCBTdHJpbmcmKT4gY2Fs
bGJhY2spOwogCiBwcml2YXRlOgogICAgIFVuaXF1ZUlEQkRhdGFiYXNlKGNvbnN0IFVuaXF1ZUlE
QkRhdGFiYXNlSWRlbnRpZmllciYpOwpAQCAtMTE3LDYgKzExOSw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjaGFuZ2VEYXRhYmFzZVZlcnNpb25JbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1ZXN0
SUQsIGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIHVpbnQ2NF90IG5ld1ZlcnNpb24p
OwogICAgIHZvaWQgY3JlYXRlT2JqZWN0U3RvcmVJbkJhY2tpbmdTdG9yZSh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGNvbnN0IFdlYkNvcmU6OklE
Qk9iamVjdFN0b3JlTWV0YWRhdGEmKTsKICAgICB2b2lkIGRlbGV0ZU9iamVjdFN0b3JlSW5CYWNr
aW5nU3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZp
ZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQpOworICAgIHZvaWQgcHV0UmVjb3JkSW5CYWNraW5n
U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXIm
LCBjb25zdCBXZWJDb3JlOjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJiwgY29uc3QgV2ViQ29yZTo6
SURCS2V5RGF0YSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFsdWUsIGludDY0X3QgcHV0TW9k
ZSwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBpbmRleElEcywgY29uc3QgVmVjdG9yPFZlY3RvcjxX
ZWJDb3JlOjpJREJLZXlEYXRhPj4mIGluZGV4S2V5cyk7CisKIAogICAgIHZvaWQgc2h1dGRvd25C
YWNraW5nU3RvcmUoKTsKIApAQCAtMTI3LDYgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3Mp
OwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29s
IHN1Y2Nlc3MpOwogICAgIHZvaWQgZGlkRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBib29sIHN1Y2Nlc3MpOworICAgIHZvaWQgZGlkUHV0UmVjb3JkSW5CYWNraW5nU3RvcmUo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlEYXRhJiwgdWludDMyX3Qg
ZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAgICAgdm9pZCBkaWRTaHV0
ZG93bkJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQgZGlkQ29tcGxldGVCb29sUmVxdWVzdCh1aW50
NjRfdCByZXF1ZXN0SUQsIGJvb2wgc3VjY2Vzcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvVW5pcXVlSURC
RGF0YWJhc2VCYWNraW5nU3RvcmUuaAppbmRleCBhYmYxODNkLi44ZGFlZDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL1VuaXF1ZUlEQkRhdGFi
YXNlQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0lu
ZGV4ZWREQi9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCkBAIC0zMiw2ICszMiw4IEBA
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgeworY2xh
c3MgSURCS2V5OworCiBzdHJ1Y3QgSURCRGF0YWJhc2VNZXRhZGF0YTsKIHN0cnVjdCBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhOwogfQpAQCAtNTUsNiArNTcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBjaGFuZ2VEYXRhYmFzZVZlcnNpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlm
aWVyJiwgdWludDY0X3QgbmV3VmVyc2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVP
YmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBjb25zdCBXZWJDb3Jl
OjpJREJPYmplY3RTdG9yZU1ldGFkYXRhJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVP
YmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVj
dFN0b3JlSUQpID0gMDsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJLZXk+
IGdlbmVyYXRlS2V5KGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJRCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBrZXlFeGlzdHNJbk9iamVjdFN0b3Jl
KGNvbnN0IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwg
Y29uc3QgV2ViQ29yZTo6SURCS2V5JiwgYm9vbCYga2V5RXhpc3RzKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHB1dFJlY29yZChjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90
IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGNvbnN0IHVpbnQ4X3QqIHZh
bHVlQnVmZmVyLCBzaXplX3QgdmFsdWVTaXplKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0
ZUtleUdlbmVyYXRvcihjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9i
amVjdFN0b3JlSWQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wgY2hlY2tDdXJyZW50KSA9
IDA7CisKKwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFz
ZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
SW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5jcHAK
aW5kZXggOWRjODJiNi4uN2EyZjkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVT
UUxpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIv
c3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUlEQlRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRh
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
UUxpdGVEYXRhYmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAj
aW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTg5LDYgKzkwLDEyIEBAIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhPiBVbmlxdWVJREJEYXRhYmFzZUJhY2tp
bmdTdG9yZVNRTGl0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorICAgIGlmICgh
bV9zcWxpdGVEQi0+ZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBSZWNvcmRzIChvYmplY3RT
dG9yZUlEIElOVEVHRVIgTk9UIE5VTEwgT04gQ09ORkxJQ1QgRkFJTCwga2V5IEJMT0IgTk9UIE5V
TEwgT04gQ09ORkxJQ1QgRkFJTCBVTklRVUUgT04gQ09ORkxJQ1QgUkVQTEFDRSwgdmFsdWUgQkxP
QiBOT1QgTlVMTCBPTiBDT05GTElDVCBGQUlMKTsiKSkgeworICAgICAgICBMT0dfRVJST1IoIkNv
dWxkIG5vdCBjcmVhdGUgUmVjb3JkcyB0YWJsZSBpbiBkYXRhYmFzZSAoJWkpIC0gJXMiLCBtX3Nx
bGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpOworICAgICAg
ICBtX3NxbGl0ZURCID0gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CiAgICAgewogICAgICAgICBTUUxpdGVTdGF0ZW1lbnQgc3FsKCptX3NxbGl0ZURCLCBBU0NJSUxp
dGVyYWwoIklOU0VSVCBJTlRPIElEQkRhdGFiYXNlSW5mbyBWQUxVRVMgKCdNZXRhZGF0YVZlcnNp
b24nLCA/KTsiKSk7CiAgICAgICAgIGlmIChzcWwucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rCkBA
IC00MTUsNiArNDIyLDYwIEBAIGJvb2wgVW5pcXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxp
dGU6OmRlbGV0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlRyYW5zYWN0aW9uCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK1Bhc3NSZWZQdHI8SURCS2V5PiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9y
ZVNRTGl0ZTo6Z2VuZXJhdGVLZXkoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50
NjRfdCBvYmplY3RTdG9yZUlEKQoreworICAgIC8vIEZJWE1FICg8cmRhcjovL3Byb2JsZW0vMTU4
Nzc5MDk+KTogSW1wbGVtZW50CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2Jvb2wgVW5pcXVl
SURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OmtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29u
c3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgaW50NjRfdCBvYmplY3RTdG9yZUlELCBjb25z
dCBJREJLZXkmLCBib29sJiBrZXlFeGlzdHMpCit7CisgICAgLy8gRklYTUU6IFdoZW4gR2V0IHN1
cHBvcnQgaXMgaW1wbGVtZW50ZWQsIHdlIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgYWxzbyAoPHJk
YXI6Ly9wcm9ibGVtLzE1Nzc5NjQ0PikKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGU6OnB1dFJlY29yZChjb25zdCBJREJUcmFu
c2FjdGlvbklkZW50aWZpZXImIGlkZW50aWZpZXIsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgY29u
c3QgSURCS2V5JiBrZXksIGNvbnN0IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXplX3QgdmFsdWVT
aXplKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3NxbGl0
ZURCKTsKKyAgICBBU1NFUlQobV9zcWxpdGVEQi0+aXNPcGVuKCkpOworCisgICAgU1FMaXRlSURC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KGlkZW50aWZpZXIp
OworICAgIGlmICghdHJhbnNhY3Rpb24gfHwgIXRyYW5zYWN0aW9uLT5pblByb2dyZXNzKCkpIHsK
KyAgICAgICAgTE9HX0VSUk9SKCJBdHRlbXB0IHRvIHB1dCBhIHJlY29yZCBpbnRvIGRhdGFiYXNl
IHdpdGhvdXQgYW4gZXN0YWJsaXNoZWQsIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uIik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKHRyYW5zYWN0aW9uLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGU6OlJlYWRPbmx5KSB7CisgICAgICAgIExPR19FUlJP
UigiQXR0ZW1wdCB0byBwdXQgYSByZWNvcmQgaW50byBkYXRhYmFzZSBkdXJpbmcgcmVhZC1vbmx5
IHRyYW5zYWN0aW9uIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBrZXlCdWZmZXIgPSBzZXJpYWxpemVJREJLZXkoa2V5KTsKKyAgICBp
ZiAoIWtleUJ1ZmZlcikgeworICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBzZXJpYWxpemUg
SURCS2V5IHRvIGJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UiKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKyAgICB7CisgICAgICAgIFNRTGl0ZVN0YXRlbWVudCBzcWwoKm1fc3FsaXRl
REIsIEFTQ0lJTGl0ZXJhbCgiSU5TRVJUIElOVE8gUmVjb3JkcyBWQUxVRVMgKD8sID8sID8pOyIp
KTsKKyAgICAgICAgaWYgKHNxbC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2sKKyAgICAgICAgICAg
IHx8IHNxbC5iaW5kSW50NjQoMSwgb2JqZWN0U3RvcmVJRCkgIT0gU1FMUmVzdWx0T2sKKyAgICAg
ICAgICAgIHx8IHNxbC5iaW5kQmxvYigyLCBrZXlCdWZmZXItPmRhdGEoKSwga2V5QnVmZmVyLT5z
aXplKCkpICE9IFNRTFJlc3VsdE9rCisgICAgICAgICAgICB8fCBzcWwuYmluZEJsb2IoMywgdmFs
dWVCdWZmZXIsIHZhbHVlU2l6ZSkgIT0gU1FMUmVzdWx0T2sKKyAgICAgICAgICAgIHx8IHNxbC5z
dGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBu
b3QgcHV0IHJlY29yZCBmb3Igb2JqZWN0IHN0b3JlICVsbGkgaW4gUmVjb3JkcyB0YWJsZSAoJWkp
IC0gJXMiLCBvYmplY3RTdG9yZUlELCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgbV9zcWxpdGVE
Qi0+bGFzdEVycm9yTXNnKCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVW5pcXVlSURCRGF0YWJhc2VC
YWNraW5nU3RvcmVTUUxpdGU6OnVwZGF0ZUtleUdlbmVyYXRvcihjb25zdCBJREJUcmFuc2FjdGlv
bklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleSYsIGJvb2wg
Y2hlY2tDdXJyZW50KQoreworICAgIC8vIEZJWE1FICg8cmRhcjovL3Byb2JsZW0vMTU4Nzc5MDk+
KTogSW1wbGVtZW50CisgICAgcmV0dXJuIGZhbHNlOworfQorCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhl
ZERCL3NxbGl0ZS9VbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9zcWxpdGUvVW5pcXVlSURCRGF0YWJh
c2VCYWNraW5nU3RvcmVTUUxpdGUuaAppbmRleCA4OTFjOThkLi42NDUwM2I1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvSW5kZXhlZERCL3NxbGl0ZS9VbmlxdWVJ
REJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFi
YXNlUHJvY2Vzcy9JbmRleGVkREIvc3FsaXRlL1VuaXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3Jl
U1FMaXRlLmgKQEAgLTY0LDYgKzY0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY3Jl
YXRlT2JqZWN0U3RvcmUoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVyJiwgY29uc3QgV2Vi
Q29yZTo6SURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQktleT4gZ2VuZXJhdGVLZXkoY29uc3QgSURCVHJhbnNhY3Rpb25JZGVudGlmaWVy
JiwgaW50NjRfdCBvYmplY3RTdG9yZUlEKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wga2V5
RXhpc3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJUcmFuc2FjdGlvbklkZW50aWZpZXImLCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleSYsIGJvb2wmIGtleUV4aXN0
cykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIHB1dFJlY29yZChjb25zdCBJREJUcmFuc2Fj
dGlvbklkZW50aWZpZXImLCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklE
QktleSYsIGNvbnN0IHVpbnQ4X3QqIHZhbHVlQnVmZmVyLCBzaXplX3QgdmFsdWVTaXplKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlS2V5R2VuZXJhdG9yKGNvbnN0IElEQlRyYW5z
YWN0aW9uSWRlbnRpZmllciYsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgV2ViQ29yZTo6
SURCS2V5JiwgYm9vbCBjaGVja0N1cnJlbnQpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIFVu
aXF1ZUlEQkRhdGFiYXNlQmFja2luZ1N0b3JlU1FMaXRlKGNvbnN0IFVuaXF1ZUlEQkRhdGFiYXNl
SWRlbnRpZmllciYsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0Mi9TY3JpcHRzL3dlYmtpdDIvbWVzc2FnZXMucHkKaW5kZXggZWQ0MDVmZC4uMmQ2NDc2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2NyaXB0cy93ZWJraXQyL21lc3NhZ2VzLnB5
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0Mi9tZXNzYWdlcy5weQpAQCAtMTc3
LDYgKzE3Nyw3IEBAIGRlZiBzdHJ1Y3Rfb3JfY2xhc3MobmFtZXNwYWNlLCB0eXBlKToKICAgICAg
ICAgJ1dlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGluZ3MnLAogICAgICAgICAnV2ViQ29yZTo6R3Jh
bW1hckRldGFpbCcsCiAgICAgICAgICdXZWJDb3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhJywKKyAg
ICAgICAgJ1dlYkNvcmU6OklEQktleURhdGEnLAogICAgICAgICAnV2ViQ29yZTo6SURCT2JqZWN0
U3RvcmVNZXRhZGF0YScsCiAgICAgICAgICdXZWJDb3JlOjpJZGVudGl0eVRyYW5zZm9ybU9wZXJh
dGlvbicsCiAgICAgICAgICdXZWJDb3JlOjpLZXlwcmVzc0NvbW1hbmQnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FzeW5jVGFzay5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L0FzeW5jVGFzay5oCmluZGV4IDE4N2E2M2IuLmJlZGQ4YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9Bc3luY1Rhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQXN5
bmNUYXNrLmgKQEAgLTExNiw2ICsxMTYsNTAgQEAgc3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4g
Y3JlYXRlQXN5bmNUYXNrKAogICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMz46
OmNvcHkocGFyYW1ldGVyMykpOwogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQ
MSwgdHlwZW5hbWUgTVAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgTVAyLCB0eXBlbmFtZSBQMywg
dHlwZW5hbWUgTVAzLCB0eXBlbmFtZSBQNCwgdHlwZW5hbWUgTVA0Pgorc3RkOjp1bmlxdWVfcHRy
PEFzeW5jVGFzaz4gY3JlYXRlQXN5bmNUYXNrKAorICAgIFQmIGNhbGxlZSwKKyAgICB2b2lkIChU
OjoqbWV0aG9kKShNUDEsIE1QMiwgTVAzLCBNUDQpLAorICAgIGNvbnN0IFAxJiBwYXJhbWV0ZXIx
LAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNvbnN0IFAzJiBwYXJhbWV0ZXIzLAor
ICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0KQoreworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEFzeW5jVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0Pj4oCisgICAgICAgICZjYWxsZWUs
CisgICAgICAgIG1ldGhvZCwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDE+
Ojpjb3B5KHBhcmFtZXRlcjEpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQ
Mj46OmNvcHkocGFyYW1ldGVyMiksCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVy
PFAzPjo6Y29weShwYXJhbWV0ZXIzKSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8UDQ+Ojpjb3B5KHBhcmFtZXRlcjQpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgUDEsIHR5cGVuYW1lIE1QMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIE1QMiwgdHlwZW5h
bWUgUDMsIHR5cGVuYW1lIE1QMywgdHlwZW5hbWUgUDQsIHR5cGVuYW1lIE1QNCwgdHlwZW5hbWUg
UDUsIHR5cGVuYW1lIE1QNSwgdHlwZW5hbWUgUDYsIHR5cGVuYW1lIE1QNiwgdHlwZW5hbWUgUDcs
IHR5cGVuYW1lIE1QNywgdHlwZW5hbWUgUDgsIHR5cGVuYW1lIE1QOD4KK3N0ZDo6dW5pcXVlX3B0
cjxBc3luY1Rhc2s+IGNyZWF0ZUFzeW5jVGFzaygKKyAgICBUJiBjYWxsZWUsCisgICAgdm9pZCAo
VDo6Km1ldGhvZCkoTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUsIE1QNiwgTVA3LCBNUDgpLAorICAg
IGNvbnN0IFAxJiBwYXJhbWV0ZXIxLAorICAgIGNvbnN0IFAyJiBwYXJhbWV0ZXIyLAorICAgIGNv
bnN0IFAzJiBwYXJhbWV0ZXIzLAorICAgIGNvbnN0IFA0JiBwYXJhbWV0ZXI0LAorICAgIGNvbnN0
IFA1JiBwYXJhbWV0ZXI1LAorICAgIGNvbnN0IFA2JiBwYXJhbWV0ZXI2LAorICAgIGNvbnN0IFA3
JiBwYXJhbWV0ZXI3LAorICAgIGNvbnN0IFA4JiBwYXJhbWV0ZXI4KQoreworICAgIHJldHVybiBz
dGQ6Om1ha2VfdW5pcXVlPEFzeW5jVGFza0ltcGw8VCwgTVAxLCBNUDIsIE1QMywgTVA0LCBNUDUs
IE1QNiwgTVA3LCBNUDg+PigKKyAgICAgICAgJmNhbGxlZSwKKyAgICAgICAgbWV0aG9kLAorICAg
ICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQMT46OmNvcHkocGFyYW1ldGVyMSksCisg
ICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFAyPjo6Y29weShwYXJhbWV0ZXIyKSwK
KyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDM+Ojpjb3B5KHBhcmFtZXRlcjMp
LAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQND46OmNvcHkocGFyYW1ldGVy
NCksCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA1Pjo6Y29weShwYXJhbWV0
ZXI1KSwKKyAgICAgICAgV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3BpZXI8UDY+Ojpjb3B5KHBhcmFt
ZXRlcjYpLAorICAgICAgICBXZWJDb3JlOjpDcm9zc1RocmVhZENvcGllcjxQNz46OmNvcHkocGFy
YW1ldGVyNyksCisgICAgICAgIFdlYkNvcmU6OkNyb3NzVGhyZWFkQ29waWVyPFA4Pjo6Y29weShw
YXJhbWV0ZXI4KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gQXN5
bmNUYXNrX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKaW5kZXggZDRkNWY4OC4uNmZiZjg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NM
YXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCRGF0YWJhc2VNZXRhZGF0YS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5UGF0aC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSW1hZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aC5o
PgpAQCAtMTYyMiw2ICsxNjIzLDY4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxJREJJbmRleE1ldGFk
YXRhPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSURCSW5kZXhNCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3ZvaWQgQXJndW1lbnRDb2RlcjxJREJLZXlEYXRhPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSkKK3sKKyAg
ICBlbmNvZGVyIDw8IGtleURhdGEuaXNOdWxsOworICAgIGlmIChrZXlEYXRhLmlzTnVsbCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGtleURhdGEudHlwZSk7CisK
KyAgICBzd2l0Y2ggKGtleURhdGEudHlwZSkgeworICAgIGNhc2UgSURCS2V5OjpJbnZhbGlkVHlw
ZToKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6OkFycmF5VHlwZToKKyAgICAgICAg
ZW5jb2RlciA8PCBrZXlEYXRhLmFycmF5VmFsdWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
SURCS2V5OjpTdHJpbmdUeXBlOgorICAgICAgICBlbmNvZGVyIDw8IGtleURhdGEuc3RyaW5nVmFs
dWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKKyAgICBjYXNl
IElEQktleTo6TnVtYmVyVHlwZToKKyAgICAgICAgZW5jb2RlciA8PCBrZXlEYXRhLm51bWJlclZh
bHVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIElEQktleTo6TWluVHlwZToKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBB
cmd1bWVudENvZGVyPElEQktleURhdGE+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZGVy
LCBJREJLZXlEYXRhJiBrZXlEYXRhKQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5RGF0
YS5pc051bGwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoa2V5RGF0YS5pc051
bGwpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0o
a2V5RGF0YS50eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChrZXlE
YXRhLnR5cGUpIHsKKyAgICBjYXNlIElEQktleTo6SW52YWxpZFR5cGU6CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgSURCS2V5OjpBcnJheVR5cGU6CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoa2V5RGF0YS5hcnJheVZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBJREJLZXk6OlN0cmluZ1R5cGU6CisgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoa2V5RGF0YS5zdHJpbmdWYWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgSURCS2V5OjpEYXRlVHlwZToKKyAgICBjYXNl
IElEQktleTo6TnVtYmVyVHlwZToKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShrZXlEYXRh
Lm51bWJlclZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
IHZvaWQgQXJndW1lbnRDb2RlcjxJREJLZXlQYXRoPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYg
ZW5jb2RlciwgY29uc3QgSURCS2V5UGF0aCYga2V5UGF0aCkKIHsKICAgICBlbmNvZGVyLmVuY29k
ZUVudW0oa2V5UGF0aC50eXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oCmluZGV4IDhlZjkwNTMuLjU3M2YyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTY2LDYgKzY2LDcgQEAgc3Ry
dWN0IERyYWdTZXNzaW9uOwogc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CiBzdHJ1Y3QgSURC
RGF0YWJhc2VNZXRhZGF0YTsKIHN0cnVjdCBJREJJbmRleE1ldGFkYXRhOworc3RydWN0IElEQktl
eURhdGE7CiBzdHJ1Y3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YTsKIHN0cnVjdCBMZW5ndGg7CiBz
dHJ1Y3QgR3JhbW1hckRldGFpbDsKQEAgLTM2NCw2ICszNjUsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJREJJbmRleE1ldGFkYXRhPiB7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OklEQkluZGV4TWV0YWRhdGEm
KTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6SURCS2V5
RGF0YT4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBX
ZWJDb3JlOjpJREJLZXlEYXRhJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYsIFdlYkNvcmU6OklEQktleURhdGEmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6SURCS2V5UGF0aD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29k
ZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJREJLZXlQYXRoJik7CiAgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OklEQktleVBhdGgmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDcm9zc1RocmVhZENvcGllci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ3Jvc3NUaHJlYWRDb3BpZXIuY3BwCmluZGV4
IDVjMzNjMjguLmM3YjA2NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
cm9zc1RocmVhZENvcGllci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3Nz
VGhyZWFkQ29waWVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSURCVHJhbnNh
Y3Rpb25JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiVW5pcXVlSURCRGF0YWJhc2VJZGVudGlmaWVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKQEAgLTUxLDYgKzUyLDMxIEBAIFZlY3RvcjxpbnQ2NF90PiBDcm9zc1RocmVhZENv
cGllckJhc2U8ZmFsc2UsIGZhbHNlLCBWZWN0b3I8aW50NjRfdD4+Ojpjb3B5KGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAorVmVjdG9yPHVpbnQ4X3Q+IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIFZlY3Rvcjx1aW50OF90Pj46OmNvcHkoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiB2ZWN0b3IpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICByZXN1bHQu
YXBwZW5kVmVjdG9yKHZlY3Rvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVmVjdG9yPFZl
Y3RvcjxJREJLZXlEYXRhPj4gQ3Jvc3NUaHJlYWRDb3BpZXJCYXNlPGZhbHNlLCBmYWxzZSwgVmVj
dG9yPFZlY3RvcjxJREJLZXlEYXRhPj4+Ojpjb3B5KGNvbnN0IFZlY3RvcjxWZWN0b3I8SURCS2V5
RGF0YT4+JiB2ZWN0b3IpCit7CisgICAgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4gcmVzdWx0
OworCisgICAgZm9yIChhdXRvIGtleXMgOiB2ZWN0b3IpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVu
ZChWZWN0b3I8SURCS2V5RGF0YT4oKSk7CisgICAgICAgIGZvciAoYXV0byBrZXkgOiBrZXlzKQor
ICAgICAgICAgICAgcmVzdWx0Lmxhc3QoKS5hcHBlbmQoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRDb3Bp
ZXI8SURCS2V5RGF0YT46OmNvcHkoa2V5KSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworQVNDSUlMaXRlcmFsIENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIEFT
Q0lJTGl0ZXJhbD46OmNvcHkoY29uc3QgQVNDSUlMaXRlcmFsJiBsaXRlcmFsKQoreworICAgIHJl
dHVybiBsaXRlcmFsOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDcm9zc1RocmVhZENvcGllci5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNyb3Nz
VGhyZWFkQ29waWVyLmgKaW5kZXggYjEyMDM4Zi4uYTVkMGM1OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNyb3NzVGhyZWFkQ29waWVyLmgKQEAgLTM2LDYgKzM2LDEwIEBAIGNsYXNz
IElEQlRyYW5zYWN0aW9uSWRlbnRpZmllcjsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlSWRlbnRp
ZmllcjsKIH0KIAorbmFtZXNwYWNlIFdURiB7CitjbGFzcyBBU0NJSUxpdGVyYWw7Cit9CisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ3Jvc3NUaHJlYWRDb3BpZXJC
YXNlPGZhbHNlLCBmYWxzZSwgV2ViS2l0OjpVbmlxdWVJREJEYXRhYmFzZUlkZW50aWZpZXI+IHsK
QEAgLTUwLDYgKzU0LDE4IEBAIHRlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFz
ZTxmYWxzZSwgZmFsc2UsIFZlY3RvcjxpbnQ2NF90Pj4gewogICAgIHN0YXRpYyBWZWN0b3I8aW50
NjRfdD4gY29weShjb25zdCBWZWN0b3I8aW50NjRfdD4mKTsKIH07CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwgZmFsc2UsIFZlY3Rvcjx1aW50OF90Pj4g
eworICAgIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY29weShjb25zdCBWZWN0b3I8dWludDhfdD4m
KTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwg
ZmFsc2UsIFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+PiB7CisgICAgc3RhdGljIFZlY3RvcjxW
ZWN0b3I8SURCS2V5RGF0YT4+IGNvcHkoY29uc3QgVmVjdG9yPFZlY3RvcjxJREJLZXlEYXRhPj4m
KTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IENyb3NzVGhyZWFkQ29waWVyQmFzZTxmYWxzZSwg
ZmFsc2UsIFdURjo6QVNDSUlMaXRlcmFsPiB7CisgICAgc3RhdGljIFdURjo6QVNDSUlMaXRlcmFs
IGNvcHkoY29uc3QgV1RGOjpBU0NJSUxpdGVyYWwmKTsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5k
ZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDFhMmY1M2YuLjAwMDE0MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWRE
Qi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTMw
LDYgKzMwLDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgRU5BQkxFKERBVEFC
QVNFX1BST0NFU1MpCiAKICNpbmNsdWRlICJBc3luY1JlcXVlc3QuaCIKKyNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0zMDAsOCArMzAxLDQ1IEBAIHZvaWQgV2ViSURC
U2VydmVyQ29ubmVjdGlvbjo6Z2V0KElEQlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IEdldE9w
ZXJhdGlvbiYsIHN0CiB7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6cHV0KElE
QlRyYW5zYWN0aW9uQmFja2VuZCYsIGNvbnN0IFB1dE9wZXJhdGlvbiYsIHN0ZDo6ZnVuY3Rpb248
dm9pZChQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBj
b21wbGV0aW9uQ2FsbGJhY2spCit2b2lkIFdlYklEQlNlcnZlckNvbm5lY3Rpb246OnB1dChJREJU
cmFuc2FjdGlvbkJhY2tlbmQmIHRyYW5zYWN0aW9uLCBjb25zdCBQdXRPcGVyYXRpb24mIG9wZXJh
dGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkKFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPik+IGNvbXBsZXRpb25DYWxsYmFjaykKIHsKKyAgICBSZWZQdHI8QXN5
bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gQXN5bmNSZXF1ZXN0SW1wbDxQYXNzUmVmUHRyPElE
QktleT4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4+OjpjcmVhdGUoY29tcGxldGlvbkNh
bGxiYWNrKTsKKworICAgIHNlcnZlclJlcXVlc3QtPnNldEFib3J0SGFuZGxlcihbY29tcGxldGlv
bkNhbGxiYWNrXSgpIHsKKyAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKG51bGxwdHIsIElEQkRh
dGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAi
VW5rbm93biBlcnJvciBvY2N1cmVkIHB1dHRpbmcgcmVjb3JkIikpOworICAgIH0pOworCisgICAg
dWludDY0X3QgcmVxdWVzdElEID0gc2VydmVyUmVxdWVzdC0+cmVxdWVzdElEKCk7CisgICAgQVNT
RVJUKCFtX3NlcnZlclJlcXVlc3RzLmNvbnRhaW5zKHJlcXVlc3RJRCkpOworICAgIG1fc2VydmVy
UmVxdWVzdHMuYWRkKHJlcXVlc3RJRCwgc2VydmVyUmVxdWVzdC5yZWxlYXNlKCkpOworCisgICAg
TE9HKElEQiwgIldlYlByb2Nlc3MgcHV0IHJlcXVlc3QgSUQgJWxsdSIsIHJlcXVlc3RJRCk7CisK
KyAgICBBU1NFUlQob3BlcmF0aW9uLmtleSgpKTsKKyAgICBBU1NFUlQob3BlcmF0aW9uLnZhbHVl
KCkpOworCisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIHZhbHVlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KG9wZXJhdGlvbi52YWx1ZSgpLT5kYXRhKCkpLCBvcGVyYXRpb24udmFsdWUo
KS0+c2l6ZSgpKTsKKworICAgIFZlY3RvcjxWZWN0b3I8SURCS2V5RGF0YT4+IGluZGV4S2V5czsK
KyAgICBmb3IgKGF1dG8ga2V5cyA6IG9wZXJhdGlvbi5pbmRleEtleXMoKSkgeworICAgICAgICBp
bmRleEtleXMuYXBwZW5kKFZlY3RvcjxJREJLZXlEYXRhPigpKTsKKyAgICAgICAgZm9yIChhdXRv
IGtleSA6IGtleXMpCisgICAgICAgICAgICBpbmRleEtleXMubGFzdCgpLmFwcGVuZChJREJLZXlE
YXRhKGtleS5nZXQoKSkpOworICAgIH0KKworICAgIHNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb246OlB1dFJlY29yZChyZXF1ZXN0SUQsIHRyYW5zYWN0aW9uLmlkKCks
IG9wZXJhdGlvbi5vYmplY3RTdG9yZSgpLmlkLCBJREJLZXlEYXRhKG9wZXJhdGlvbi5rZXkoKSks
IHZhbHVlLCBvcGVyYXRpb24ucHV0TW9kZSgpLCBvcGVyYXRpb24uaW5kZXhJRHMoKSwgaW5kZXhL
ZXlzKSk7Cit9CisKK3ZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6ZGlkUHV0UmVjb3JkKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYgcmVzdWx0S2V5LCB1
aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIExP
RyhJREIsICJXZWJQcm9jZXNzIGRpZFB1dFJlY29yZCByZXF1ZXN0IElEICVsbHUgKGVycm9yIC0g
JXMpIiwgcmVxdWVzdElELCBlcnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisKKyAgICBSZWZQ
dHI8QXN5bmNSZXF1ZXN0PiBzZXJ2ZXJSZXF1ZXN0ID0gbV9zZXJ2ZXJSZXF1ZXN0cy50YWtlKHJl
cXVlc3RJRCk7CisKKyAgICBpZiAoIXNlcnZlclJlcXVlc3QpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHNlcnZlclJlcXVlc3QtPmNvbXBsZXRlUmVxdWVzdChyZXN1bHRLZXkuaXNOdWxsID8gbnVs
bHB0ciA6IHJlc3VsdEtleS5tYXliZUNyZWF0ZUlEQktleSgpLCBlcnJvckNvZGUgPyBJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpIDogbnVsbHB0cik7CiB9
CiAKIHZvaWQgV2ViSURCU2VydmVyQ29ubmVjdGlvbjo6b3BlbkN1cnNvcihJREJUcmFuc2FjdGlv
bkJhY2tlbmQmLCBjb25zdCBPcGVuQ3Vyc29yT3BlcmF0aW9uJiwgc3RkOjpmdW5jdGlvbjx2b2lk
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pPiBjb21wbGV0aW9uQ2FsbGJhY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9EYXRhYmFz
ZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24uaAppbmRleCAzNTRlYzU1Li42Njc2
OTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRl
eGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRGF0YWJhc2VzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTMz
LDYgKzMzLDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JREJEYXRhYmFzZU1ldGFkYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXJDb25uZWN0aW9uLmg+CiAKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK3N0cnVjdCBJREJLZXlEYXRhOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgQXN5bmNSZXF1ZXN0OwpAQCAtMTAyLDYgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBib29sIHN1Y2Nlc3Mp
OwogICAgIHZvaWQgZGlkQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBib29s
IHN1Y2Nlc3MpOwogICAgIHZvaWQgZGlkRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVz
dElELCBib29sIHN1Y2Nlc3MpOworICAgIHZvaWQgZGlkUHV0UmVjb3JkKHVpbnQ2NF90IHJlcXVl
c3RJRCwgY29uc3QgV2ViQ29yZTo6SURCS2V5RGF0YSYsIHVpbnQzMl90IGVycm9yQ29kZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwogCiAgICAgdWludDY0X3QgbV9zZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQlNlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVy
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBlMmEwZDUwLi5iMGJhMTA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpA
QCAtMzQsNiArMzQsNyBAQCBtZXNzYWdlcyAtPiBXZWJJREJTZXJ2ZXJDb25uZWN0aW9uIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBEaWRDaGFuZ2VEYXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVz
dElELCBib29sIHN1Y2Nlc3MpCiAgICAgRGlkQ3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVx
dWVzdElELCBib29sIHN1Y2Nlc3MpCiAgICAgRGlkRGVsZXRlT2JqZWN0U3RvcmUodWludDY0X3Qg
cmVxdWVzdElELCBib29sIHN1Y2Nlc3MpCisgICAgRGlkUHV0UmVjb3JkKHVpbnQ2NF90IHJlcXVl
c3RJRCwgV2ViQ29yZTo6SURCS2V5RGF0YSByZXN1bHRLZXksIHVpbnQzMl90IGVycm9yQ29kZSwg
U3RyaW5nIGVycm9yTWVzc2FnZSkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKSAmJiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykK
</data>

          </attachment>
      

    </bug>

</bugzilla>